This is a subclass of GEmblemedIcon that can show a number or
short string as an emblem, overlayed on top of another emblem.
Written by Cosimo Cecchi
https://bugzilla.gnome.org/show_bug.cgi?id=637169
If the style didn't include symbolic colors for either success,
warning or error, gtk_icon_info_load_symbolic_for_style() would crash.
Instead, make sure we don't try to use the colors if they're not
available, and fallback on default colors inside
_gtk_icon_info_load_symbolic_internal().
Add gtk_icon_info_load_symbolic() to load symbolic icons, and
theme their background/foreground colours to match the
colours used in the theme.
Adds the gtk_icon_info_load_symbolic() function, explicit
support in GtkImage and GtkCellRendererPixbuf, and test cases
for those 2 widgets.
With help from Bastien Nocera <hadess@hadess.net>
https://bugzilla.gnome.org/show_bug.cgi?id=614711
This commit was created using a script that searched for all docstrings
containing a parameter and the string 'or %NULL'.
Gdk backends and demos excluded as they are not part of a public API
https://bugzilla.gnome.org/show_bug.cgi?id=610474
The Gtk-custom.c file in gir-repository contained a number of
introspection annotations. Merge those into the GTK source files.
Some documentation was moved from the tmpl/ files to accomodate
the addition of annotations.
2009-01-22 Michael Natterer <mitch@imendio.com>
* gtk/gtkicontheme.c (gtk_icon_theme_has_icon): g_return_if_fail()
on icon_name != NULL so we get a warning instead of a crash here.
svn path=/trunk/; revision=22174
2008-10-20 Christian Persch <chpe@gnome.org>
Bug 557059 – crash when compositing emblems with icon
* gtk/gtkicontheme.c: (apply_emblems): Copy the pixbuf before using it
with gtk_pixbuf_composite, in case its pixdata is read-only (mmaped
from icon cache or builtins).
svn path=/trunk/; revision=21690
2008-08-07 Michael Natterer <mitch@imendio.com>
* gtk/gtkicontheme.c (apply_emblems): move variables to local
scopes, fix indentation and silence bogus warning about using
uninitialized variables.
svn path=/trunk/; revision=21031
2008-06-16 Tor Lillqvist <tml@novell.com>
Bug 538362 - Get Win32 icons back in the file chooser
* gtk/gtkicontheme.c (choose_icon): Check if the icon name is a
reference to an icon resource in a DLL or .EXE as in the
Registry. In that case, extract the icon and convert to a
GdkPixbuf. Patch by Hans Breuer.
svn path=/trunk/; revision=20398
2008-05-27 Matthias Clasen <mclasen@redhat.com>
Bug 522084 – GIcon support for GtkIconTheme & GtkImage
* gtk/gtkicontheme.[hc]: Add support for GIcon based lookups.
* gtk/gtkimage.[hc]: Allow setting an image from a GIcon.
* gtk/gtk.symbols: Additions
* tests/testimage.c: Add a GIcon test
svn path=/trunk/; revision=20236
2007-12-03 Matthias Clasen <mclasen@redhat.com>
Two optimizations for icon cache lookups.
* gtk/gtkiconcache.[hc]:
* gtk/gtkicontheme.c: Remember the directory index for
subdirectories, instead of running over the directory list
again and again.
* gtk/gtkiconcache.c (find_image_offset): Remember the last
chain and try it first; this helps with the the usage patterns
in gtkicontheme.c, where the same icon is queried for a lot
of subdirectories.
svn path=/trunk/; revision=19099
* gtk/gtkicontheme.c (choose_icon): Initialize unthemed_icon to NULL
to avoid accessing uninitialized memory when
gtk_icon_theme_choose_icon() is called with an empty names list.
svn path=/trunk/; revision=18018
2007-05-18 Matthias Clasen <mclasen@redhat.com>
* gtk/gtk.symbols:
* gtk/gtkicontheme.h:
* gtk/gtkicontheme.c: Add a function to look up an icon from
a list of icon names. (#396901, Luca Ferretti)
svn path=/trunk/; revision=17868
2007-04-25 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c (theme_lookup_icon): Set the filename to
NULL for builtin icons, sinc gtk_icon_info_get_builtin_pixbuf()
depends on it.
* tests/testicontheme.c: Report builtin icons.
svn path=/trunk/; revision=17638
2007-04-24 Chris Wilson <chris@chris-wilson.co.uk>
* gtk/gtkicontheme.c (scan_directory): Ensure the
icon_theme->all_icons and dir->icons hash tables use the same string
as their keys. (#418531)
svn path=/trunk/; revision=17626
2007-03-21 Rodney Dawes <dobey@novell.com>
* gtk/gtk.symbols:
* gtk/gtkicontheme.[ch]:
* docs/reference/gtk/gtk-sections.txt:
* tests/testicontheme.c:
Add a new API call gtk_icon_theme_list_contexts so that one can
choose icons from a theme by context (#420719)
svn path=/trunk/; revision=17550
2007-03-15 Chris Wilson <chris@chris-wilson.co.uk>
* gtk/gtkicontheme.c (ensure_valid_themes), (rescan_themes),
(gtk_icon_theme_rescan_if_needed): Protect ensure_valid_themes()
from recursion, which can happen for example if the app tries to
reload an icon from within a theme-changed handler. (#418531)
svn path=/trunk/; revision=17523
2007-03-06 Chris Wilson <chris@chris-wilson.co.uk>
* gtk/gtkicontheme.c (update_current_theme), (gtk_icon_theme_init),
(do_theme_change), (gtk_icon_theme_set_custom_theme),
(load_themes):
Be careful not to trigger a style reset before we have loaded
the icon theme. (#414875).
svn path=/trunk/; revision=17404
2007-02-26 Chris Wilson <chris@chris-wilson.co.uk>
Bug 409101 – invalid read to gtkicontheme.c insert_theme(), might cause gnome-panel crash
* gtk/gtkicontheme.c: (scan_directory):
Reorder the replacement of the shared base_name key, so that we
avoid dereferencing the string in the icon_theme->all_icon
hash table after freeing it from the dir->icons hash table.
svn path=/trunk/; revision=17353
2007-01-01 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c (load_themes): Waste less time
with non-directories. (#391725, Chris Wilson)
svn path=/trunk/; revision=17005
2006-08-15 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c (do_theme_change): Run the reset_styles
idle at a priority higher than size negotiation. (#350517,
Søren Sandmann)
2006-07-20 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.h:
* gtk/gtkicontheme.c (_gtk_icon_theme_ensure_builtin_cache):
Export this privately.
* gtk/gtkiconfactory.c (render_fallback_image): And call it
here to initialize the builtin cache before using it. (#348063,
Diego Pettenò)
2006-04-18 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkiconcache.c: Apply a patch by Paolo Borelli to factor
out a strip_suffix() function and save some memory. (#338307)
2006-04-03 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkrecentchooser.c (gtk_recent_chooser_error_quark):
* gtk/gtkrecentmanager.c (gtk_recent_manager_error_quark):
* gtk/gtkfilechooser.c (gtk_file_chooser_error_quark):
* gtk/gtkfilesystem.c (gtk_file_system_error_quark):
* gtk/gtkicontheme.c (gtk_icon_theme_error_quark): No point
in making the error path fast by caching quarks.
2006-03-31 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c (load_icon_data): Don't leak the keyfile
parser in the error case.
* gtk/gtkicontheme.c (load_icon_data, free_unthemed_icon)
(icon_data_free, load_themes):
* gtk/gtkiconcache.c (_gtk_icon_cache_get_icon_data): Use the slice
allocator for GtkIconData and UnthemedIcon structs.
2006-02-12 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c (gtk_icon_theme_list_icons): Give working
examples in the docs. (#330944, John Spray)
2006-01-11 Matthias Clasen <mclasen@redhat.com>
Allow falling back to another icon theme before
hicolor. (#325546, Rodney Dawes)
* gtk/gtksettings.c: Add a gtk-fallback-icon-theme setting.
* gdk/x11/gdkevents-x11.c: Map it to the XSetting Net/FallbackIconTheme.
* gtk/gtkicontheme.c: Consult the fallback icon theme before
looking in hicolor.
2005-12-12 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c (ensure_valid_themes): Only broadcast
_GTK_LOAD_ICONTHEMES if we detect a real theme change, not
upon initial theme load. (#323876, Peter Lund)
2005-11-12 Matthias Clasen <mclasen@redhat.com>
Make builtin icons work in gtk_window_set_icon_name()
(#321046, Maxim Udushlivy)
* gtk/gtkicontheme.c (insert_theme): Always insert the default
theme.
(ensure_valid_themes): Call _gtk_icon_theme_ensure_builtin_cache()
from here.
(theme_lookup_icon, find_builtin_icon): ...and not from here.
(gtk_icon_theme_lookup_icon): Remove an unncessary assert.
(gtk_icon_theme_get_icon_sizes): Also check builtin icons.
2005-11-04 Matthias Clasen <mclasen@redhat.com>
Store builtin stock icons in an icon cache, instead of
populating a hash table with pixbufs at startup, to save both
memory and startup time.
* gtk/stock-icons/*: Reorganize the icons in a directory structure
suitable for gtk-update-icon-cache, and rename them to match the
stock ids.
* gtk/gtkiconcache.[hc]: Support non-mmapped icon caches, and
add _gtk_icon_cache_has_icon_in_directory().
* gtk/updateiconcache.c: Support a --source <VARIABLE> argument
to store the contents of the icon cache in a C header.
* gtk/gtkbuiltincache.h: Generated private header which contains
the icon cache for the builtin icons.
* gtk/gtkicontheme.c: Create a GtkIconCache for the builtin
icons, and use that in addition to the hash table whenever
builtin icons are searched.
* gtk/gtkiconfactory.c: Add GTK_ICON_SOURCE_STATIC_ICON_NAME and
use it for static stock ids.
(get_default_icons): Don't add the builtin
icons to the icon theme, just register the stock ids.
(render_fallback_image): Take the fallback image out of the
builtin icon cache.
* gtk/Makefile.am: Remove stock-icons from SUBDIRS and add
the necessary machinery to rebuild gtkbuiltincache.h.
2005-09-01 Matthias Clasen <mclasen@redhat.com>
* gdk/*.c: Intern some more strings.
* gtk/gtkintl.h:
* gtk/*.c: Define an I_() macro and use it instead of the
bulky g_intern_static_string().
2005-08-31 Matthias Clasen <mclasen@redhat.com>
* gdk/Makefile.am:
* gtk/Makefile.am: Intern type names in code generated by
glib-mkenums, too.
* gtk/*.c:
* gdk/x11/*.c:
* gdk/*.c: Intern type names before registering the type to avoid
unnecessary copies.
2005-08-26 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c (theme_lookup_icon): Avoid an uninitialized
variable warning, pointed out by Colin Walters. (#314585)
2005-08-24 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c (ensure_valid_themes): Don't try to send a client
message if the screen is NULL. Noticed by Kjartan Maraas.
2005-08-22 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkwindow.c (gtk_window_client_event):
* gtk/gtkicontheme.c (ensure_valid_themes)
(_gtk_icon_theme_check_reload): Implement a clientmessage based
scheme for makeing sure that all GTK+ applications notice if an
icon theme has been updated. This should prevent multiple versions
of an icon theme cache to be mapped in memory at the same time,
which can cause excessive memory consumption. (#313156, Chris
Lahey)
2005-08-22 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c (gtk_icon_theme_load_icon): Add a note
regarding icon theme changes.
* gtk/gtkiconcache.c (_gtk_icon_cache_get_icon): When returning
pixbufs which are backed by the mmapped memory of an icon cache,
increase the refcount of the icon cache, so that the memory is not
munmapped away underneath the pixbuf upon icon theme changes.
(#314170, Kjartan Maraas)
2005-08-19 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c (theme_lookup_icon): Store GtkIconData structs
in the per-directory hash, even if they come from the icon cache.
We tried to avoid that before, but as a result leaked icon data
structs. (#313852, Kjartan Maraas)
2005-08-12 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c: When changing the icon theme, defer
the resetting of rc styles to an idle, so that it does
not happen e.g during expose handling (which is problematic,
since some widgets, like the toolbar, are changing the
hierarchy in response to style changes). (#300539, reported
by many people, analyzed by Owen Taylor)
2005-07-20 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c (load_svg_at_size): Explicitly use the
svg loader, if available. This should help with the fact that
svg is not reliably sniffable with the current gdk-pixbuf sniffing
code.
2005-07-13 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkicontheme.c (load_themes): Don't keep the caches
for unthemed directories in a separate list, instead append
them at the end of the dir_mtimes list, so that we can check
them for staleness like the other caches. (#310221, Mark
McLoughlin)
* gtk/gtkicontheme.c: Store icon caches along with the
mtimes of the toplevel directories. The previous
mechanism of a hashtable-per-theme caused duplicate icon
caches for the same toplevel directory to be created.
(#170030)
2005-03-20 Matthias Clasen <mclasen@redhat.com>
Make PLT-reduction work with gcc4, and don't include
everything in gdkalias.h:
* gtk/grk.symbols: Group symbols by header and source file.
* gtk/makegtkalias.pl: Protect definitions by the same
preprocessor symbols used to guard the headers. Move
the alias declarations to a separate file which is
produced when calling makegtkalias.pl -def
* gdk/Makefile.am (gtkaliasdef.c): Add a rule to generate
this file.
* gtk/*.c: Include gtkalias.h after the other headers,
include gtkaliasdef.c at the bottom.
* gtk/*.h: Small cleanups.