summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog14
-rw-r--r--src/Makefile.am5
-rw-r--r--src/include/common.h2
-rw-r--r--src/ui/preview-widget.c57
-rw-r--r--src/ui/ui.c54
5 files changed, 87 insertions, 45 deletions
diff --git a/ChangeLog b/ChangeLog
index 285dbecc..55de22f1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2008-08-14 Patrick Niklaus <marex@compiz-fusion.org>
+
+ Icons for windows are taken from the desktop theme, not from
+ the Metacity theme or from the fallback icon that Metacity
+ provided. Closes #524343.
+
+ * src/ui/ui.c: Use GtkIconTheme to load the default window icon.
+ Assumes the existence of an icon called "window", otherwise
+ falls back to "gtk-missing-image". Fixes #524343.
+ * src/ui/preview-widget: See above.
+ * src/include/common.h: Add META_DEFAULT_ICON_NAME.
+ * src/Makefile.am: Remove default_icon.png from inlinepixbufs.h.
+ * src/default_icon.png: Removed.
+
2008-08-14 Akira TAGOH <akira@tagoh.org>
* doc/man/metacity-message.1: new manual page.
diff --git a/src/Makefile.am b/src/Makefile.am
index 5f45a6fd..eafb5aed 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -180,9 +180,8 @@ else
install-data-local:
endif
-IMAGES=default_icon.png stock_maximize.png stock_minimize.png stock_delete.png
-VARIABLES=default_icon_data $(srcdir)/default_icon.png \
- stock_maximize_data $(srcdir)/stock_maximize.png \
+IMAGES=stock_maximize.png stock_minimize.png stock_delete.png
+VARIABLES=stock_maximize_data $(srcdir)/stock_maximize.png \
stock_minimize_data $(srcdir)/stock_minimize.png \
stock_delete_data $(srcdir)/stock_delete.png
diff --git a/src/include/common.h b/src/include/common.h
index cdd814db..9d6a98c5 100644
--- a/src/include/common.h
+++ b/src/include/common.h
@@ -278,6 +278,8 @@ struct _MetaButtonLayout
#define META_MINI_ICON_WIDTH 16
#define META_MINI_ICON_HEIGHT 16
+#define META_DEFAULT_ICON_NAME "window"
+
#define META_PRIORITY_PREFS_NOTIFY (G_PRIORITY_DEFAULT_IDLE + 10)
#define META_PRIORITY_WORK_AREA_HINT (G_PRIORITY_DEFAULT_IDLE + 15)
diff --git a/src/ui/preview-widget.c b/src/ui/preview-widget.c
index 4d2f9a2e..23504f9b 100644
--- a/src/ui/preview-widget.c
+++ b/src/ui/preview-widget.c
@@ -25,6 +25,7 @@
#define _XOPEN_SOURCE 600 /* for the maths routines over floats */
#include <math.h>
+#include <gtk/gtkicontheme.h>
#include "preview-widget.h"
static void meta_preview_class_init (MetaPreviewClass *klass);
@@ -411,8 +412,6 @@ meta_preview_set_button_layout (MetaPreview *preview,
gtk_widget_queue_draw (GTK_WIDGET (preview));
}
-#include "inlinepixbufs.h"
-
GdkPixbuf*
meta_preview_get_icon (void)
{
@@ -420,20 +419,27 @@ meta_preview_get_icon (void)
if (default_icon == NULL)
{
- GdkPixbuf *base;
+ GtkIconTheme *theme;
+ gboolean icon_exists;
- base = gdk_pixbuf_new_from_inline (-1, default_icon_data,
- FALSE,
- NULL);
+ theme = gtk_icon_theme_get_default ();
- g_assert (base);
+ icon_exists = gtk_icon_theme_has_icon (theme, META_DEFAULT_ICON_NAME);
- default_icon = gdk_pixbuf_scale_simple (base,
- META_ICON_WIDTH,
- META_ICON_HEIGHT,
- GDK_INTERP_BILINEAR);
+ if (icon_exists)
+ default_icon = gtk_icon_theme_load_icon (theme,
+ META_DEFAULT_ICON_NAME,
+ META_ICON_WIDTH,
+ 0,
+ NULL);
+ else
+ default_icon = gtk_icon_theme_load_icon (theme,
+ "gtk-missing-image",
+ META_ICON_WIDTH,
+ 0,
+ NULL);
- g_object_unref (G_OBJECT (base));
+ g_assert (default_icon);
}
return default_icon;
@@ -446,20 +452,27 @@ meta_preview_get_mini_icon (void)
if (default_icon == NULL)
{
- GdkPixbuf *base;
+ GtkIconTheme *theme;
+ gboolean icon_exists;
- base = gdk_pixbuf_new_from_inline (-1, default_icon_data,
- FALSE,
- NULL);
+ theme = gtk_icon_theme_get_default ();
- g_assert (base);
+ icon_exists = gtk_icon_theme_has_icon (theme, META_DEFAULT_ICON_NAME);
- default_icon = gdk_pixbuf_scale_simple (base,
- META_MINI_ICON_WIDTH,
- META_MINI_ICON_HEIGHT,
- GDK_INTERP_BILINEAR);
+ if (icon_exists)
+ default_icon = gtk_icon_theme_load_icon (theme,
+ META_DEFAULT_ICON_NAME,
+ META_MINI_ICON_WIDTH,
+ 0,
+ NULL);
+ else
+ default_icon = gtk_icon_theme_load_icon (theme,
+ "gtk-missing-image",
+ META_MINI_ICON_WIDTH,
+ 0,
+ NULL);
- g_object_unref (G_OBJECT (base));
+ g_assert (default_icon);
}
return default_icon;
diff --git a/src/ui/ui.c b/src/ui/ui.c
index 37901184..ca0affcc 100644
--- a/src/ui/ui.c
+++ b/src/ui/ui.c
@@ -574,20 +574,27 @@ meta_ui_get_default_window_icon (MetaUI *ui)
if (default_icon == NULL)
{
- GdkPixbuf *base;
+ GtkIconTheme *theme;
+ gboolean icon_exists;
- base = gdk_pixbuf_new_from_inline (-1, default_icon_data,
- FALSE,
- NULL);
+ theme = gtk_icon_theme_get_default ();
- g_assert (base);
+ icon_exists = gtk_icon_theme_has_icon (theme, META_DEFAULT_ICON_NAME);
- default_icon = gdk_pixbuf_scale_simple (base,
- META_ICON_WIDTH,
- META_ICON_HEIGHT,
- GDK_INTERP_BILINEAR);
+ if (icon_exists)
+ default_icon = gtk_icon_theme_load_icon (theme,
+ META_DEFAULT_ICON_NAME,
+ META_ICON_WIDTH,
+ 0,
+ NULL);
+ else
+ default_icon = gtk_icon_theme_load_icon (theme,
+ "gtk-missing-image",
+ META_ICON_WIDTH,
+ 0,
+ NULL);
- g_object_unref (G_OBJECT (base));
+ g_assert (default_icon);
}
g_object_ref (G_OBJECT (default_icon));
@@ -602,20 +609,27 @@ meta_ui_get_default_mini_icon (MetaUI *ui)
if (default_icon == NULL)
{
- GdkPixbuf *base;
+ GtkIconTheme *theme;
+ gboolean icon_exists;
- base = gdk_pixbuf_new_from_inline (-1, default_icon_data,
- FALSE,
- NULL);
+ theme = gtk_icon_theme_get_default ();
- g_assert (base);
+ icon_exists = gtk_icon_theme_has_icon (theme, META_DEFAULT_ICON_NAME);
- default_icon = gdk_pixbuf_scale_simple (base,
- META_MINI_ICON_WIDTH,
- META_MINI_ICON_HEIGHT,
- GDK_INTERP_BILINEAR);
+ if (icon_exists)
+ default_icon = gtk_icon_theme_load_icon (theme,
+ META_DEFAULT_ICON_NAME,
+ META_MINI_ICON_WIDTH,
+ 0,
+ NULL);
+ else
+ default_icon = gtk_icon_theme_load_icon (theme,
+ "gtk-missing-image",
+ META_MINI_ICON_WIDTH,
+ 0,
+ NULL);
- g_object_unref (G_OBJECT (base));
+ g_assert (default_icon);
}
g_object_ref (G_OBJECT (default_icon));