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