Author: matt
Date: 2011-10-01 08:53:57 -0700 (Sat, 01 Oct 2011)
New Revision: 9110
Log:
STR 2713: less restrictive XClass handling.

Modified:
   branches/branch-1.3/src/Fl_x.cxx

Modified: branches/branch-1.3/src/Fl_x.cxx
===================================================================
--- branches/branch-1.3/src/Fl_x.cxx    2011-10-01 15:43:32 UTC (rev 9109)
+++ branches/branch-1.3/src/Fl_x.cxx    2011-10-01 15:53:57 UTC (rev 9110)
@@ -1748,16 +1748,17 @@
     // set the class property, which controls the icon used:
     if (win->xclass()) {
       char buffer[1024];
-      char *p; const char *q;
-      // truncate on any punctuation, because they break XResource lookup:
-      for (p = buffer, q = win->xclass(); isalnum(*q)||(*q&128);) *p++ = *q++;
-      *p++ = 0;
+      const char *xclass = win->xclass();
+      const int len = strlen(xclass);
+      // duplicate the xclass string for use as XA_WM_CLASS
+      strcpy(buffer, xclass);
+      strcpy(buffer + len + 1, xclass);
       // create the capitalized version:
-      q = buffer;
-      *p = toupper(*q++); if (*p++ == 'X') *p++ = toupper(*q++);
-      while ((*p++ = *q++));
+      buffer[len + 1] = toupper(buffer[len + 1]);
+      if (buffer[len + 1] == 'X')
+        buffer[len + 2] = toupper(buffer[len + 2]);
       XChangeProperty(fl_display, xp->xid, XA_WM_CLASS, XA_STRING, 8, 0,
-                      (unsigned char *)buffer, p-buffer-1);
+                      (unsigned char *)buffer, len * 2 + 2);
     }
 
     if (win->non_modal() && xp->next && !fl_disable_transient_for) {

_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit

Reply via email to