Icon theme changes in GTK+



GTK+ 3.13.3 will include a number of changes to the icon theme
handling code. The overarching goal is to simplify the icon handling,
and make it possible to use it for theme assets like checkboxes,
expander arrows, etc. The main changes that may affect applications
are:

1) Icons will be automatically looked up in rtl variants. We append a
-rtl suffix to the icon name for this. In particular, rtl variants of
symbolic icons are named icon-name-symbolic-rtl.

2) We respect the MinSize and MaxSize limits from icon theme
directories when loading scalable icons, and we don't scale icons from
Threshold of Fixed type directories. Previously, we were ignoring the
directory types and limits and always scaling icons (in particular
svgs) to the requested size. The previous behaviour is still
available, by specifying the GTK_ICON_LOOKUP_FORCE_SIZE flag when
looking up the icon.

3) Functions related to .icon files have been deprecated. This
functionality was only used in nautilus, long ago.

4) Symbolic icons are loaded at the same size that their non-symbolic
counterparts would be. When loading them, we assume that their
original size matches the nominal size of the theme directory we load
them from.

In particular the last change has the potential to cause some problems
for applications that are not careful with the symbolic icons they
install. Symptoms that have been observed so far include

1) Giant icons: In the case that I've seen (geary), this was caused by
installing symbolic icons into the base directory that is added to the
icon theme search path (ie /usr/share/geary/icons).

Recommended fix: Install the icons into a proper subdirectory (ie
/usr/share/geary/icons/Adwaita/scalable/actions).

2) Tiny icons: In the case that I've seen (baobab), this was caused by
installing symbolic svgs of size 16 into the scalable/actions
directory of hicolor, which has a nominal size of 128.

Recommended fix: Ensure that icons (in particular symbolic icons)
match the nominal size of the theme directory they are installed into.


Matthias


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