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)