aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2018-05-04 20:44:00 +0100
committeremersion <contact@emersion.fr>2018-05-04 20:44:00 +0100
commitcf10cbc00ca714e28b37118d42fd5af64e3bbf13 (patch)
tree5f38d3579a75780ca0ed407ecfef8de30738714f
parentcaf9f9022c32216da562f4ca6f6d8fb5c101d0ae (diff)
Use UTF-8 xwayland window title if available
-rw-r--r--include/wlr/xwayland.h1
-rw-r--r--xwayland/xwm.c7
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);