Commit Graph

74 Commits

Author SHA1 Message Date
Matthias Clasen
da63cf9805 Apply a patch by Paolo Borelli to factor out a strip_suffix() function and
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-18 13:58:30 +00:00
Matthias Clasen
d13554a35c Better fix 2006-04-12 04:22:51 +00:00
Matthias Clasen
4906bd0fad Fix another Coverity bug 2006-04-12 04:20:28 +00:00
Matthias Clasen
9c0f0bb451 Small savings 2006-04-04 04:14:17 +00:00
Matthias Clasen
8c8a4c89b8 No point in making the error path fast by caching quarks.
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-04-04 03:25:16 +00:00
Matthias Clasen
082d4176d5 Don't leak the keyfile parser in the error case.
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-03-31 05:17:56 +00:00
Matthias Clasen
a32b9712f3 Give working examples in the docs. (#330944, John Spray)
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-02-13 02:31:28 +00:00
Matthias Clasen
f35d4e1e47 Allow falling back to another icon theme before hicolor. (#325546, Rodney
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.
2006-01-11 06:20:17 +00:00
Matthias Clasen
dd3a8cd122 Only broadcast _GTK_LOAD_ICONTHEMES if we detect a real theme change, not
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-12-12 17:39:50 +00:00
Matthias Clasen
e00ef950ed Avoid a crash 2005-11-14 18:49:41 +00:00
Matthias Clasen
82f12b610d Make builtin icons work in gtk_window_set_icon_name() (#321046, Maxim
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-12 06:59:49 +00:00
Matthias Clasen
b983d1c6a7 Store builtin stock icons in an icon cache, instead of populating a hash
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-11-04 15:43:40 +00:00
Matthias Clasen
af89d145f7 Use gdk_atom_intern_static_string() where appropriate.
* gtk/*.c:  Use gdk_atom_intern_static_string() where
	appropriate.
2005-09-11 05:48:27 +00:00
Matthias Clasen
94eec04267 Intern some more strings.
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-09-01 05:11:46 +00:00
Matthias Clasen
f4bbe8f0de Also intern static strings passed to g_object_set_data() 2005-08-31 17:58:55 +00:00
Matthias Clasen
c09cc89317 Intern type names in code generated by glib-mkenums, too.
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-31 16:53:43 +00:00
Matthias Clasen
a4df08a6c7 Avoid an uninitialized variable warning, pointed out by Colin Walters.
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-26 16:29:40 +00:00
Matthias Clasen
fb8fe489ab Don't try to send a client message if the screen is NULL. Noticed by
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-24 15:28:20 +00:00
Matthias Clasen
f2cb87d3a9 Implement a clientmessage based scheme for makeing sure that all GTK+
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 20:12:15 +00:00
Matthias Clasen
97ec1cdf4f Add a note regarding icon theme changes.
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-22 16:38:46 +00:00
Matthias Clasen
d1ab2bf3d5 Store GtkIconData structs in the per-directory hash, even if they come
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-19 04:39:30 +00:00
Tor Lillqvist
6591528e95 Put debugging printout inside GTK_NOTE.
2005-08-15  Tor Lillqvist  <tml@novell.com>

	* gtk/gtkicontheme.c (theme_lookup_icon): Put debugging printout
	inside GTK_NOTE.
2005-08-15 19:36:32 +00:00
Matthias Clasen
ce9570dd58 Correct the download location for the hicolor icon theme. (#313475, Olexiy
2005-08-15  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkicontheme.c (gtk_icon_theme_lookup_icon): Correct the
	download location for the hicolor icon theme. (#313475, Olexiy
	Avramchenko)
2005-08-15 13:28:22 +00:00
Matthias Clasen
1f61c61410 When changing the icon theme, defer the resetting of rc styles to an idle,
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-08-12 18:39:17 +00:00
Matthias Clasen
708cf95507 Explicitly use the svg loader, if available. This should help with the
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-20 20:50:46 +00:00
Matthias Clasen
c251818ca0 Don't keep the caches for unthemed directories in a separate list, instead
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)
2005-07-13 14:07:10 +00:00
Matthias Clasen
b03e0f2ffb Add a warning about unreffing icon themes. (#310163, Rodney Dawes)
2005-07-13  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkicontheme.c (gtk_icon_theme_get_default)
	(gtk_icon_theme_get_for_screen): Add a warning about
	unreffing icon themes.  (#310163, Rodney Dawes)
2005-07-13 04:53:49 +00:00
Matthias Clasen
1a15d98cd4 Doc fixes.
2005-06-10  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkiconview.c (gtk_icon_view_set_margin):
	* gtk/gtkicontheme.c (gtk_icon_info_load_icon):
	* gtk/gtkcalendar.c (gtk_calendar_thaw): Doc fixes.
2005-06-10 04:25:33 +00:00
Matthias Clasen
a6259bbd4d Store icon caches along with the mtimes of the toplevel directories. The
* 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-04-06 03:34:38 +00:00
Matthias Clasen
cca8dd6347 Make PLT-reduction work with gcc4, and don't include everything in
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.
2005-03-20 07:01:23 +00:00
Matthias Clasen
c4aa487d72 Don't crash if there is no cache. (#170652, Diego Gonzalez)
2005-03-17  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkicontheme.c (theme_lookup_icon): Don't crash
	if there is no cache.  (#170652, Diego Gonzalez)
2005-03-17 18:13:46 +00:00
Anders Carlsson
3fc42d7ab9 Update spec.
2005-03-15  Anders Carlsson  <andersca@imendio.com>

	* docs/iconcache.txt:
	Update spec.

	* gtk/gtkiconcache.c: (find_image_offset),
	(_gtk_icon_cache_get_icon_flags), (_gtk_icon_cache_add_icons),
	(_gtk_icon_cache_get_icon), (_gtk_icon_cache_get_icon_data):
	* gtk/gtkiconcache.h:
	Update to be able to fetch pixbuf data and icon metadata.

	* gtk/gtkicontheme.c: (theme_lookup_icon), (gtk_icon_info_free),
	(icon_info_ensure_scale_and_pixbuf):
	Use new cache functions.

	* gtk/updateiconcache.c: (foreach_remove_func), (load_icon_data),
	(maybe_cache_image_data), (scan_directory), (write_pixdata),
	(get_image_meta_data_size), (get_image_pixel_data_size),
	(get_image_data_size), (get_single_node_size), (get_bucket_size),
	(write_bucket), (main):
	Update to write pixbuf data as well as information from .icon
	files.
2005-03-15 13:18:25 +00:00
Matthias Clasen
7ecf872b9a Fix the doc comments. (#169967, Masao Mutoh)
2005-03-11  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkicontheme.c (gtk_icon_theme_set_custom_theme): Fix
	the doc comments.  (#169967, Masao Mutoh)
2005-03-12 03:38:31 +00:00
Matthias Clasen
86db923391 Make icon data caching work again. (#168851, Alexander Larsson)
2005-03-01  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkicontheme.c (theme_lookup_icon): Make
	icon data caching work again.  (#168851, Alexander Larsson)
2005-03-01 14:59:04 +00:00
Matthias Clasen
b635954523 Look for icons in XDG_DATA_DIRS/pixmaps. (#165950, Thomas Zajic)
2005-02-01  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkicontheme.c (gtk_icon_theme_init): Look for icons
	in XDG_DATA_DIRS/pixmaps.  (#165950, Thomas Zajic)
2005-02-02 04:31:21 +00:00
Matthias Clasen
35dfce0f90 Make gtk_icon_theme_load_icon() work independent of icon factory
2005-01-03  Matthias Clasen  <mclasen@redhat.com>

	Make gtk_icon_theme_load_icon() work independent of
	icon factory initialization.  (#162791, Tristan Van Berkom)

	* gtk/gtkiconfactory.[hc]: Rename ensure_default_icons to
	_gtk_icon_factory_ensure_default_icons, and make it non-static.

	* gtk/gtkicontheme.c (find_builtin_icon): ..and call it here.
2005-01-03 14:44:33 +00:00
Tor Lillqvist
5e86a6c9cd Use /usr/share/pixmaps only on Unix.
2004-12-30  Tor Lillqvist  <tml@iki.fi>

	* gtk/gtkicontheme.c (gtk_icon_theme_init): Use /usr/share/pixmaps
	only on Unix.
2004-12-30 00:37:12 +00:00
Tor Lillqvist
f3da170539 gtk/gtkaccelmap.[ch] gtk/gtkfilechooser.[ch] gtk/gtkfilesel.c
2004-12-12  Tor Lillqvist  <tml@iki.fi>

	* gtk/gtkaccelmap.[ch]
	* gtk/gtkfilechooser.[ch]
	* gtk/gtkfilesel.c
	* gtk/gtkfilesystemwin32.c
	* gtk/gtkiconfactory.[ch]
	* gtk/gtkicontheme.[ch]
	* gtk/gtkimage.[ch]
	* gtk/gtkimmodule.c
	* gtk/gtkmodules.c
	* gtk/gtkrc.[ch]
	* gtk/gtkuimanager.[ch]
	* gtk/gtkwindow.[ch]
	* gtk/updateiconcache.c
	* gtk/gtk.symbols: Use gstdio wrappers. On Windows, convert
	environment variables referring to pathnames from locale encoding
	to UTF-8. As in GLib, in order to preserve Windows DLL ABI
	stability, add binary compatibility versions of functions that
	take file names as arguments, or return file names. Add a _utf8
	suffix to the "real" such functions on Windows. The ABI
	compatibility versions keep the old name.

	* gtk/Makefile.am: Strip PRIVATE symbols from the GNU import
	library.

	* gtk/gtkiconcache.c (_gtk_icon_cache_new_for_path): Implement
	file mapping on Win32.

	* gtk/updateiconcache.c: Don't crash if invoked without
	argument. Use binary mode when opening file.

	* modules/engines/ms-windows/Theme/gtk-2.0/Makefile.am: Install
	gtkrc in correct place, in <datadir>/themes/MS-Windows/gtk-2.0.
2004-12-12 21:09:13 +00:00
Matthias Clasen
dc25aac558 Improve the docs. (#157785, Torsten Schoenfeld)
2004-11-09  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkicontheme.[ch]: Improve the docs.  (#157785,
	Torsten Schoenfeld)
2004-11-10 02:03:36 +00:00
Matthias Clasen
547b85d8b8 Actually commit the "stat less" patch which appeared in the ChangeLog a
2004-11-01  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkicontheme.c: Actually commit the "stat less" patch
	which appeared in the ChangeLog a few days ago.
2004-11-02 02:07:30 +00:00
Matthias Clasen
d5f92150d4 Fix many sparse warnings. 2004-10-28 15:00:05 +00:00
Matthias Clasen
ed19394c8e Use the new g_key_file api in GLib.
2004-10-24  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkicontheme.c: Use the new g_key_file api in GLib.

	* gtk/Makefile.am (gtk_c_sources): Remove gtkiconthemeparser.[hc]

	* gtk/gtkiconthemeparser.[hc]: Removed.
2004-10-24 05:48:16 +00:00
Matthias Clasen
a34d841d79 Implement for cached themes.
2004-10-21  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkicontheme.c (gtk_icon_theme_has_icon): Implement for
	cached themes.

	* gtk/gtkiconcache.h:
	* gtk/gtkiconcache.c (_gtk_icon_cache_has_icon): New function.

	* gtk/updateiconcache.c (scan_directory): Don't skip .icon
	files which are listed before their images.
	(foreach_remove_func): Instead filter lonely .icon files out
	here.

	* gtk/gtkicontheme.c (theme_dir_get_icon_suffix): Filter out
	the HAS_ICON_FILE flag.
2004-10-21 18:44:08 +00:00
Matthias Clasen
73fd5538d2 Small fixes.
2004-10-20  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkicontheme.c: Small fixes.
2004-10-20 17:23:02 +00:00
Matthias Clasen
6fc2b8118a Implement icon theme caching. (#154034, Martijn Vernooij, caching schema
2004-10-19  Matthias Clasen  <mclasen@redhat.com>

	Implement icon theme caching.  (#154034, Martijn Vernooij,
	caching schema proposed by Owen Taylor, initial implementation
	by Anders Carlsson)

	* gtk/gtkdebug.h:
	* gtk/gtkmain.c: Add a "icontheme" debug flag.

	* gtk/Makefile.am (gtk_c_sources): Add gtkiconcache.c
	(gtk_private_h_sources): Add gtkiconcache.h
	(bin_PROGRAMS): Add gtk-update-icon-cache

	* gtk/gtkicontheme.c: Use icon caches if they are available.
	Currently, GTK+ uses the cache to get information about the
	available sizes, image file formats and .icon files. The
	actual image data, and the .icon file contents are not
	cached yet.

	* gtk/updateiconcache.c: A cmdline utility for generating
	icon cache files.

	* gtk/gtkiconcache.h:
	* gtk/gtkiconcache.c: The glue code to mmap an icon cache
	file and manage the information it contains.
2004-10-19 18:45:41 +00:00
Matthias Clasen
dd0a7ce608 Go back to not scaling up at all. Less magic.
2004-10-05  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkicontheme.c (icon_info_ensure_scale_and_pixbuf): Go back to
	not scaling up at all. Less magic.
2004-10-05 17:06:00 +00:00
Matthias Clasen
6e6824a06b Make the code work as intended for unthemed icons; don't scale them up too
2004-10-04  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkicontheme.c (icon_info_ensure_scale_and_pixbuf):
	Make the code work as intended for unthemed icons; don't scale
	them up too much. Allow to scale them down, and do so
	exactly.  (#154142, Ross Burton)
	(gtk_icon_info_load_icon): Amend docs.
2004-10-05 03:18:22 +00:00
Manish Singh
9f326d612b Applied patch from Olivier Andrieu to fix bug #150440.
Wed Aug 18 08:31:17 2004  Manish Singh  <yosh@gimp.org>

        * gtk/gtkiconview.c: Applied patch from Olivier Andrieu to fix
        bug #150440.

        * gtk/gtkicontheme.c (gtk_icon_theme_init): xdg_data_dirs should
        match constness attributes of g_get_system_data_dirs ().
2004-08-18 15:45:13 +00:00
Matthias Clasen
11396cb71f Look up icon themes in the directories specified in the icon theme spec:
2004-08-17  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkicontheme.c (gtk_icon_theme_init): Look up icon themes in the
	directories specified in the icon theme spec: $HOME/.icons,
	$XDG_DATA_DIRS/icons, /usr/share/pixmaps. Note that GTK+ used to also look
	in $GTK_DATA_DIR/icons, $GTK_DATA_DIR/pixmaps and /usr/share/icons.  (#148694)
2004-08-17 19:51:11 +00:00
Matthias Clasen
517c3c9db2 Doc update.
2004-08-16  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkwidget.c (gtk_widget_render_icon): Doc update.

	* gtk/gtkiconfactory.c (render_icon_name_pixbuf): When the size is -1,
	use the available size closest to 48.  (#150147)

	* gtk/gtkicontheme.c (gtk_icon_theme_get_icon_sizes): Actually return
	a pointer to the beginning of the sizes array, not the end.
2004-08-16 18:38:55 +00:00