Deutsch   English   Français   Italiano  
<vnqsmv$174h6$2@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder9.news.weretis.net!news.quux.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: Eric Brunel <eric.brunel@pragmadev.com>
Newsgroups: comp.lang.tcl
Subject: Re: Treeview item indicators in image-based themes vs Tk 9
Date: Mon, 3 Feb 2025 17:00:16 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 72
Message-ID: <vnqsmv$174h6$2@dont-email.me>
References: <vnq5d7$174h6$1@dont-email.me> <vnq6en$15eqg$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Date: Mon, 03 Feb 2025 18:00:16 +0100 (CET)
Injection-Info: dont-email.me; posting-host="1066a817d2f9b5bbec517323be4cc8f9";
	logging-data="1282598"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1859qRhUWiibx6PKSONfGI0nZYbFCafgQE="
User-Agent: Pan/0.146 (Hic habitat felicitas; 8107378
 git@gitlab.gnome.org:GNOME/pan.git)
Cancel-Lock: sha1:awrQUjfFqZXicVBInQg5/3vSCsk=
Bytes: 3583

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