st

fork of suckless's simple terminal
Index Commits Files Refs README LICENSE
commit efaf1c2a94ed9193c04c3a67f374d31f988b0e9a
parent 1b6c6535c10172facb350f4b8fef442f7f8ddc5a
Author: Christoph Lohmann <20h@r-36.net>
Date:   Sat, 23 Feb 2013 21:20:21 +0100

Add umlaut support for title change.

Thanks Alexander Sedov <alex0player@gmail.com>!

Diffstat:
MTODO | 1-
Mst.c | 23++++++++++++-----------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git 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
@@ -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 */