Mercurial > emacs
changeset 52095:a2208fe45c36
* xfns.c (xg_set_icon): Rewrite to compile with GTK 2.0 and 2.2.
* xterm.c (x_bitmap_icon): Return if xg_set_icon succeeds.
author | Jan Djärv <jan.h.d@swipnet.se> |
---|---|
date | Thu, 31 Jul 2003 16:10:53 +0000 |
parents | 020088a4cf77 |
children | d634231f9cf7 |
files | src/ChangeLog src/xfns.c src/xterm.c |
diffstat | 3 files changed, 47 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Thu Jul 31 01:24:44 2003 +0000 +++ b/src/ChangeLog Thu Jul 31 16:10:53 2003 +0000 @@ -1,3 +1,9 @@ +2003-07-31 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> + + * xfns.c (xg_set_icon): Rewrite to compile with GTK 2.0 and 2.2. + + * xterm.c (x_bitmap_icon): Return if xg_set_icon succeeds. + 2003-07-31 Kenichi Handa <handa@m17n.org> * process.c (read_process_output): Return the actually read bytes
--- a/src/xfns.c Thu Jul 31 01:24:44 2003 +0000 +++ b/src/xfns.c Thu Jul 31 16:10:53 2003 +0000 @@ -1092,36 +1092,51 @@ #ifdef USE_GTK -/* Wrapper for gtk_window_icon_from_file() */ +static Lisp_Object x_find_image_file P_ ((Lisp_Object file)); + +/* Set icon from FILE for frame F. By using GTK functions the icon + may be any format that GdkPixbuf knows about, i.e. not just bitmaps. */ int xg_set_icon(f, file) - struct frame *f; + FRAME_PTR f; Lisp_Object file; { - struct gcpro gcpro1, gcpro2, gcpro3; - int fd; - int result = 1; - Lisp_Object found, search_path; - char *filename; - - search_path = Fcons (Vdata_directory, Vx_bitmap_file_path); - - GCPRO3 (found, search_path, file); - fd = openp (search_path, file, Qnil, &found, Qnil); - if (fd > 0) - { - filename = (char *) SDATA (found); - BLOCK_INPUT; - result = - gtk_window_set_icon_from_file (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), - filename, - NULL); - UNBLOCK_INPUT; - } - emacs_close (fd); - UNGCPRO; - return result; + struct gcpro gcpro1; + int result = 0; + Lisp_Object found; + + GCPRO1 (found); + + found = x_find_image_file (file); + + if (! NILP (found)) + { + GdkPixbuf *pixbuf; + GError *err = NULL; + char *filename; + + filename = SDATA (found); + BLOCK_INPUT; + + pixbuf = gdk_pixbuf_new_from_file (filename, &err); + + if (pixbuf) + { + gtk_window_set_icon (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), + pixbuf); + g_object_unref (pixbuf); + + result = 1; + } + else + g_error_free (err); + + UNBLOCK_INPUT; + } + + UNGCPRO; + return result; } #endif /* USE_GTK */
--- a/src/xterm.c Thu Jul 31 01:24:44 2003 +0000 +++ b/src/xterm.c Thu Jul 31 16:10:53 2003 +0000 @@ -7474,7 +7474,7 @@ #ifdef USE_GTK /* Use gtk_window_set_icon_from_file() if available, It's not restricted to bitmaps */ - if (!xg_set_icon(f, file)) + if (xg_set_icon(f, file)) return 0; #endif /* USE_GTK */ bitmap_id = x_create_bitmap_from_file (f, file);