diff --git a/ChangeLog b/ChangeLog index 13024961a..3aad277be 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2001-09-17 Havoc Pennington + + * src/ui.c: use the inline image data for default icon + + * src/common.h (META_MINI_ICON_HEIGHT): move icon size defines + here + + * src/Makefile.am: Create an inlinepixbufs.h header with inline + images + 2001-09-16 Havoc Pennington * src/session.c (process_ice_messages): disconnect this callback diff --git a/configure.in b/configure.in index 13daceaad..8d4741daa 100644 --- a/configure.in +++ b/configure.in @@ -67,6 +67,14 @@ AM_CONDITIONAL(HAVE_SM, test "$found_sm" = "true") HOST_ALIAS=$host_alias AC_SUBST(HOST_ALIAS) +AC_PATH_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, no) + +if test x"$GDK_PIXBUF_CSOURCE" = xno; then + AC_MSG_ERROR([gdk-pixbuf-csource executable not found in your path - should be installed with GTK]) +fi + +AC_SUBST(GDK_PIXBUF_CSOURCE) + AC_OUTPUT([ Makefile src/Makefile diff --git a/src/Makefile.am b/src/Makefile.am index 25d930735..0b3f99ca7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -53,5 +53,13 @@ metacity_LDADD= @METACITY_LIBS@ desktopfilesdir=$(datadir)/gnome/wm-properties desktopfiles_DATA=metacity.desktop -EXTRA_DIST=$(desktopfiles_DATA) +IMAGES=default_icon.png +VARIABLES=default_icon_data default_icon.png +noinst_DATA = inlinepixbufs.h +CLEANFILES += $(noinst_DATA) + +inlinepixbufs.h: $(IMAGES) + $(GDK_PIXBUF_CSOURCE) --raw --build-list $(VARIABLES) >$(srcdir)/inlinepixbufs.h + +EXTRA_DIST=$(desktopfiles_DATA) $(IMAGES) diff --git a/src/common.h b/src/common.h index 0eb8634ae..f9c75a387 100644 --- a/src/common.h +++ b/src/common.h @@ -122,6 +122,13 @@ typedef enum } MetaCursor; + +/* should investigate changing these to whatever most apps use */ +#define META_ICON_WIDTH 32 +#define META_ICON_HEIGHT 32 +#define META_MINI_ICON_WIDTH 16 +#define META_MINI_ICON_HEIGHT 16 + #endif diff --git a/src/default_icon.png b/src/default_icon.png new file mode 100644 index 000000000..86108e432 Binary files /dev/null and b/src/default_icon.png differ diff --git a/src/screen.h b/src/screen.h index e81abf603..688fb4a7b 100644 --- a/src/screen.h +++ b/src/screen.h @@ -26,13 +26,6 @@ #include #include "ui.h" - -/* should investigate changing these to whatever most apps use */ -#define META_ICON_WIDTH 32 -#define META_ICON_HEIGHT 32 -#define META_MINI_ICON_WIDTH 16 -#define META_MINI_ICON_HEIGHT 16 - typedef void (* MetaScreenWindowFunc) (MetaScreen *screen, MetaWindow *window, gpointer user_data); diff --git a/src/ui.c b/src/ui.c index 01b3154b0..f56f427ae 100644 --- a/src/ui.c +++ b/src/ui.c @@ -25,6 +25,8 @@ #include "menu.h" #include "core.h" +#include "inlinepixbufs.h" + struct _MetaUI { Display *xdisplay; @@ -422,21 +424,53 @@ meta_ui_pop_delay_exposes (MetaUI *ui) GdkPixbuf* meta_ui_get_default_window_icon (MetaUI *ui) { - /* FIXME */ - return gtk_widget_render_icon (GTK_WIDGET (ui->frames), - GTK_STOCK_NEW, - GTK_ICON_SIZE_LARGE_TOOLBAR, - NULL); + static GdkPixbuf *default_icon = NULL; + + if (default_icon == NULL) + { + GdkPixbuf *base; + + base = gdk_pixbuf_new_from_stream (-1, default_icon_data, + FALSE, + NULL); + + g_assert (base); + + default_icon = gdk_pixbuf_scale_simple (base, + META_ICON_WIDTH, + META_ICON_HEIGHT, + GDK_INTERP_BILINEAR); + + g_object_unref (G_OBJECT (base)); + } + + return default_icon; } GdkPixbuf* meta_ui_get_default_mini_icon (MetaUI *ui) { - /* FIXME */ - return gtk_widget_render_icon (GTK_WIDGET (ui->frames), - GTK_STOCK_NEW, - GTK_ICON_SIZE_MENU, - NULL); + static GdkPixbuf *default_icon = NULL; + + if (default_icon == NULL) + { + GdkPixbuf *base; + + base = gdk_pixbuf_new_from_stream (-1, default_icon_data, + FALSE, + NULL); + + g_assert (base); + + default_icon = gdk_pixbuf_scale_simple (base, + META_MINI_ICON_WIDTH, + META_MINI_ICON_HEIGHT, + GDK_INTERP_BILINEAR); + + g_object_unref (G_OBJECT (base)); + } + + return default_icon; } gboolean