Commit 9f7b984b authored by Chong Yidong's avatar Chong Yidong

* xfns.c (xg_set_icon_from_xpm_data): New function.

	* gnu.h (gnu_xpm_bits): Renamed from gnu_bits.
	(gnu_xbm_bits): Renamed from gnu_bits (xbm version).

	* xterm.c (x_bitmap_icon): Use the xpm if available.
parent 5cb35db5
2005-11-16 Chong Yidong <cyd@stupidchicken.com>
* gnu.h (gnu_bits): Xpm version of the new Emacs icon.
* xfns.c (xg_set_icon_from_xpm_data): New function.
* gnu.h (gnu_xpm_bits): Renamed from gnu_bits.
(gnu_xbm_bits): Renamed from gnu_bits (xbm version).
* xterm.c (x_bitmap_icon): Use the xpm if available.
......
#if defined (HAVE_XPM) && defined (HAVE_X_WINDOWS)
static char * gnu_bits[] = {
static char * gnu_xpm_bits[] = {
"32 32 173 2",
" c None",
". c #67627D",
......@@ -206,10 +206,11 @@ static char * gnu_bits[] = {
" P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P. ",
" ",
" "};
#else
#define gnu_width 50
#define gnu_height 50
static unsigned char gnu_bits[] = {
#endif /* defined (HAVE_XPM) && defined (HAVE_X_WINDOWS) */
#define gnu_xbm_width 50
#define gnu_xbm_height 50
static unsigned char gnu_xbm_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00,
......@@ -240,7 +241,6 @@ static unsigned char gnu_bits[] = {
0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00};
#endif
/* arch-tag: b57020c7-c937-4d77-8ca6-3875178d9828
(do not change this comment) */
......@@ -818,6 +818,27 @@ xg_set_icon (f, file)
UNGCPRO;
return result;
}
int
xg_set_icon_from_xpm_data (f, data)
FRAME_PTR f;
char **data;
{
int result = 0;
GError *err = NULL;
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data (data);
if (!pixbuf)
{
g_error_free (err);
return 0;
}
gtk_window_set_icon (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
pixbuf);
g_object_unref (pixbuf);
return 1;
}
#endif /* USE_GTK */
......
......@@ -7362,15 +7362,30 @@ x_bitmap_icon (f, file)
/* Create the GNU bitmap and mask if necessary. */
if (FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id < 0)
{
int rc = -1;
#if defined (HAVE_XPM) && defined (HAVE_X_WINDOWS)
FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id
= x_create_bitmap_from_xpm_data (f, gnu_bits);
#ifdef USE_GTK
if (xg_set_icon_from_xpm_data (f, gnu_xpm_bits))
return 0;
#else
FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id
= x_create_bitmap_from_data (f, gnu_bits,
gnu_width, gnu_height);
#endif /* (HAVE_XPM) && defined (HAVE_X_WINDOWS) */
x_create_bitmap_mask (f, FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id);
rc = x_create_bitmap_from_xpm_data (f, gnu_xpm_bits);
if (rc != -1)
FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id = rc;
#endif /* USE_GTK */
#endif /* defined (HAVE_XPM) && defined (HAVE_X_WINDOWS) */
/* If all else fails, use the (black and white) xbm image. */
if (rc == -1)
{
rc = x_create_bitmap_from_data (f, gnu_xbm_bits,
gnu_xbm_width, gnu_xbm_height);
if (rc == -1)
return 1;
FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id = rc;
x_create_bitmap_mask (f, FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id);
}
}
/* The first time we create the GNU bitmap and mask,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment