[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Cross Platform GNUStep GUI with Native Look-And-Feel

From: Richard Frith-Macdonald
Subject: Re: Cross Platform GNUStep GUI with Native Look-And-Feel
Date: Mon, 27 Jun 2011 09:27:37 +0100

On 27 Jun 2011, at 08:57, Riccardo Mottola wrote:

> Hi,
> On 06/27/11 03:01, Gregory Casamento wrote:
>> Riccardo,
>> 1) Cleanly switching from theme to theme when in-window menus are involved.
> Yes, this is especially noticeable when native in-windows menus are used, but 
> that goes along with 3)
>> 2) Unloading theme images between themes.  When theme A loaded if
>> theme B doesn't  have images for some of the widgets then theme A's
>> images are used instead of the default theme's images as may have been
>> intended.
> Afaik, unloading was implemented by Richard, but somehow it doesn't work 
> (anymore).

Yes ... eighteen months ago IIRC, but there have probably been a lot of changes 
in theming that I haven't been involved with since then...
The basic principle was simple.
When you load a theme, all the images for that theme are installed.
When you unload a theme, all the images for the default theme are installed 
(which means all system images)
When you change themes, you have a sequence of unloading the old theme (which 
cleans out its images) and loading the new.

Now, it's possible to have glitches with this caused by code outside the 
theming system ... if code makes a *copy* of a system image (rather than 
retaining it), and caches and re-uses that copy.  There may be some such bugs 
in odd apps or even odd places in the gui library.  If so, they should either:

1. not copy the system images, just use them as required .... the best option 
unless we *know* there is a performance issue.
2. where they must do something like keeping a scaled or otherwise modified 
copy of a system image for performance, they should have the code observe theme 
loading notifications and regenerate their cache when a new theme is loaded ... 
this is a general principle of theme aware software, without which no theming 
system can work properly.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]