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