Index: ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc |
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc |
index 56e485c2059b4572ea3c930494b8dc2701e32711..f9bfc3afda2b0049b042e09493c38f5de259b7b0 100644 |
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc |
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc |
@@ -632,11 +632,24 @@ bool DesktopWindowTreeHostX11::SetWindowTitle(const base::string16& title) { |
PropModeReplace, |
reinterpret_cast<const unsigned char*>(utf8str.c_str()), |
utf8str.size()); |
- // TODO(erg): This is technically wrong. So XStoreName and friends expect |
- // this in Host Portable Character Encoding instead of UTF-8, which I believe |
- // is Compound Text. This shouldn't matter 90% of the time since this is the |
- // fallback to the UTF8 property above. |
- XStoreName(xdisplay_, xwindow_, utf8str.c_str()); |
+ XTextProperty xtp; |
+ char *c_utf8_str = const_cast<char *>(utf8str.c_str()); |
+ const int err = |
+ Xutf8TextListToTextProperty(xdisplay_, &c_utf8_str, 1, |
+ XCompoundTextStyle, &xtp); |
sadrul
2014/08/13 02:28:19
Looks like XICCEncodingStyle can be = XUTF8StringS
|
+ if (err != Success) { |
+ XFree(xtp.value); |
+ const std::string ascii_str = base::UTF16ToASCII(title); |
sadrul
2014/08/13 02:28:19
The doc for UTF16ToASCII() states "The result must
|
+ xtp.encoding = XA_STRING; |
+ xtp.format = 8; |
+ xtp.value = reinterpret_cast<unsigned char *> |
+ (const_cast<char *>(ascii_str.c_str())); |
+ xtp.nitems = ascii_str.size(); |
+ XSetWMName(xdisplay_, xwindow_, &xtp); |
+ } else { |
+ XSetWMName(xdisplay_, xwindow_, &xtp); |
+ XFree(xtp.value); |
+ } |
return true; |
} |