JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
Add umlaut support for title change.
authorChristoph Lohmann <20h@r-36.net>
Sat, 23 Feb 2013 20:20:21 +0000 (21:20 +0100)
committerChristoph Lohmann <20h@r-36.net>
Sat, 23 Feb 2013 20:20:21 +0000 (21:20 +0100)
Thanks Alexander Sedov <alex0player@gmail.com>!

TODO
st.c

diff --git a/TODO b/TODO
index 2f42720..67615f8 100644 (file)
--- a/TODO
+++ b/TODO
@@ -18,7 +18,6 @@ bugs
 
 * fix shift up/down (shift selection in emacs)
 * fix selection paste for xatom STRING
-* fix umlaut handling in settitle
 * fix rows and column definition in fixed geometry
 * fix -e handling
 * remove DEC test sequence when appropriate
diff --git a/st.c b/st.c
index c6a840d..6117c92 100644 (file)
--- a/st.c
+++ b/st.c
@@ -1861,12 +1861,9 @@ csireset(void) {
 void
 strhandle(void) {
        char *p = NULL;
-       int i, j;
-       int narg;
+       int i, j, narg;
+       XTextProperty prop;
 
-       /*
-        * TODO: make this being useful in case of color palette change.
-        */
        strparse();
        narg = strescseq.narg;
 
@@ -1876,11 +1873,12 @@ strhandle(void) {
                case 0:
                case 1:
                case 2:
-                       /*
-                        * TODO: Handle special chars in string, like umlauts.
-                        */
-                       if(narg > 1)
-                               XStoreName(xw.dpy, xw.win, strescseq.args[2]);
+                       if(narg > 1) {
+                               p += 2;
+                               Xutf8TextListToTextProperty(xw.dpy, &p, 1,
+                                               XUTF8StringStyle, &prop);
+                               XSetWMName(xw.dpy, xw.win, &prop);
+                       }
                        break;
                case 4: /* color set */
                        if(narg < 3)
@@ -1902,7 +1900,10 @@ strhandle(void) {
                }
                break;
        case 'k': /* old title set compatibility */
-               XStoreName(xw.dpy, xw.win, strescseq.buf);
+               p += 1;
+               Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle,
+                               &prop);
+               XSetWMName(xw.dpy, xw.win, &prop);
                break;
        case 'P': /* DSC -- Device Control String */
        case '_': /* APC -- Application Program Command */