From cf10cbc00ca714e28b37118d42fd5af64e3bbf13 Mon Sep 17 00:00:00 2001 From: emersion Date: Fri, 4 May 2018 20:44:00 +0100 Subject: [PATCH] Use UTF-8 xwayland window title if available --- include/wlr/xwayland.h | 1 + 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);