Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: Tag: branch-exp ipc.c snaps.c Log Message: Merge. =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/ipc.c,v retrieving revision 1.174.2.35 retrieving revision 1.174.2.36 diff -u -3 -r1.174.2.35 -r1.174.2.36 --- ipc.c 20 Nov 2004 20:48:57 -0000 1.174.2.35 +++ ipc.c 21 Nov 2004 09:43:02 -0000 1.174.2.36 @@ -1371,6 +1371,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" @@ -1393,6 +1394,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.2.7 retrieving revision 1.72.2.8 diff -u -3 -r1.72.2.7 -r1.72.2.8 --- snaps.c 20 Oct 2004 21:04:12 -0000 1.72.2.7 +++ snaps.c 21 Nov 2004 09:43:02 -0000 1.72.2.8 @@ -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