diff options
author | emersion <contact@emersion.fr> | 2018-05-04 20:44:00 +0100 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2018-05-04 20:44:00 +0100 |
commit | cf10cbc00ca714e28b37118d42fd5af64e3bbf13 (patch) | |
tree | 5f38d3579a75780ca0ed407ecfef8de30738714f | |
parent | caf9f9022c32216da562f4ca6f6d8fb5c101d0ae (diff) |
Use UTF-8 xwayland window title if available
-rw-r--r-- | include/wlr/xwayland.h | 1 | ||||
-rw-r--r-- | xwayland/xwm.c | 7 |
2 files changed, 6 insertions, 2 deletions
diff --git a/include/wlr/xwayland.h b/include/wlr/xwayland.h index b2c23667..53c777d7 100644 --- a/include/wlr/xwayland.h +++ b/include/wlr/xwayland.h @@ -103,6 +103,7 @@ struct wlr_xwayland_surface { char *class; char *instance; pid_t pid; + bool has_utf8_title; struct wl_list children; // wlr_xwayland_surface::parent_link struct wlr_xwayland_surface *parent; diff --git a/xwayland/xwm.c b/xwayland/xwm.c index b97a1753..7c9cd304 100644 --- a/xwayland/xwm.c +++ b/xwayland/xwm.c @@ -353,8 +353,10 @@ static void read_surface_title(struct wlr_xwm *xwm, return; } - // TODO: if reply->type == XCB_ATOM_STRING, uses latin1 encoding - // if reply->type == xwm->atoms[UTF8_STRING], uses utf8 encoding + bool is_utf8 = reply->type == xwm->atoms[UTF8_STRING]; + if (!is_utf8 && xsurface->has_utf8_title) { + return; + } size_t len = xcb_get_property_value_length(reply); char *title = xcb_get_property_value(reply); @@ -365,6 +367,7 @@ static void read_surface_title(struct wlr_xwm *xwm, } else { xsurface->title = NULL; } + xsurface->has_utf8_title = is_utf8; wlr_log(L_DEBUG, "XCB_ATOM_WM_NAME: %s", xsurface->title); wlr_signal_emit_safe(&xsurface->events.set_title, xsurface); |