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