GNU bug report logs -
#6563
[PATCH] 24.0.50; Set EWMH WM NAME properties
Previous Next
Reported by: James Cloos <cloos <at> jhcloos.com>
Date: Sun, 4 Jul 2010 17:20:03 UTC
Severity: normal
Tags: patch
Done: Jan Djärv <jan.h.d <at> swipnet.se>
Bug is archived. No further changes may be made.
Full log
Message #10 received at 6563-done <at> debbugs.gnu.org (full text, mbox):
Applied, thanks.
Jan D.
James Cloos skrev 2010-07-04 19.18:
> When compiled with gtk+, by calling gtk_window_set_title(), Emacs sets
> both the WM_NAME, WM_ICON_NAME and the _NET_WM_NAME, _NET_WM_ICON_NAME
> properties.
>
> Many current window managers prefer the _NET properties, which are
> defined to always be UTF8_STRING. Some may even lack support for
> COMPOUND_TEXT.
>
> Like the _NET_* properties which Emacs already supports, _NET_WM_NAME
> and _NET_WM_ICON_NAME are specified at:
>
> http://specs.freedesktop.org/wm-spec/wm-spec-latest.html
>
> The patch adds support for the _NET_WM_NAME and _NET_WM_ICON_NAME
> properties to the non-gtk+ builds.
>
> === modified file 'src/ChangeLog'
> --- src/ChangeLog 2010-07-03 14:35:54 +0000
> +++ src/ChangeLog 2010-07-04 17:09:04 +0000
> @@ -1,3 +1,12 @@
> +2010-07-04 James Cloos<cloos <at> jhcloos.com
> +
> + * xterm.c (x_term_init): Intern the _NET_WM_NAME and
> + _NET_WM_ICON_NAME atoms.
> +
> + * xfns.c (x_set_name_internal): Set the EWMH _NET_WM_NAME
> + and _NET_WM_ICON_NAME properties, too, matching what is
> + done in the gtk+ case.
> +
> 2010-07-03 Eli Zaretskii<eliz <at> gnu.org>
>
> * msdos.c (IT_set_frame_parameters): Fix setting of colors in
>
> === modified file 'src/xfns.c'
> --- src/xfns.c 2010-07-02 12:19:29 +0000
> +++ src/xfns.c 2010-07-04 16:32:36 +0000
> @@ -1613,8 +1613,8 @@
> int bytes, stringp;
> int do_free_icon_value = 0, do_free_text_value = 0;
> Lisp_Object coding_system;
> -#ifdef USE_GTK
> Lisp_Object encoded_name;
> + Lisp_Object encoded_icon_name;
> struct gcpro gcpro1;
>
> /* As ENCODE_UTF_8 may cause GC and relocation of string data,
> @@ -1622,7 +1622,6 @@
> GCPRO1 (name);
> encoded_name = ENCODE_UTF_8 (name);
> UNGCPRO;
> -#endif
>
> coding_system = Qcompound_text;
> /* Note: Encoding strategy
> @@ -1638,7 +1637,12 @@
> We may also be able to use "UTF8_STRING" in text.encoding
> in the future which can encode all Unicode characters.
> But, for the moment, there's no way to know that the
> - current window manager supports it or not. */
> + current window manager supports it or not.
> +
> + Either way, we also set the _NET_WM_NAME and _NET_WM_ICON_NAME
> + properties. Per the EWMH specification, those two properties
> + are always UTF8_STRING. This matches what gtk_window_set_title()
> + does in the USE_GTK case. */
> text.value = x_encode_text (name, coding_system, 0,&bytes,&stringp,
> &do_free_text_value);
> text.encoding = (stringp ? XA_STRING
> @@ -1649,6 +1653,7 @@
> if (!STRINGP (f->icon_name))
> {
> icon = text;
> + encoded_icon_name = encoded_name;
> }
> else
> {
> @@ -1659,6 +1664,8 @@
> : FRAME_X_DISPLAY_INFO (f)->Xatom_COMPOUND_TEXT);
> icon.format = 8;
> icon.nitems = bytes;
> +
> + encoded_icon_name = ENCODE_UTF_8 (f->icon_name);
> }
>
> #ifdef USE_GTK
> @@ -1666,9 +1673,21 @@
> (char *) SDATA (encoded_name));
> #else /* not USE_GTK */
> XSetWMName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),&text);
> + XChangeProperty (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
> + FRAME_X_DISPLAY_INFO (f)->Xatom_net_wm_name,
> + FRAME_X_DISPLAY_INFO (f)->Xatom_UTF8_STRING,
> + 8, PropModeReplace,
> + (char *) SDATA (encoded_name),
> + SBYTES (encoded_name));
> #endif /* not USE_GTK */
>
> XSetWMIconName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),&icon);
> + XChangeProperty (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
> + FRAME_X_DISPLAY_INFO (f)->Xatom_net_wm_icon_name,
> + FRAME_X_DISPLAY_INFO (f)->Xatom_UTF8_STRING,
> + 8, PropModeReplace,
> + (char *) SDATA (encoded_icon_name),
> + SBYTES (encoded_icon_name));
>
> if (do_free_icon_value)
> xfree (icon.value);
>
> === modified file 'src/xterm.c'
> --- src/xterm.c 2010-07-02 12:19:29 +0000
> +++ src/xterm.c 2010-07-04 16:32:36 +0000
> @@ -10493,6 +10493,10 @@
> = XInternAtom (dpyinfo->display, "_NET_WM_WINDOW_TYPE", False);
> dpyinfo->Xatom_net_window_type_tooltip
> = XInternAtom (dpyinfo->display, "_NET_WM_WINDOW_TYPE_TOOLTIP", False);
> + dpyinfo->Xatom_net_wm_icon_name
> + = XInternAtom (dpyinfo->display, "_NET_WM_ICON_NAME", False);
> + dpyinfo->Xatom_net_wm_name
> + = XInternAtom (dpyinfo->display, "_NET_WM_NAME", False);
>
> dpyinfo->cut_buffers_initialized = 0;
>
>
>
>
This bug report was last modified 15 years and 18 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.