Mercurial > geeqie
diff src/main.c @ 91:d063f97503b7
Wed Nov 1 11:39:48 2006 John Ellis <johne@verizon.net>
* gqview.h, main.c (window_set_icon): Change to use inline pixbufs
instead of xpms.
* collect.c, img-view.c, layout.c, preferences.c: Use new icons.
* pixbuf_util.[ch]: Add new icons.
* icons/Makefile.am: Update generated inline pixbufs.
* icons/collect.xpm, icons/config.xpm, icons/icon.xpm, icons/tools.xpm,
icons/view.xpm: Remove old xpm icons.
* icons/gqview_icon.png, icons/icon_book.png, icons/icon_config.png,
icons/icon_tools.png, icons/icon_view.png: The new icons in png format.
* icons/svg/*.svg: Add svg sources for icons, they are not used or
anything, but this way I can not misplace them again.
author | gqview |
---|---|
date | Wed, 01 Nov 2006 17:47:14 +0000 |
parents | 0ef72a64930b |
children | 55166d93498d |
line wrap: on
line diff
--- a/src/main.c Tue Oct 31 23:20:48 2006 +0000 +++ b/src/main.c Wed Nov 01 17:47:14 2006 +0000 @@ -22,6 +22,7 @@ #include "layout.h" #include "layout_image.h" #include "menu.h" +#include "pixbuf_util.h" #include "preferences.h" #include "rcfile.h" #include "remote.h" @@ -36,8 +37,6 @@ #include <gdk/gdkkeysyms.h> /* for keyboard values */ -#include "icons/icon.xpm" - #include <math.h> @@ -52,53 +51,25 @@ *----------------------------------------------------------------------------- */ -typedef struct _WindowIconData WindowIconData; -struct _WindowIconData -{ - const char **icon; - gchar *path; -}; - -static void window_set_icon_cb(GtkWidget *widget, gpointer data) +void window_set_icon(GtkWidget *window, const gchar *icon, const gchar *file) { - WindowIconData *wid = data; - GdkPixbuf *pb; - GdkPixmap *pixmap; - GdkBitmap *mask; + if (!icon && !file) icon = PIXBUF_INLINE_ICON; + + if (icon) + { + GdkPixbuf *pixbuf; - if (wid->icon) - { - pb = gdk_pixbuf_new_from_xpm_data(wid->icon); + pixbuf = pixbuf_inline(icon); + if (pixbuf) + { + gtk_window_set_icon(GTK_WINDOW(window), pixbuf); + g_object_unref(pixbuf); + } } else { - pb = gdk_pixbuf_new_from_file(wid->path, NULL); + gtk_window_set_icon_from_file(GTK_WINDOW(window), file, NULL); } - - g_free(wid->path); - g_free(wid); - - if (!pb) return; - - gdk_pixbuf_render_pixmap_and_mask(pb, &pixmap, &mask, 128); - gdk_pixbuf_unref(pb); - - gdk_window_set_icon(widget->window, NULL, pixmap, mask); - /* apparently, gdk_window_set_icon does not ref the pixmap and mask, so don't unref it (leak?) */ -} - -void window_set_icon(GtkWidget *window, const char **icon, const gchar *file) -{ - WindowIconData *wid; - - if (!icon && !file) icon = (const char **)icon_xpm; - - wid = g_new0(WindowIconData, 1); - wid->icon = icon; - wid->path = g_strdup(file); - - g_signal_connect(G_OBJECT(window), "realize", - G_CALLBACK(window_set_icon_cb), wid); } gint window_maximized(GtkWidget *window)