Re: Treeview item indicators in image-based themes vs Tk 9

Liste des GroupesRevenir à cl tcl 
Sujet : Re: Treeview item indicators in image-based themes vs Tk 9
De : eric.brunel (at) *nospam* pragmadev.com (Eric Brunel)
Groupes : comp.lang.tcl
Date : 03. Feb 2025, 18:00:16
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vnqsmv$174h6$2@dont-email.me>
References : 1 2
User-Agent : Pan/0.146 (Hic habitat felicitas; 8107378 git@gitlab.gnome.org:GNOME/pan.git)
On Mon, 3 Feb 2025 11:40:23 +0100, Harald Oehlmann wrote:

Am 03.02.2025 um 11:22 schrieb Eric Brunel:
Hello all,
 
I've recently switched to tcl/tk 9.0 and I discovered what seems to be
an issue with image-based themes having an image for the treeview item
open/ close indicators.
 
In tcl/tk 8.6, the styling for these indicators are usually done via
something like this:
 
ttk::style element create Treeitem.indicator \
               image [list $image_for_closed \
                   user1 $image_for_open \
                   user2 $image_for_no_children \
               ] ...
 
But this doesn't seem to work in tk 9: now all items have an indicator
showing the image_for_closed whether they have children or not, and
whether the item is opened or not.
 
I suspect a change in the names for the states "user1" and "user2" -
which were admittedly not very user-friendly - but I just can't find
any reference for these, and by what I should replace them in tk 9 if
that's indeed the problem.
 
Any pointers would be greatly appreciated.
 
Thanks!
  -- Eric
 
Thanks, Eric,
I lightly remeber some discussion on this by Csaba, when those images
passed to svg format with Tk 9.
It would be worthwile to post this as tk bug, as the migration notes
dont mention this:
https://core.tcl-lang.org/tk/wiki?name=Migrating+scripts+to+Tk+9&p
 

Thanks,
Harald


Thanks Harald. I did post this as a tk bug.

I've also dived a little into the source code, and I think I found out the
culprit: in generic/ttk/ttkThemeInt.h, there is a set of #define
directives that go:

#define TTK_STATE_OPEN (1<<16)
#define TTK_STATE_LEAF (1<<17)
#define TTK_STATE_FIRST (1<<18)
#define TTK_STATE_LAST (1<<19)

while in generic/ttk/ttkTheme.h, the constants for the states that are
accessible for styling only go up to (1<<15) for TTK_STATE_USER1. So it
seems the states the represent the 'open' and 'leaf' states for treeview
items can no more be used in styles, which is a bit of a shame.

But if I replace the first two defines in ttkThemeInt.h with:

#define TTK_STATE_OPEN TTK_STATE_USER1
#define TTK_STATE_LEAF TTK_STATE_USER2

I can get the old behavior back, and the image-based styles work as they
used to. So I'm going to keep it that way for now. I hope it won't cause
any weird side effect.

Thanks again!
--
 Eric

Date Sujet#  Auteur
3 Feb 25 * Treeview item indicators in image-based themes vs Tk 97Eric Brunel
3 Feb 25 +* Re: Treeview item indicators in image-based themes vs Tk 92Harald Oehlmann
3 Feb 25 i`- Re: Treeview item indicators in image-based themes vs Tk 91Eric Brunel
3 Feb 25 `* Re: Treeview item indicators in image-based themes vs Tk 94Francois Vogel
4 Feb 25  `* Re: Treeview item indicators in image-based themes vs Tk 93Eric Brunel
4 Feb 25   `* Re: Treeview item indicators in image-based themes vs Tk 92Harald Oehlmann
4 Feb 25    `- Re: Treeview item indicators in image-based themes vs Tk 91Paul Obermeier

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal