Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: ipc.c snaps.c Log Message: Fix remembered settings for apps setting WM_WINDOW_ROLE to random like value "<name>-<pid>-<something>-<time>". =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/ipc.c,v retrieving revision 1.185 retrieving revision 1.186 diff -u -3 -r1.185 -r1.186 --- ipc.c 17 Nov 2004 19:31:11 -0000 1.185 +++ ipc.c 21 Nov 2004 09:30:18 -0000 1.186 @@ -5763,6 +5763,7 @@ IpcPrintf("WM_NAME %s\n" "WM_ICON_NAME %s\n" "WM_CLASS name.class %s.%s\n" + "WM_WINDOW_ROLE %s\n" "WM_COMMAND %s\n" "WM_CLIENT_MACHINE %s\n" "Client window %#10lx x,y %4i,%4i wxh %4ix%4i\n" @@ -5785,6 +5786,7 @@ SS(ewin->icccm.wm_name), SS(ewin->icccm.wm_icon_name), SS(ewin->icccm.wm_res_name), SS(ewin->icccm.wm_res_class), + SS(ewin->icccm.wm_role), SS(ewin->icccm.wm_command), SS(ewin->icccm.wm_machine), ewin->client.win, =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/snaps.c,v retrieving revision 1.72 retrieving revision 1.73 diff -u -3 -r1.72 -r1.73 --- snaps.c 3 Jul 2004 09:57:13 -0000 1.72 +++ snaps.c 21 Nov 2004 09:30:19 -0000 1.73 @@ -24,14 +24,39 @@ static Snapshot *NewSnapshot(const char *name); +/* + * Stupid hack to fix apps that set WM_WINDOW_ROLE to + * a <name>-<pid>-<something>-<time> like thing. + * Is this even ICCCM compliant? + */ +static const char * +SnapGetRole(const char *role, char *buf, int len) +{ + int l1, l2; + + l1 = strlen(role); + if (l1 >= len) + l1 = len - 1; + l2 = strcspn(role, "-0123456789"); + if (l1 - l2 > 8) + l1 = l2; + memcpy(buf, role, l1); + buf[l1] = '\0'; + + return buf; +} + /* Format the window identifier string */ static int EwinMakeID(EWin * ewin, char *buf, int len) { + char s[256]; + if ((ewin->icccm.wm_role) && (ewin->icccm.wm_res_name) && (ewin->icccm.wm_res_class)) Esnprintf(buf, len, "%s.%s:%s", ewin->icccm.wm_res_name, - ewin->icccm.wm_res_class, ewin->icccm.wm_role); + ewin->icccm.wm_res_class, + SnapGetRole(ewin->icccm.wm_role, s, sizeof(s))); else if ((ewin->icccm.wm_res_name) && (ewin->icccm.wm_res_class)) Esnprintf(buf, len, "%s.%s", ewin->icccm.wm_res_name, ewin->icccm.wm_res_class); ------------------------------------------------------- This SF.Net email is sponsored by: InterSystems CACHE FREE OODBMS DOWNLOAD - A multidimensional database that combines robust object and relational technologies, making it a perfect match for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8 _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs