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

Reply via email to