mirror of
https://github.com/vale981/spectrwm
synced 2025-03-05 09:51:38 -05:00
Fix get_win_name to try _NET_WM_NAME (UTF-8) before WM_NAME.
This commit is contained in:
parent
ea7610b577
commit
759e9ab081
1 changed files with 24 additions and 11 deletions
35
spectrwm.c
35
spectrwm.c
|
@ -607,6 +607,7 @@ enum {
|
||||||
_NET_WM_ACTION_MOVE,
|
_NET_WM_ACTION_MOVE,
|
||||||
_NET_WM_ACTION_RESIZE,
|
_NET_WM_ACTION_RESIZE,
|
||||||
_NET_WM_ALLOWED_ACTIONS,
|
_NET_WM_ALLOWED_ACTIONS,
|
||||||
|
_NET_WM_NAME,
|
||||||
_NET_WM_STATE,
|
_NET_WM_STATE,
|
||||||
_NET_WM_STATE_ABOVE,
|
_NET_WM_STATE_ABOVE,
|
||||||
_NET_WM_STATE_FULLSCREEN,
|
_NET_WM_STATE_FULLSCREEN,
|
||||||
|
@ -639,6 +640,7 @@ struct ewmh_hint {
|
||||||
{"_NET_WM_ACTION_MOVE", XCB_ATOM_NONE},
|
{"_NET_WM_ACTION_MOVE", XCB_ATOM_NONE},
|
||||||
{"_NET_WM_ACTION_RESIZE", XCB_ATOM_NONE},
|
{"_NET_WM_ACTION_RESIZE", XCB_ATOM_NONE},
|
||||||
{"_NET_WM_ALLOWED_ACTIONS", XCB_ATOM_NONE},
|
{"_NET_WM_ALLOWED_ACTIONS", XCB_ATOM_NONE},
|
||||||
|
{"_NET_WM_NAME", XCB_ATOM_NONE},
|
||||||
{"_NET_WM_STATE", XCB_ATOM_NONE},
|
{"_NET_WM_STATE", XCB_ATOM_NONE},
|
||||||
{"_NET_WM_STATE_ABOVE", XCB_ATOM_NONE},
|
{"_NET_WM_STATE_ABOVE", XCB_ATOM_NONE},
|
||||||
{"_NET_WM_STATE_FULLSCREEN", XCB_ATOM_NONE},
|
{"_NET_WM_STATE_FULLSCREEN", XCB_ATOM_NONE},
|
||||||
|
@ -3940,21 +3942,32 @@ get_win_name(xcb_window_t win)
|
||||||
{
|
{
|
||||||
char *name = NULL;
|
char *name = NULL;
|
||||||
xcb_get_property_cookie_t c;
|
xcb_get_property_cookie_t c;
|
||||||
xcb_icccm_get_text_property_reply_t r;
|
xcb_get_property_reply_t *r;
|
||||||
|
|
||||||
c = xcb_icccm_get_wm_name(conn, win);
|
/* First try _NET_WM_NAME for UTF-8. */
|
||||||
if (xcb_icccm_get_wm_name_reply(conn, c, &r, NULL)) {
|
c = xcb_get_property(conn, 0, win, a_netwmname,
|
||||||
if (r.name_len > 0) {
|
XCB_GET_PROPERTY_TYPE_ANY, 0, UINT_MAX);
|
||||||
name = malloc(r.name_len + 1);
|
r = xcb_get_property_reply(conn, c, NULL);
|
||||||
if (name) {
|
|
||||||
memcpy(name, r.name, r.name_len);
|
if (!r || r->type == XCB_NONE) {
|
||||||
name[r.name_len] = '\0';
|
free(r);
|
||||||
}
|
/* Use WM_NAME instead; no UTF-8. */
|
||||||
|
c = xcb_get_property(conn, 0, win, XCB_ATOM_WM_NAME,
|
||||||
|
XCB_GET_PROPERTY_TYPE_ANY, 0, UINT_MAX);
|
||||||
|
r = xcb_get_property_reply(conn, c, NULL);
|
||||||
|
|
||||||
|
if(!r || r->type == XCB_NONE) {
|
||||||
|
free(r);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
xcb_icccm_get_text_property_reply_wipe(&r);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (name);
|
if (r->length > 0)
|
||||||
|
name = strndup(xcb_get_property_value(r),
|
||||||
|
xcb_get_property_value_length(r));
|
||||||
|
|
||||||
|
free(r);
|
||||||
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Add table
Reference in a new issue