Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        E.h borders.c comms.c evhandlers.c ewmh.c finders.c focus.c 
        gnome.c groups.c icccm.c iconify.c ipc.c menus.c pager.c 
        session.c settings.c snaps.c tclass.c text.c tooltips.c warp.c 
        windowmatch.c 


Log Message:
Preparing for _NET_WM_NAME (UTF-8).
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.214
retrieving revision 1.215
diff -u -3 -r1.214 -r1.215
--- E.h 28 Feb 2004 15:13:57 -0000      1.214
+++ E.h 29 Feb 2004 01:30:16 -0000      1.215
@@ -23,7 +23,7 @@
  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
-
+#define _GNU_SOURCE
 #include "config.h"
 
 #include <X11/Xlib.h>
@@ -35,7 +35,8 @@
 #include <X11/extensions/shape.h>
 #include <X11/extensions/XShm.h>
 
-#define USE_STRDUP  1
+#define USE_STRDUP  1          /* Use libc strdup if present */
+#define USE_STRNDUP 1          /* Use libc strndup if present */
 #define DEBUG_EWMH  0
 
 #define ESetColor(pxc, r, g, b) \
@@ -858,7 +859,6 @@
 typedef struct _winclient
 {
    Window              win;
-   char               *title;
    int                 x, y, w, h, bw;
    Colormap            cmap;
    Window              icon_win;
@@ -870,12 +870,6 @@
    char                need_input;
    char                transient;
    Window              transient_for;
-   char               *class;
-   char               *name;
-   char               *role;
-   char               *command;
-   char               *machine;
-   char               *icon_name;
    char                is_group_leader;
    char                no_resize_h;
    char                no_resize_v;
@@ -967,6 +961,21 @@
    PmapMask            icon_pmm;
    int                 icon_w, icon_h;
    int                 head;
+   struct
+   {
+      char               *wm_name;
+      char               *wm_icon_name;
+      char               *wm_res_name;
+      char               *wm_res_class;
+      char               *wm_role;
+      char               *wm_command;
+      char               *wm_machine;
+   } icccm;
+   struct
+   {
+      char               *wm_name;
+      char               *wm_icon_name;
+   } ewmh;
 }
 EWin;
 
@@ -1634,6 +1643,12 @@
 void                deleteHint(Window win, Atom atom);
 
 /* borders.c */
+#define EWIN_CHANGE_NAME        (1<<0)
+#define EWIN_CHANGE_ICON_NAME   (1<<1)
+#define EWIN_CHANGE_ICON_PMAP   (1<<2)
+#define EWIN_CHANGE_DESKTOP     (1<<3)
+#define EWIN_CHANGE_LAYER       (1<<4)
+
 void                KillEwin(EWin * ewin, int nogroup);
 void                EwinUpdateAfterMoveResize(EWin * ewin, int resize);
 void                ResizeEwin(EWin * ewin, int w, int h);
@@ -1694,10 +1709,16 @@
 void                EwinSetArea(EWin * ewin, int ax, int ay);
 void                MoveEwinToArea(EWin * ewin, int ax, int ay);
 void                SetEwinToCurrentArea(EWin * ewin);
-int                 EwinGetDesk(EWin * ewin);
+int                 EwinGetDesk(const EWin * ewin);
+const char         *EwinGetTitle(const EWin * ewin);
+const char         *EwinGetIconName(const EWin * ewin);
 int                 EwinIsOnScreen(EWin * ewin);
 int                 EwinWinpartIndex(EWin * ewin, Window win);
 
+void                EwinChange(EWin * ewin, unsigned int flag);
+void                EwinChangesStart(EWin * ewin);
+void                EwinChangesProcess(EWin * ewin);
+
 int                 BordersEventMouseDown(XEvent * ev);
 int                 BordersEventMouseUp(XEvent * ev);
 int                 BordersEventMouseIn(XEvent * ev);
@@ -1997,6 +2018,8 @@
 void                EWMH_SetActiveWindow(const EWin * ewin);
 void                EWMH_SetWindowDesktop(const EWin * ewin);
 void                EWMH_SetWindowState(const EWin * ewin);
+void                EWMH_GetWindowName(EWin * ewin);
+void                EWMH_GetWindowIconName(EWin * ewin);
 void                EWMH_GetWindowDesktop(EWin * ewin);
 void                EWMH_GetWindowState(EWin * ewin);
 void                EWMH_GetWindowHints(EWin * ewin);
@@ -2288,7 +2311,7 @@
 void                MenuRepack(Menu * m);
 void                MenuEmpty(Menu * m);
 void                MenuMove(Menu * m);
-MenuItem           *MenuItemCreate(char *text, ImageClass * iclass,
+MenuItem           *MenuItemCreate(const char *text, ImageClass * iclass,
                                   int action_id, char *action_params,
                                   Menu * child);
 void                MenuAddItem(Menu * menu, MenuItem * item);
@@ -2526,7 +2549,7 @@
 void                TclassPopulate(TextClass * tclass);
 void                TclassApply(ImageClass * iclass, Window win, int w, int h,
                                int active, int sticky, int state, char expose,
-                               TextClass * tclass, char *text);
+                               TextClass * tclass, const char *text);
 
 /* text.c */
 TextState          *TextGetState(TextClass * tclass, int active, int sticky,
@@ -2537,8 +2560,8 @@
                             int state, const char *text, int *width,
                             int *height, int fsize);
 void                TextDraw(TextClass * tclass, Window win, int active,
-                            int sticky, int state, char *text, int x, int y,
-                            int w, int h, int fsize, int justification);
+                            int sticky, int state, const char *text, int x,
+                            int y, int w, int h, int fsize, int justification);
 
 /* theme.c */
 char               *ThemeGetDefault(void);
@@ -2563,8 +2586,8 @@
                                  ImageClass * ic3, ImageClass * ic4,
                                  TextClass * tclass, int dist,
                                  ImageClass * tooltippic);
-void                ShowToolTip(ToolTip * tt, char *text, ActionClass * ac,
-                               int x, int y);
+void                ShowToolTip(ToolTip * tt, const char *text,
+                               ActionClass * ac, int x, int y);
 void                HideToolTip(ToolTip * tt);
 void                FreeToolTip(ToolTip * tt);
 
@@ -2696,7 +2719,7 @@
 #else
 char               *Estrdup(const char *s);
 #endif
-#if defined(USE_STRDUP) && defined(HAVE_STRNDUP)
+#if defined(USE_STRNDUP) && defined(HAVE_STRNDUP)
 #define Estrndup(s,n) ((s) ? strndup(s,n) : NULL)
 #else
 char               *Estrndup(const char *s, int n);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/borders.c,v
retrieving revision 1.140
retrieving revision 1.141
diff -u -3 -r1.140 -r1.141
--- borders.c   28 Feb 2004 15:13:58 -0000      1.140
+++ borders.c   29 Feb 2004 01:30:16 -0000      1.141
@@ -841,7 +841,7 @@
           TclassApply(ewin->border->part[i].iclass, ewin->bits[i].win,
                       ewin->bits[i].w, ewin->bits[i].h, ewin->active,
                       ewin->sticky, state, ewin->bits[i].expose,
-                      ewin->border->part[i].tclass, ewin->client.title);
+                      ewin->border->part[i].tclass, EwinGetTitle(ewin));
        ret = 1;
      }
    if ((move) || (resize))
@@ -870,7 +870,7 @@
       TclassApply(ewin->border->part[i].iclass, ewin->bits[i].win,
                  ewin->bits[i].w, ewin->bits[i].h, ewin->active,
                  ewin->sticky, state, ewin->bits[i].expose,
-                 ewin->border->part[i].tclass, ewin->client.title);
+                 ewin->border->part[i].tclass, EwinGetTitle(ewin));
    if (ewin->bits[i].win)
       ChangeEwinWinpartContents(ewin, i);
    if (!ewin->shapedone)
@@ -904,7 +904,7 @@
           TclassApply(ewin->border->part[i].iclass, ewin->bits[i].win,
                       ewin->bits[i].w, ewin->bits[i].h, ewin->active,
                       ewin->sticky, state, ewin->bits[i].expose,
-                      ewin->border->part[i].tclass, ewin->client.title);
+                      ewin->border->part[i].tclass, EwinGetTitle(ewin));
      }
    if (!ewin->shapedone)
       PropagateShapes(ewin->win);
@@ -930,7 +930,7 @@
        TclassApply(ewin->border->part[i].iclass, ewin->bits[i].win,
                    ewin->bits[i].w, ewin->bits[i].h, ewin->active,
                    ewin->sticky, state, ewin->bits[i].expose,
-                   ewin->border->part[i].tclass, ewin->client.title);
+                   ewin->border->part[i].tclass, EwinGetTitle(ewin));
        break;
      case FLAG_MINIICON:
        break;
@@ -1034,7 +1034,7 @@
        iclass = ewin->border->part[i].iclass;
        tclass = ewin->border->part[i].tclass;
        TextSize(tclass, ewin->active, ewin->sticky, ewin->bits[i].state,
-                ewin->client.title, &max, &dummywidth,
+                EwinGetTitle(ewin), &max, &dummywidth,
                 w - (iclass->padding.top + iclass->padding.bottom));
        max += iclass->padding.left + iclass->padding.right;
        if (h > max)
@@ -1081,7 +1081,7 @@
             iclass = ewin->border->part[i].iclass;
             tclass = ewin->border->part[i].tclass;
             TextSize(tclass, ewin->active, ewin->sticky, ewin->bits[i].state,
-                     ewin->client.title, &max, &dummyheight,
+                     EwinGetTitle(ewin), &max, &dummyheight,
                      h - (iclass->padding.top + iclass->padding.bottom));
             max += iclass->padding.left + iclass->padding.right;
 
@@ -1403,20 +1403,24 @@
      }
    if (ewin->border)
       ewin->border->ref_count--;
-   if (ewin->client.title)
-      Efree(ewin->client.title);
-   if (ewin->client.class)
-      Efree(ewin->client.class);
-   if (ewin->client.name)
-      Efree(ewin->client.name);
-   if (ewin->client.role)
-      Efree(ewin->client.role);
-   if (ewin->client.command)
-      Efree(ewin->client.command);
-   if (ewin->client.machine)
-      Efree(ewin->client.machine);
-   if (ewin->client.icon_name)
-      Efree(ewin->client.icon_name);
+   if (ewin->icccm.wm_name)
+      Efree(ewin->icccm.wm_name);
+   if (ewin->icccm.wm_res_class)
+      Efree(ewin->icccm.wm_res_class);
+   if (ewin->icccm.wm_res_name)
+      Efree(ewin->icccm.wm_res_name);
+   if (ewin->icccm.wm_role)
+      Efree(ewin->icccm.wm_role);
+   if (ewin->icccm.wm_command)
+      Efree(ewin->icccm.wm_command);
+   if (ewin->icccm.wm_machine)
+      Efree(ewin->icccm.wm_machine);
+   if (ewin->ewmh.wm_name)
+      Efree(ewin->ewmh.wm_name);
+   if (ewin->ewmh.wm_icon_name)
+      Efree(ewin->ewmh.wm_icon_name);
+   if (ewin->icccm.wm_icon_name)
+      Efree(ewin->icccm.wm_icon_name);
    if (ewin->win)
       EDestroyWindow(disp, ewin->win);
    if (ewin->bits)
@@ -3175,11 +3179,49 @@
 }
 
 int
-EwinGetDesk(EWin * ewin)
+EwinGetDesk(const EWin * ewin)
 {
    return (ewin->sticky) ? desks.current : ewin->desktop;
 }
 
+const char         *
+EwinGetTitle(const EWin * ewin)
+{
+   const char         *name;
+
+#if 0                          /* ENABLE_EWMH */
+   name = ewin->ewmh.wm_name;
+   if (name)
+      goto exit;
+#endif
+   name = ewin->icccm.wm_name;
+   if (name)
+      goto exit;
+
+ exit:
+   return (name && strlen(name)) ? name : NULL;
+}
+
+const char         *
+EwinGetIconName(const EWin * ewin)
+{
+   const char         *name;
+
+#if 0                          /* ENABLE_EWMH */
+   name = ewin->ewmh.wm_icon_name;
+   if (name)
+      goto exit;
+#endif
+   name = ewin->icccm.wm_icon_name;
+   if (name)
+      goto exit;
+
+   return EwinGetTitle(ewin);
+
+ exit:
+   return (name && strlen(name)) ? name : NULL;
+}
+
 int
 EwinIsOnScreen(EWin * ewin)
 {
@@ -3216,6 +3258,59 @@
 }
 
 /*
+ * Change requests
+ */
+static struct
+{
+   unsigned int        flags;
+   EWin                ewin_old;
+} EWinChanges;
+
+void
+EwinChange(EWin * ewin, unsigned int flag)
+{
+   EWinChanges.flags |= flag;
+}
+
+void
+EwinChangesStart(EWin * ewin)
+{
+   EWinChanges.flags = 0;
+   /* Brute force :) */
+   EWinChanges.ewin_old = *ewin;
+}
+
+void
+EwinChangesProcess(EWin * ewin)
+{
+   if (!EWinChanges.flags)
+      return;
+
+   if (EWinChanges.flags & EWIN_CHANGE_NAME)
+     {
+       UpdateBorderInfo(ewin);
+       CalcEwinSizes(ewin);
+     }
+   if (EWinChanges.flags & EWIN_CHANGE_DESKTOP)
+     {
+       int                 desk = ewin->desktop;
+
+       if (desk != EWinChanges.ewin_old.desktop && !ewin->sticky)
+         {
+            ewin->desktop = EWinChanges.ewin_old.desktop;
+            MoveEwinToDesktop(ewin, desk);
+         }
+     }
+   if (EWinChanges.flags & EWIN_CHANGE_ICON_PMAP)
+     {
+       if (ewin->iconified)
+          IconboxesUpdateEwinIcon(ewin, 1);
+     }
+
+   EWinChanges.flags = 0;
+}
+
+/*
  * Border event handlers
  */
 typedef void        (border_event_func_t) (XEvent * ev, EWin * ewin, int part);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/comms.c,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -3 -r1.51 -r1.52
--- comms.c     28 Feb 2004 15:13:58 -0000      1.51
+++ comms.c     29 Feb 2004 01:30:16 -0000      1.52
@@ -1600,18 +1600,18 @@
        ewin = (EWin *) FindItem(NULL, win, LIST_FINDBY_ID, LIST_TYPE_EWIN);
        if (ewin)
          {
-            if (!ewin->client.title)
-               ewin->client.title = none;
-            if (!ewin->client.class)
-               ewin->client.class = none;
-            if (!ewin->client.name)
-               ewin->client.name = none;
-            if (!ewin->client.command)
-               ewin->client.command = none;
-            if (!ewin->client.machine)
-               ewin->client.machine = none;
-            if (!ewin->client.icon_name)
-               ewin->client.icon_name = none;
+            if (!ewin->icccm.wm_name)
+               ewin->icccm.wm_name = none;
+            if (!ewin->icccm.wm_res_class)
+               ewin->icccm.wm_res_class = none;
+            if (!ewin->icccm.wm_res_name)
+               ewin->icccm.wm_res_name = none;
+            if (!ewin->icccm.wm_command)
+               ewin->icccm.wm_command = none;
+            if (!ewin->icccm.wm_machine)
+               ewin->icccm.wm_machine = none;
+            if (!ewin->icccm.wm_icon_name)
+               ewin->icccm.wm_icon_name = none;
             if (ewin->border)
               {
                  Esnprintf(buf, sizeof(buf),
@@ -1675,9 +1675,9 @@
                            (unsigned)ewin->client.icon_mask,
                            (unsigned)ewin->client.group,
                            ewin->client.need_input, ewin->client.transient,
-                           ewin->client.title, ewin->client.class,
-                           ewin->client.name, ewin->client.command,
-                           ewin->client.machine, ewin->client.icon_name,
+                           ewin->icccm.wm_name, ewin->icccm.wm_res_class,
+                           ewin->icccm.wm_res_name, ewin->icccm.wm_command,
+                           ewin->icccm.wm_machine, ewin->icccm.wm_icon_name,
                            ewin->client.is_group_leader,
                            ewin->client.no_resize_h, ewin->client.no_resize_v,
                            ewin->client.shaped, ewin->client.width.min,
@@ -1754,9 +1754,9 @@
                            (unsigned)ewin->client.icon_mask,
                            (unsigned)ewin->client.group,
                            ewin->client.need_input, ewin->client.transient,
-                           ewin->client.title, ewin->client.class,
-                           ewin->client.name, ewin->client.command,
-                           ewin->client.machine, ewin->client.icon_name,
+                           ewin->icccm.wm_name, ewin->icccm.wm_res_class,
+                           ewin->icccm.wm_res_name, ewin->icccm.wm_command,
+                           ewin->icccm.wm_machine, ewin->icccm.wm_icon_name,
                            ewin->client.is_group_leader,
                            ewin->client.no_resize_h, ewin->client.no_resize_v,
                            ewin->client.shaped, ewin->client.width.min,
@@ -1773,18 +1773,18 @@
                            ewin->client.mwm_decor_maximize,
                            ewin->client.app_state);
               }
-            if (ewin->client.title == none)
-               ewin->client.title = NULL;
-            if (ewin->client.class == none)
-               ewin->client.class = NULL;
-            if (ewin->client.name == none)
-               ewin->client.name = NULL;
-            if (ewin->client.command == none)
-               ewin->client.command = NULL;
-            if (ewin->client.machine == none)
-               ewin->client.machine = NULL;
-            if (ewin->client.icon_name == none)
-               ewin->client.icon_name = NULL;
+            if (ewin->icccm.wm_name == none)
+               ewin->icccm.wm_name = NULL;
+            if (ewin->icccm.wm_res_class == none)
+               ewin->icccm.wm_res_class = NULL;
+            if (ewin->icccm.wm_res_name == none)
+               ewin->icccm.wm_res_name = NULL;
+            if (ewin->icccm.wm_command == none)
+               ewin->icccm.wm_command = NULL;
+            if (ewin->icccm.wm_machine == none)
+               ewin->icccm.wm_machine = NULL;
+            if (ewin->icccm.wm_icon_name == none)
+               ewin->icccm.wm_icon_name = NULL;
          }
        else
          {
@@ -1824,18 +1824,18 @@
        lst = (EWin **) ListItemType(&num, LIST_TYPE_EWIN);
        for (i = 0; i < num; i++)
          {
-            if (!lst[i]->client.title)
-               lst[i]->client.title = none;
-            if (!lst[i]->client.class)
-               lst[i]->client.class = none;
-            if (!lst[i]->client.name)
-               lst[i]->client.name = none;
-            if (!lst[i]->client.command)
-               lst[i]->client.command = none;
-            if (!lst[i]->client.machine)
-               lst[i]->client.machine = none;
-            if (!lst[i]->client.icon_name)
-               lst[i]->client.icon_name = none;
+            if (!lst[i]->icccm.wm_name)
+               lst[i]->icccm.wm_name = none;
+            if (!lst[i]->icccm.wm_res_class)
+               lst[i]->icccm.wm_res_class = none;
+            if (!lst[i]->icccm.wm_res_name)
+               lst[i]->icccm.wm_res_name = none;
+            if (!lst[i]->icccm.wm_command)
+               lst[i]->icccm.wm_command = none;
+            if (!lst[i]->icccm.wm_machine)
+               lst[i]->icccm.wm_machine = none;
+            if (!lst[i]->icccm.wm_icon_name)
+               lst[i]->icccm.wm_icon_name = none;
             if (lst[i]->border)
               {
                  Esnprintf(buf, sizeof(buf),
@@ -1900,9 +1900,10 @@
                            (unsigned)lst[i]->client.icon_mask,
                            (unsigned)lst[i]->client.group,
                            lst[i]->client.need_input, lst[i]->client.transient,
-                           lst[i]->client.title, lst[i]->client.class,
-                           lst[i]->client.name, lst[i]->client.command,
-                           lst[i]->client.machine, lst[i]->client.icon_name,
+                           lst[i]->icccm.wm_name, lst[i]->icccm.wm_res_class,
+                           lst[i]->icccm.wm_res_name, lst[i]->icccm.wm_command,
+                           lst[i]->icccm.wm_machine,
+                           lst[i]->icccm.wm_icon_name,
                            lst[i]->client.is_group_leader,
                            lst[i]->client.no_resize_h,
                            lst[i]->client.no_resize_v, lst[i]->client.shaped,
@@ -1980,9 +1981,10 @@
                            (unsigned)lst[i]->client.icon_mask,
                            (unsigned)lst[i]->client.group,
                            lst[i]->client.need_input, lst[i]->client.transient,
-                           lst[i]->client.title, lst[i]->client.class,
-                           lst[i]->client.name, lst[i]->client.command,
-                           lst[i]->client.machine, lst[i]->client.icon_name,
+                           lst[i]->icccm.wm_name, lst[i]->icccm.wm_res_class,
+                           lst[i]->icccm.wm_res_name, lst[i]->icccm.wm_command,
+                           lst[i]->icccm.wm_machine,
+                           lst[i]->icccm.wm_icon_name,
                            lst[i]->client.is_group_leader,
                            lst[i]->client.no_resize_h,
                            lst[i]->client.no_resize_v, lst[i]->client.shaped,
@@ -2000,18 +2002,18 @@
                            lst[i]->client.mwm_decor_maximize,
                            lst[i]->client.app_state);
               }
-            if (lst[i]->client.title == none)
-               lst[i]->client.title = NULL;
-            if (lst[i]->client.class == none)
-               lst[i]->client.class = NULL;
-            if (lst[i]->client.name == none)
-               lst[i]->client.name = NULL;
-            if (lst[i]->client.command == none)
-               lst[i]->client.command = NULL;
-            if (lst[i]->client.machine == none)
-               lst[i]->client.machine = NULL;
-            if (lst[i]->client.icon_name == none)
-               lst[i]->client.icon_name = NULL;
+            if (lst[i]->icccm.wm_name == none)
+               lst[i]->icccm.wm_name = NULL;
+            if (lst[i]->icccm.wm_res_class == none)
+               lst[i]->icccm.wm_res_class = NULL;
+            if (lst[i]->icccm.wm_res_name == none)
+               lst[i]->icccm.wm_res_name = NULL;
+            if (lst[i]->icccm.wm_command == none)
+               lst[i]->icccm.wm_command = NULL;
+            if (lst[i]->icccm.wm_machine == none)
+               lst[i]->icccm.wm_machine = NULL;
+            if (lst[i]->icccm.wm_icon_name == none)
+               lst[i]->icccm.wm_icon_name = NULL;
             if (!ret)
               {
                  ret = Emalloc(strlen(buf) + 1);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/evhandlers.c,v
retrieving revision 1.151
retrieving revision 1.152
diff -u -3 -r1.151 -r1.152
--- evhandlers.c        26 Feb 2004 19:33:21 -0000      1.151
+++ evhandlers.c        29 Feb 2004 01:30:17 -0000      1.152
@@ -394,53 +394,31 @@
 void
 HandleProperty(XEvent * ev)
 {
-   Window              win;
+   Window              win = ev->xproperty.window;
    EWin               *ewin;
-   char                title[10240];
-   int                 desktop;
 
    EDBUG(5, "HandleProperty");
 
-   win = ev->xproperty.window;
    ewin = FindItem(NULL, win, LIST_FINDBY_ID, LIST_TYPE_EWIN);
-   if (ewin)
-     {
-       Pixmap              pm;
-
-       GrabX();
-
-       pm = ewin->client.icon_pmap;
-       if (ewin->client.title)
-          strncpy(title, ewin->client.title, 10240);
-       desktop = ewin->desktop;
-       HintsProcessPropertyChange(ewin, ev->xproperty.atom);
-       if ((desktop != ewin->desktop) && (!ewin->sticky))
-          MoveEwinToDesktop(ewin, ewin->desktop);
-       ICCCM_GetTitle(ewin, ev->xproperty.atom);
-       ICCCM_GetHints(ewin, ev->xproperty.atom);
-       ICCCM_GetInfo(ewin, ev->xproperty.atom);
-       ICCCM_Cmap(ewin);
-       ICCCM_GetGeoms(ewin, ev->xproperty.atom);
-       SessionGetInfo(ewin, ev->xproperty.atom);
-       SyncBorderToEwin(ewin);
+   if (!ewin)
+      goto exit;
 
-       if (ewin->client.title)
-          if (strncmp(title, ewin->client.title, 10240))
-            {
-               UpdateBorderInfo(ewin);
-               CalcEwinSizes(ewin);
-            }
+   GrabX();
+   EwinChangesStart(ewin);
 
-       if ((ewin->iconified) && (pm != ewin->client.icon_pmap))
-          IconboxesUpdateEwinIcon(ewin, 1);
+   HintsProcessPropertyChange(ewin, ev->xproperty.atom);
+   ICCCM_GetTitle(ewin, ev->xproperty.atom);
+   ICCCM_GetHints(ewin, ev->xproperty.atom);
+   ICCCM_GetInfo(ewin, ev->xproperty.atom);
+   ICCCM_Cmap(ewin);
+   ICCCM_GetGeoms(ewin, ev->xproperty.atom);
+   SessionGetInfo(ewin, ev->xproperty.atom);
+   SyncBorderToEwin(ewin);
 
-       UngrabX();
-     }
-   else if (win == root.win)
-     {
-       /* we're in the root window, not in a client */
-     }
+   EwinChangesProcess(ewin);
+   UngrabX();
 
+ exit:
    EDBUG_RETURN_;
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewmh.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -3 -r1.35 -r1.36
--- ewmh.c      6 Feb 2004 19:56:26 -0000       1.35
+++ ewmh.c      29 Feb 2004 01:30:17 -0000      1.36
@@ -53,7 +53,6 @@
 Atom                E_XA_UTF8_STRING;
 
 /* Window manager info */
-Atom                _NET_WM_NAME;
 Atom                _NET_SUPPORTED;
 Atom                _NET_SUPPORTING_WM_CHECK;
 
@@ -96,6 +95,8 @@
 /*
  * Application Window Properties
  */
+Atom                _NET_WM_NAME;
+Atom                _NET_WM_ICON_NAME;
 Atom                _NET_WM_DESKTOP;
 
 /* _NET_WM_WINDOW_TYPE (window property) */
@@ -134,8 +135,6 @@
 #define NET_WM_FLAG_MAXIMIZED_VERT  0x01
 #define NET_WM_FLAG_MAXIMIZED_HORZ  0x02
 
-Atom                _NET_WM_ICON;
-
 /*
  * Set/clear Atom in list
  */
@@ -197,7 +196,6 @@
 
    atom_count = 0;
 
-   _ATOM_INIT(_NET_WM_NAME);
    _ATOM_INIT(_NET_SUPPORTED);
    _ATOM_INIT(_NET_SUPPORTING_WM_CHECK);
 
@@ -216,8 +214,9 @@
    _ATOM_INIT(_NET_CLOSE_WINDOW);
    _ATOM_INIT(_NET_WM_MOVERESIZE);
 
+   _ATOM_INIT(_NET_WM_NAME);
+   _ATOM_INIT(_NET_WM_ICON_NAME);
    _ATOM_INIT(_NET_WM_DESKTOP);
-   _ATOM_INIT(_NET_WM_ICON);
 
    _ATOM_INIT(_NET_WM_WINDOW_TYPE);
    _ATOM_INIT(_NET_WM_WINDOW_TYPE_DESKTOP);
@@ -501,6 +500,52 @@
  */
 
 void
+EWMH_GetWindowName(EWin * ewin)
+{
+   char               *val;
+   int                 size;
+
+   EDBUG(6, "EWMH_GetWindowName");
+
+   val = AtomGet(ewin->client.win, _NET_WM_NAME, E_XA_UTF8_STRING, &size);
+   if (!val)
+      goto exit;
+
+   if (ewin->ewmh.wm_name)
+      Efree(ewin->ewmh.wm_name);
+   ewin->ewmh.wm_name = Estrndup(val, size);
+
+   Efree(val);
+   EwinChange(ewin, EWIN_CHANGE_NAME);
+
+ exit:
+   EDBUG_RETURN_;
+}
+
+void
+EWMH_GetWindowIconName(EWin * ewin)
+{
+   char               *val;
+   int                 size;
+
+   EDBUG(6, "EWMH_GetWindowIconName");
+
+   val = AtomGet(ewin->client.win, _NET_WM_ICON_NAME, E_XA_UTF8_STRING, &size);
+   if (!val)
+      goto exit;
+
+   if (ewin->ewmh.wm_icon_name)
+      Efree(ewin->ewmh.wm_icon_name);
+   ewin->ewmh.wm_icon_name = Estrndup(val, size);
+
+   Efree(val);
+   EwinChange(ewin, EWIN_CHANGE_ICON_NAME);
+
+ exit:
+   EDBUG_RETURN_;
+}
+
+void
 EWMH_GetWindowDesktop(EWin * ewin)
 {
    CARD32             *val;
@@ -524,6 +569,7 @@
        ewin->sticky = 0;
      }
    Efree(val);
+   EwinChange(ewin, EWIN_CHANGE_DESKTOP);
 
  exit:
    EDBUG_RETURN_;
@@ -648,6 +694,8 @@
 EWMH_GetWindowHints(EWin * ewin)
 {
    EDBUG(6, "EWMH_GetWindowHints");
+   EWMH_GetWindowName(ewin);
+   EWMH_GetWindowIconName(ewin);
    EWMH_GetWindowDesktop(ewin);
    EWMH_GetWindowState(ewin);
    EWMH_GetWindowType(ewin);
@@ -876,11 +924,11 @@
 EWMH_ProcessPropertyChange(EWin * ewin, Atom atom_change)
 {
    EDBUG(6, "EWMH_ProcessPropertyChange");
-#if 0
-   if (atom_change == _NET_WM_DESKTOP)
-      EWMH_GetWindowDesktop(ewin);
-   else if (atom_change == _NET_WM_STATE)
-      EWMH_GetWindowState(ewin);
-#endif
+
+   if (atom_change == _NET_WM_NAME)
+      EWMH_GetWindowName(ewin);
+   else if (atom_change == _NET_WM_ICON_NAME)
+      EWMH_GetWindowIconName(ewin);
+
    EDBUG_RETURN_;
 }
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/finders.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -3 -r1.24 -r1.25
--- finders.c   6 Feb 2004 19:56:26 -0000       1.24
+++ finders.c   29 Feb 2004 01:30:17 -0000      1.25
@@ -109,7 +109,7 @@
        else if (type == '=')
          {
             /* Match name (substring) */
-            if (!strstr(ewins[i]->client.title, match))
+            if (!strstr(ewins[i]->icccm.wm_name, match))
                continue;
          }
        else
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/focus.c,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -3 -r1.51 -r1.52
--- focus.c     26 Feb 2004 19:33:21 -0000      1.51
+++ focus.c     29 Feb 2004 01:30:17 -0000      1.52
@@ -209,7 +209,7 @@
      {
        if (ewin)
           printf("FocusToEWin %#lx %s why=%d\n", ewin->client.win,
-                 ewin->client.name, why);
+                 ewin->icccm.wm_res_name, why);
        else
           printf("FocusToEWin None why=%d\n", why);
      }
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/gnome.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -3 -r1.33 -r1.34
--- gnome.c     28 Feb 2004 15:13:59 -0000      1.33
+++ gnome.c     29 Feb 2004 01:30:17 -0000      1.34
@@ -327,6 +327,7 @@
    if (retval)
      {
        ewin->layer = *retval;
+       EwinChange(EWIN_CHANGE_LAYER);
        Efree(retval);
      }
    EDBUG_RETURN_;
@@ -405,6 +406,7 @@
      {
        desk = (int *)retval;
        ewin->desktop = *desk;
+       EwinChange(EWIN_CHANGE_DESKTOP);
        Efree(retval);
      }
    EDBUG_RETURN_;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/groups.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -3 -r1.52 -r1.53
--- groups.c    14 Feb 2004 23:51:29 -0000      1.52
+++ groups.c    29 Feb 2004 01:30:17 -0000      1.53
@@ -284,7 +284,7 @@
        for (j = 0; j < groups[i]->num_members; j++)
          {
             strcat(group_member_strings[i],
-                   groups[i]->members[j]->client.title);
+                   EwinGetTitle(groups[i]->members[j]));
             strcat(group_member_strings[i], "\n");
          }
      }
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/icccm.c,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -3 -r1.51 -r1.52
--- icccm.c     28 Feb 2004 15:14:00 -0000      1.51
+++ icccm.c     29 Feb 2004 01:30:17 -0000      1.52
@@ -22,6 +22,8 @@
  */
 #include "E.h"
 
+#define FREE_AND_CLEAR(ptr) if (ptr) { Efree(ptr); ptr = NULL; }
+
 static Atom         E_XA_WM_STATE = 0;
 static Atom         E_XA_WM_CHANGE_STATE = 0;
 static Atom         E_XA_WM_NAME = 0;
@@ -97,8 +99,8 @@
    if (atom_change && atom_change != E_XA_WM_NAME)
       EDBUG_RETURN_;
 
-   if (ewin->client.title)
-      Efree(ewin->client.title);
+   if (ewin->icccm.wm_name)
+      Efree(ewin->icccm.wm_name);
 
    if (XGetWMName(disp, ewin->client.win, &xtp))
      {
@@ -111,25 +113,27 @@
             s = XmbTextPropertyToTextList(disp, &xtp, &list, &items);
             if ((s == Success) && (items > 0))
               {
-                 ewin->client.title = Estrdup(*list);
+                 ewin->icccm.wm_name = Estrdup(*list);
                  XFreeStringList(list);
               }
             else
               {
-                 ewin->client.title = Estrdup((char *)xtp.value);
+                 ewin->icccm.wm_name = Estrdup((char *)xtp.value);
               }
          }
        else
          {
-            ewin->client.title = Estrdup((char *)xtp.value);
+            ewin->icccm.wm_name = Estrdup((char *)xtp.value);
          }
        XFree(xtp.value);
      }
    else if (!ewin->internal)
      {
-       ewin->client.title = Estrdup("No Title");
+       ewin->icccm.wm_name = Estrdup("No Title");
      }
 
+   EwinChange(ewin, EWIN_CHANGE_NAME);
+
    EDBUG_RETURN_;
 }
 
@@ -736,37 +740,23 @@
 
    if (atom_change == 0 || atom_change == E_XA_WM_CLASS)
      {
-       if (XGetClassHint(disp, ewin->client.win, &hint))
-         {
-            if (ewin->client.name)
-               Efree(ewin->client.name);
-            if (ewin->client.class)
-               Efree(ewin->client.class);
-            ewin->client.name = Estrdup(hint.res_name);
-            ewin->client.class = Estrdup(hint.res_class);
-            XFree(hint.res_name);
-            XFree(hint.res_class);
-         }
-       else if (XGetClassHint(disp, ewin->client.group, &hint))
+       FREE_AND_CLEAR(ewin->icccm.wm_res_name);
+       FREE_AND_CLEAR(ewin->icccm.wm_res_class);
+
+       if (XGetClassHint(disp, ewin->client.win, &hint) ||
+           XGetClassHint(disp, ewin->client.group, &hint))
          {
-            if (ewin->client.name)
-               Efree(ewin->client.name);
-            if (ewin->client.class)
-               Efree(ewin->client.class);
-            ewin->client.name = Estrdup(hint.res_name);
-            ewin->client.class = Estrdup(hint.res_class);
+            ewin->icccm.wm_res_name = Estrdup(hint.res_name);
+            ewin->icccm.wm_res_class = Estrdup(hint.res_class);
             XFree(hint.res_name);
             XFree(hint.res_class);
          }
-       else
-         {
-            ewin->client.name = NULL;
-            ewin->client.class = NULL;
-         }
      }
 
    if (atom_change == 0 || atom_change == E_XA_WM_COMMAND)
      {
+       FREE_AND_CLEAR(ewin->icccm.wm_command);
+
        if (XGetCommand(disp, ewin->client.win, &cargv, &cargc))
          {
             if (cargc > 0)
@@ -782,13 +772,7 @@
                       strcat(s, cargv[i]);
                    }
                  XFreeStringList(cargv);
-                 if (ewin->client.command)
-                    Efree(ewin->client.command);
-                 ewin->client.command = s;
-              }
-            else
-              {
-                 ewin->client.command = NULL;
+                 ewin->icccm.wm_command = s;
               }
          }
        else if (XGetCommand(disp, ewin->client.group, &cargv, &cargc))
@@ -824,83 +808,35 @@
                            strcat(s, " ");
                            strcat(s, cargv[i]);
                         }
-                      if (ewin->client.command)
-                         Efree(ewin->client.command);
-                      ewin->client.command = s;
-                   }
-                 else
-                   {
-                      ewin->client.command = NULL;
+                      ewin->icccm.wm_command = s;
                    }
                  XFreeStringList(cargv);
               }
-            else
-              {
-                 ewin->client.command = NULL;
-              }
-         }
-       else
-         {
-            ewin->client.command = NULL;
          }
      }
 
    if (atom_change == 0 || atom_change == E_XA_WM_CLIENT_MACHINE)
      {
-       if (XGetWMClientMachine(disp, ewin->client.win, &xtp))
-         {
-            if (ewin->client.machine)
-               Efree(ewin->client.machine);
-            ewin->client.machine = Estrdup((char *)xtp.value);
-            XFree(xtp.value);
-         }
-       else if (XGetWMClientMachine(disp, ewin->client.group, &xtp))
+       FREE_AND_CLEAR(ewin->icccm.wm_machine);
+
+       if (XGetWMClientMachine(disp, ewin->client.win, &xtp) ||
+           XGetWMClientMachine(disp, ewin->client.group, &xtp))
          {
-            if (ewin->client.machine)
-               Efree(ewin->client.machine);
-            ewin->client.machine = Estrdup((char *)xtp.value);
+            ewin->icccm.wm_machine = Estrdup((char *)xtp.value);
             XFree(xtp.value);
          }
-       else
-         {
-            ewin->client.machine = NULL;
-         }
      }
 
    if (atom_change == 0 || atom_change == E_XA_WM_ICON_NAME)
      {
-       if (XGetWMIconName(disp, ewin->client.win, &xtp))
-         {
-            if (ewin->client.icon_name)
-               Efree(ewin->client.icon_name);
-            if (xtp.encoding == XA_STRING)
-              {
-                 ewin->client.icon_name = Estrdup((char *)xtp.value);
-              }
-            else
-              {
-                 char              **cl;
-                 Status              status;
-                 int                 n;
+       FREE_AND_CLEAR(ewin->icccm.wm_icon_name);
 
-                 status = XmbTextPropertyToTextList(disp, &xtp, &cl, &n);
-                 if (status >= Success && n > 0 && cl[0])
-                   {
-                      ewin->client.icon_name = Estrdup(cl[0]);
-                      XFreeStringList(cl);
-                   }
-                 else
-                    ewin->client.icon_name = Estrdup((char *)xtp.value);
-              }
-            XFree(xtp.value);
-         }
-       else if (XGetWMIconName(disp, ewin->client.group, &xtp))
+       if (XGetWMIconName(disp, ewin->client.win, &xtp) ||
+           XGetWMIconName(disp, ewin->client.group, &xtp))
          {
-            if (ewin->client.icon_name)
-               Efree(ewin->client.icon_name);
             if (xtp.encoding == XA_STRING)
               {
-                 ewin->client.icon_name = Estrdup((char *)xtp.value);
+                 ewin->icccm.wm_icon_name = Estrdup((char *)xtp.value);
               }
             else
               {
@@ -911,30 +847,24 @@
                  status = XmbTextPropertyToTextList(disp, &xtp, &cl, &n);
                  if (status >= Success && n > 0 && cl[0])
                    {
-                      ewin->client.icon_name = Estrdup(cl[0]);
+                      ewin->icccm.wm_icon_name = Estrdup(cl[0]);
                       XFreeStringList(cl);
                    }
                  else
-                    ewin->client.icon_name = Estrdup((char *)xtp.value);
+                    ewin->icccm.wm_icon_name = Estrdup((char *)xtp.value);
               }
             XFree(xtp.value);
          }
-       else
-         {
-            ewin->client.icon_name = NULL;
-         }
      }
 
    if (atom_change == 0 || atom_change == E_XA_WM_WINDOW_ROLE)
      {
+       FREE_AND_CLEAR(ewin->icccm.wm_role);
+
        s = AtomGet(ewin->client.win, E_XA_WM_WINDOW_ROLE, XA_STRING, &size);
        if (s)
          {
-            if (ewin->client.role)
-               Efree(ewin->client.role);
-            ewin->client.role = Emalloc(size + 1);
-            memcpy(ewin->client.role, s, size);
-            ewin->client.role[size] = 0;
+            ewin->icccm.wm_role = Estrndup(s, size);
             Efree(s);
          }
      }
@@ -1011,6 +941,7 @@
        if (hint->flags & IconPixmapHint)
          {
             ewin->client.icon_pmap = hint->icon_pixmap;
+            EwinChange(ewin, EWIN_CHANGE_ICON_PMAP);
          }
        else
          {
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/iconify.c,v
retrieving revision 1.88
retrieving revision 1.89
diff -u -3 -r1.88 -r1.89
--- iconify.c   28 Feb 2004 15:14:00 -0000      1.88
+++ iconify.c   29 Feb 2004 01:30:17 -0000      1.89
@@ -846,8 +846,8 @@
    int                 w, h, mw, mh;
    Iconbox            *ib;
 
-   idef = IB_MatchIcondef(ewin->client.title, ewin->client.name,
-                         ewin->client.class);
+   idef = IB_MatchIcondef(ewin->icccm.wm_name, ewin->icccm.wm_res_name,
+                         ewin->icccm.wm_res_class);
 
    if (!idef)
       return;
@@ -2410,29 +2410,25 @@
                       mode.x = ev->xcrossing.x_root;
                       mode.y = ev->xcrossing.y_root;
                    }
-                 if (ewin != name_ewin)
+
+                 if (ib[i]->shownames && ewin != name_ewin)
                    {
-                      if (ib[i]->shownames)
+                      tt = FindItem("ICONBOX", 0, LIST_FINDBY_NAME,
+                                    LIST_TYPE_TOOLTIP);
+                      if (tt)
                         {
-                           tt = FindItem("ICONBOX", 0, LIST_FINDBY_NAME,
-                                         LIST_TYPE_TOOLTIP);
-                           if (tt)
+                           const char         *name;
+
+                           HideToolTip(tt);
+                           if (ewin)
                              {
-                                name_ewin = ewin;
-                                HideToolTip(tt);
-                                if (ewin)
-                                  {
-                                     if ((ewin->client.icon_name)
-                                         && (strlen(ewin->client.icon_name) >
-                                             0))
-                                        ShowToolTip(tt, ewin->client.icon_name,
-                                                    NULL, mode.x, mode.y);
-                                     else
-                                        ShowToolTip(tt, ewin->client.title,
-                                                    NULL, mode.x, mode.y);
-                                  }
+
+                                name = EwinGetIconName(ewin);
+                                if (name)
+                                   ShowToolTip(tt, name, NULL, mode.x, mode.y);
                              }
                         }
+                      name_ewin = ewin;
                    }
               }
             else if (ev->type == LeaveNotify)
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ipc.c,v
retrieving revision 1.139
retrieving revision 1.140
diff -u -3 -r1.139 -r1.140
--- ipc.c       28 Feb 2004 15:14:00 -0000      1.139
+++ ipc.c       29 Feb 2004 01:30:17 -0000      1.140
@@ -3475,20 +3475,20 @@
        for (i = 0; i < num; i++)
          {
             e = lst[i];
-            if (!e->client.title)
-               e->client.title = none;
+            if (!e->icccm.wm_name)
+               e->icccm.wm_name = none;
             if (params)
               {
                  Esnprintf(buf, sizeof(buf),
                            "0x%x : %s :: %d : %d %d : %d %d %dx%d\n",
-                           (unsigned)e->client.win, e->client.title,
+                           (unsigned)e->client.win, e->icccm.wm_name,
                            (e->sticky) ? -1 : e->desktop, e->area_x, e->area_y,
                            e->x, e->y, e->w, e->h);
               }
             else
               {
                  Esnprintf(buf, sizeof(buf), "0x%x : %s\n",
-                           (unsigned)e->client.win, e->client.title);
+                           (unsigned)e->client.win, e->icccm.wm_name);
               }
             if (!ret)
               {
@@ -3728,18 +3728,18 @@
                    {
                       /* return the window title */
                       Esnprintf(buf, sizeof(buf),
-                                "window title: %s", ewin->client.title);
+                                "window title: %s", ewin->icccm.wm_name);
                    }
                  else
                    {
                       /* set the new title */
-                      if (ewin->client.title)
-                         Efree(ewin->client.title);
-                      ewin->client.title =
+                      if (ewin->icccm.wm_name)
+                         Efree(ewin->icccm.wm_name);
+                      ewin->icccm.wm_name =
                          Emalloc((strlen(ptr) + 1) * sizeof(char));
 
-                      strcpy(ewin->client.title, ptr);
-                      XStoreName(disp, ewin->client.win, ewin->client.title);
+                      strcpy(ewin->icccm.wm_name, ptr);
+                      XStoreName(disp, ewin->client.win, ewin->icccm.wm_name);
                       DrawEwin(ewin);
                    }
               }
@@ -4658,7 +4658,7 @@
             Esnprintf(tmp, sizeof(tmp), "%d", groups[i]->index);
             strcat(buf, tmp);
             strcat(buf, ": ");
-            strcat(buf, groups[i]->members[j]->client.title);
+            strcat(buf, groups[i]->members[j]->icccm.wm_name);
             strcat(buf, "\n");
          }
        Esnprintf(buf2, sizeof(buf2),
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/menus.c,v
retrieving revision 1.104
retrieving revision 1.105
diff -u -3 -r1.104 -r1.105
--- menus.c     28 Feb 2004 15:14:01 -0000      1.104
+++ menus.c     29 Feb 2004 01:30:17 -0000      1.105
@@ -364,7 +364,7 @@
 }
 
 MenuItem           *
-MenuItemCreate(char *text, ImageClass * iclass, int action_id,
+MenuItemCreate(const char *text, ImageClass * iclass, int action_id,
               char *action_params, Menu * child)
 {
    MenuItem           *mi;
@@ -1744,10 +1744,10 @@
        for (i = 0; i < num; i++)
          {
             if ((!lst[i]->menu) && (!lst[i]->pager) && (!lst[i]->skipwinlist)
-                && (lst[i]->client.title) && (!lst[i]->ibox))
+                && (EwinGetTitle(lst[i])) && (!lst[i]->ibox))
               {
                  Esnprintf(s, sizeof(s), "%i", (int)(lst[i]->client.win));
-                 mi = MenuItemCreate(lst[i]->client.title, NULL,
+                 mi = MenuItemCreate(EwinGetTitle(lst[i]), NULL,
                                      ACTION_FOCUS_SET, s, NULL);
                  MenuAddItem(m, mi);
               }
@@ -1821,10 +1821,10 @@
          {
             if (((lst[i]->desktop == j) || (lst[i]->sticky)) && (!lst[i]->menu)
                 && (!lst[i]->pager) && (!lst[i]->skipwinlist)
-                && (lst[i]->client.title) && (!lst[i]->ibox))
+                && (EwinGetTitle(lst[i])) && (!lst[i]->ibox))
               {
                  Esnprintf(s, sizeof(s), "%i", (int)(lst[i]->client.win));
-                 mi = MenuItemCreate(lst[i]->client.title, NULL,
+                 mi = MenuItemCreate(EwinGetTitle(lst[i]), NULL,
                                      ACTION_FOCUS_SET, s, NULL);
                  MenuAddItem(mm, mi);
               }
@@ -1872,7 +1872,7 @@
                  Esnprintf(s, sizeof(s), "%li",
                            lst[i]->members[j]->client.win);
                  mi =
-                    MenuItemCreate(lst[i]->members[j]->client.title, NULL,
+                    MenuItemCreate(EwinGetTitle(lst[i]->members[j]), NULL,
                                    ACTION_FOCUS_SET, s, NULL);
                  MenuAddItem(mm, mi);
               }
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/pager.c,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -3 -r1.69 -r1.70
--- pager.c     21 Feb 2004 18:47:29 -0000      1.69
+++ pager.c     29 Feb 2004 01:30:17 -0000      1.70
@@ -1037,7 +1037,7 @@
    if (tt)
      {
        if (ewin)
-          ShowToolTip(tt, ewin->client.title, NULL, mode.x, mode.y);
+          ShowToolTip(tt, EwinGetIconName(ewin), NULL, mode.x, mode.y);
        else
           HideToolTip(tt);
      }
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/session.c,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -3 -r1.54 -r1.55
--- session.c   28 Feb 2004 15:14:01 -0000      1.54
+++ session.c   29 Feb 2004 01:30:17 -0000      1.55
@@ -224,7 +224,7 @@
               {
                  ewin = lst[i];
                  if ((!(ewin->internal))
-                     && ((ewin->client.command) || (ewin->session_id)))
+                     && ((ewin->icccm.wm_command) || (ewin->session_id)))
                    {
                       x = 0;
                       y = 0;
@@ -241,14 +241,16 @@
                               ewin->shaded, ewin->sticky, ewin->layer);
                       if (ewin->session_id)
                          fprintf(f, "  [SESSION_ID] %s\n", ewin->session_id);
-                      if (ewin->client.name)
-                         fprintf(f, "  [NAME] %s\n", ewin->client.name);
-                      if (ewin->client.class)
-                         fprintf(f, "  [CLASS] %s\n", ewin->client.class);
-                      if (ewin->client.role)
-                         fprintf(f, "  [ROLE] %s\n", ewin->client.role);
-                      if (ewin->client.command)
-                         fprintf(f, "  [COMMAND] %s\n", ewin->client.command);
+                      if (ewin->icccm.wm_res_name)
+                         fprintf(f, "  [NAME] %s\n", ewin->icccm.wm_res_name);
+                      if (ewin->icccm.wm_res_class)
+                         fprintf(f, "  [CLASS] %s\n",
+                                 ewin->icccm.wm_res_class);
+                      if (ewin->icccm.wm_role)
+                         fprintf(f, "  [ROLE] %s\n", ewin->icccm.wm_role);
+                      if (ewin->icccm.wm_command)
+                         fprintf(f, "  [COMMAND] %s\n",
+                                 ewin->icccm.wm_command);
                    }
               }
             fclose(f);
@@ -367,12 +369,12 @@
                   * FIXME: Mozilla DELETES the WM_COMMAND property on 
                   * a regular basis so is is wise NOT to update 
                   * this property when it is set to NULL. */
-                 if ((ewin->client.command) && (matches[i].command)
-                     && strcmp(ewin->client.command, matches[i].command))
+                 if ((ewin->icccm.wm_command) && (matches[i].command)
+                     && strcmp(ewin->icccm.wm_command, matches[i].command))
                     continue;
               }
 
-            if ((ewin->client.role) && (matches[i].role))
+            if ((ewin->icccm.wm_role) && (matches[i].role))
               {
                  /* The X11R6 protocol guarantees that any WM_WINDOW_ROLE
                   * is unique among the windows sharing a SM_CLIENT_ID.
@@ -380,17 +382,17 @@
                   * Clients which use the same WM_WINDOW_ROLE on two 
                   * windows are breaking the ICCCM even if they have 
                   * different WM_CLASS properties on those windows. */
-                 if (strcmp(ewin->client.role, matches[i].role))
+                 if (strcmp(ewin->icccm.wm_role, matches[i].role))
                     continue;
               }
             else
               {
                  /* The WM_CLASS is a stable basis for a test. */
-                 if ((ewin->client.class) && (matches[i].class)
-                     && (strcmp(ewin->client.class, matches[i].class)))
+                 if ((ewin->icccm.wm_res_class) && (matches[i].class)
+                     && (strcmp(ewin->icccm.wm_res_class, matches[i].class)))
                     continue;
-                 if ((ewin->client.name) && (matches[i].name)
-                     && (strcmp(ewin->client.name, matches[i].name)))
+                 if ((ewin->icccm.wm_res_name) && (matches[i].name)
+                     && (strcmp(ewin->icccm.wm_res_name, matches[i].name)))
                     continue;
 
                  /* Twm also matches on the WM_NAME but only when this value
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/settings.c,v
retrieving revision 1.96
retrieving revision 1.97
diff -u -3 -r1.96 -r1.97
--- settings.c  28 Feb 2004 15:14:01 -0000      1.96
+++ settings.c  29 Feb 2004 01:30:17 -0000      1.97
@@ -4680,11 +4680,11 @@
          {
             ewin = lst[i];
             if (!ewin || !FindSnapshot(ewin)
-                || !(ewin->client.title || ewin->client.name
-                     || ewin->client.class))
+                || !(ewin->icccm.wm_name || ewin->icccm.wm_res_name
+                     || ewin->icccm.wm_res_class))
               {
                  /* fprintf(stderr,"Skipping window #%d \"%s\".\n",
-                  * i, ewin->client.title?ewin->client.title:"null"); */
+                  * i, ewin->icccm.wm_name?ewin->icccm.wm_name:"null"); */
               }
             else
               {
@@ -4692,12 +4692,12 @@
                  rd_ewin_list[ri]->ewin = ewin;
                  rd_ewin_list[ri]->remember = 1;
                  /* fprintf(stderr," Window #%d \"%s\" is remembered (ri==%d)\n",
-                  * i, ewin->client.title?ewin->client.title:"null", ri);
+                  * i, ewin->icccm.wm_name?ewin->icccm.wm_name:"null", ri);
                   * fprintf(stderr,"  title:\t%s\n  name:\t%s\n  class:\t%s\n  
command:\t%s\n",
-                  * ewin->client.title?ewin->client.title:"null",
-                  * ewin->client.name?ewin->client.name:"null",
-                  * ewin->client.class?ewin->client.class:"null",
-                  * ewin->client.command?ewin->client.command:"null"
+                  * ewin->icccm.wm_name?ewin->icccm.wm_name:"null",
+                  * ewin->icccm.wm_res_name?ewin->icccm.wm_res_name:"null",
+                  * ewin->icccm.wm_res_class?ewin->icccm.wm_res_class:"null",
+                  * ewin->icccm.wm_command?ewin->icccm.wm_command:"null"
                   * ); */
 
                  di = DialogAddItem(table, DITEM_CHECKBUTTON);
@@ -4705,7 +4705,7 @@
                  DialogItemSetPadding(di, 2, 2, 2, 2);
                  DialogItemSetFill(di, 1, 0);
                  DialogItemSetAlign(di, 0, 512);
-                 DialogItemCheckButtonSetText(di, ewin->client.title);
+                 DialogItemCheckButtonSetText(di, ewin->icccm.wm_name);
                  DialogItemCheckButtonSetState(di, rd_ewin_list[ri]->remember);
                  DialogItemCheckButtonSetPtr(di,
                                              &(rd_ewin_list[ri]->remember));
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/snaps.c,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -3 -r1.60 -r1.61
--- snaps.c     28 Feb 2004 15:14:01 -0000      1.60
+++ snaps.c     29 Feb 2004 01:30:18 -0000      1.61
@@ -28,13 +28,15 @@
 static int
 EwinMakeID(EWin * ewin, char *buf, int len)
 {
-   if ((ewin->client.role) && (ewin->client.name) && (ewin->client.class))
-      Esnprintf(buf, len, "%s.%s:%s", ewin->client.name, ewin->client.class,
-               ewin->client.role);
-   else if ((ewin->client.name) && (ewin->client.class))
-      Esnprintf(buf, len, "%s.%s", ewin->client.name, ewin->client.class);
-   else if (ewin->client.title)
-      Esnprintf(buf, len, "TITLE.%s", ewin->client.title);
+   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);
+   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);
+   else if (ewin->icccm.wm_name)
+      Esnprintf(buf, len, "TITLE.%s", ewin->icccm.wm_name);
    else
       return -1;
 
@@ -81,15 +83,15 @@
 
        sn = NewSnapshot(buf);
        ListChangeItemID(LIST_TYPE_SNAPSHOT, sn, 1);
-       if ((ewin->client.name) && (ewin->client.class))
+       if ((ewin->icccm.wm_res_name) && (ewin->icccm.wm_res_class))
          {
             sn->win_title = NULL;
-            sn->win_name = Estrdup(ewin->client.name);
-            sn->win_class = Estrdup(ewin->client.class);
+            sn->win_name = Estrdup(ewin->icccm.wm_res_name);
+            sn->win_class = Estrdup(ewin->icccm.wm_res_class);
          }
        else
          {
-            sn->win_title = Estrdup(ewin->client.title);
+            sn->win_title = Estrdup(ewin->icccm.wm_name);
             sn->win_name = NULL;
             sn->win_class = NULL;
          }
@@ -360,9 +362,9 @@
    DialogItemSetPadding(di, 2, 2, 2, 2);
    DialogItemSetFill(di, 1, 0);
    DialogItemSetAlign(di, 1024, 512);
-   DialogItemTextSetText(di, ewin->client.title);
+   DialogItemTextSetText(di, ewin->icccm.wm_name);
 
-   if (ewin->client.name)
+   if (ewin->icccm.wm_res_name)
      {
        di = DialogAddItem(table, DITEM_TEXT);
        DialogItemSetPadding(di, 2, 2, 2, 2);
@@ -375,10 +377,10 @@
        DialogItemSetPadding(di, 2, 2, 2, 2);
        DialogItemSetFill(di, 1, 0);
        DialogItemSetAlign(di, 1024, 512);
-       DialogItemTextSetText(di, ewin->client.name);
+       DialogItemTextSetText(di, ewin->icccm.wm_res_name);
      }
 
-   if (ewin->client.class)
+   if (ewin->icccm.wm_res_class)
      {
        di = DialogAddItem(table, DITEM_TEXT);
        DialogItemSetPadding(di, 2, 2, 2, 2);
@@ -391,10 +393,10 @@
        DialogItemSetPadding(di, 2, 2, 2, 2);
        DialogItemSetFill(di, 1, 0);
        DialogItemSetAlign(di, 1024, 512);
-       DialogItemTextSetText(di, ewin->client.class);
+       DialogItemTextSetText(di, ewin->icccm.wm_res_class);
      }
 
-   if (ewin->client.command)
+   if (ewin->icccm.wm_command)
      {
        di = DialogAddItem(table, DITEM_TEXT);
        DialogItemSetPadding(di, 2, 2, 2, 2);
@@ -409,23 +411,23 @@
        DialogItemSetAlign(di, 1024, 512);
 
        /* if the command is long, cut in into slices of about 80 characters */
-       if (strlen(ewin->client.command) > 80)
+       if (strlen(ewin->icccm.wm_command) > 80)
          {
             int                 i = 0, slice, last;
 
             s[0] = 0;
             slice = 64;
-            while ((i <= (int)strlen(ewin->client.command))
+            while ((i <= (int)strlen(ewin->icccm.wm_command))
                    && (i < (int)(sizeof(s) / 4)))
               {
                  last = i;
                  i += 64;
                  slice = 64;
                  /* and make sure that we don't cut in the middle of a word. */
-                 while ((ewin->client.command[i++] != ' ')
+                 while ((ewin->icccm.wm_command[i++] != ' ')
                         && (i < (int)(sizeof(s) / 4)))
                     slice++;
-                 strncat(s, ewin->client.command + last, slice);
+                 strncat(s, ewin->icccm.wm_command + last, slice);
                  if (i < (int)(sizeof(s) / 4))
                     strcat(s, "\n");
                  else
@@ -434,7 +436,7 @@
             DialogItemTextSetText(di, s);
          }
        else
-          DialogItemTextSetText(di, ewin->client.command);
+          DialogItemTextSetText(di, ewin->icccm.wm_command);
      }
 
    di = DialogAddItem(table, DITEM_SEPARATOR);
@@ -516,13 +518,13 @@
    DialogItemCheckButtonSetState(di, tmp_snap_neverfocus);
    DialogItemCheckButtonSetPtr(di, &tmp_snap_neverfocus);
 #endif
-   if (ewin->client.command)
+   if (ewin->icccm.wm_command)
      {
        char                ok = 1;
 
-       if (ewin->client.machine)
+       if (ewin->icccm.wm_machine)
          {
-            if (strcmp(ewin->client.machine, e_machine_name))
+            if (strcmp(ewin->icccm.wm_machine, e_machine_name))
                ok = 0;
          }
        if (ok)
@@ -727,9 +729,9 @@
    if (!sn)
       return;
 
-   if (ewin->client.machine)
+   if (ewin->icccm.wm_machine)
      {
-       if (strcmp(ewin->client.machine, e_machine_name))
+       if (strcmp(ewin->icccm.wm_machine, e_machine_name))
           ok = 0;
      }
    if (ok)
@@ -737,7 +739,7 @@
        sn->use_cmd = 1;
        if (sn->cmd)
           Efree(sn->cmd);
-       sn->cmd = Estrdup(ewin->client.command);
+       sn->cmd = Estrdup(ewin->icccm.wm_command);
      }
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/tclass.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -3 -r1.20 -r1.21
--- tclass.c    28 Feb 2004 15:14:02 -0000      1.20
+++ tclass.c    29 Feb 2004 01:30:18 -0000      1.21
@@ -188,7 +188,8 @@
 
 void
 TclassApply(ImageClass * iclass, Window win, int w, int h, int active,
-           int sticky, int state, char expose, TextClass * tclass, char *text)
+           int sticky, int state, char expose, TextClass * tclass,
+           const char *text)
 {
 
    EDBUG(4, "TclassApply");
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/text.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -3 -r1.29 -r1.30
--- text.c      28 Feb 2004 15:14:02 -0000      1.29
+++ text.c      29 Feb 2004 01:30:18 -0000      1.30
@@ -322,7 +322,8 @@
 
 void
 TextDraw(TextClass * tclass, Window win, int active, int sticky, int state,
-        char *text, int x, int y, int w, int h, int fsize, int justification)
+        const char *text, int x, int y, int w, int h, int fsize,
+        int justification)
 {
    char              **lines;
    int                 i, num_lines;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/tooltips.c,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -3 -r1.56 -r1.57
--- tooltips.c  28 Feb 2004 15:14:02 -0000      1.56
+++ tooltips.c  29 Feb 2004 01:30:18 -0000      1.57
@@ -79,7 +79,7 @@
 }
 
 void
-ShowToolTip(ToolTip * tt, char *text, ActionClass * ac, int x, int y)
+ShowToolTip(ToolTip * tt, const char *text, ActionClass * ac, int x, int y)
 {
    int                 i, w = 0, h = 0, ix, iy, iw, ih, dx, dy, xx, yy;
    int                 ww, hh, adx, ady, dist;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/warp.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -3 -r1.34 -r1.35
--- warp.c      24 Feb 2004 16:57:57 -0000      1.34
+++ warp.c      29 Feb 2004 01:30:18 -0000      1.35
@@ -214,7 +214,7 @@
                     ECreateWindow(warpFocusTitleWindow, 0, 0, 1, 1, 0);
                  EMapWindow(disp, warptitles[warptitles_num - 1]);
                  warptitles_ewin[warptitles_num - 1] = lst[i];
-                 TextSize(tc, 0, 0, 0, lst[i]->client.title, &ww, &hh, 17);
+                 TextSize(tc, 0, 0, 0, EwinGetTitle(lst[i]), &ww, &hh, 17);
                  if (ww > w)
                     w = ww;
                  if (hh > h)
@@ -258,19 +258,12 @@
           warptitles_ewin[i] = NULL;
        if (warptitles_ewin[i])
          {
-            if (ewin == warptitles_ewin[i])
-              {
-                 IclassApply(ic, warptitles[i], mw, mh, 0, 0, STATE_CLICKED,
-                             0);
-                 TclassApply(ic, warptitles[i], mw, mh, 0, 0, STATE_CLICKED, 0,
-                             tc, warptitles_ewin[i]->client.title);
-              }
-            else
-              {
-                 IclassApply(ic, warptitles[i], mw, mh, 0, 0, STATE_NORMAL, 0);
-                 TclassApply(ic, warptitles[i], mw, mh, 0, 0, STATE_NORMAL, 0,
-                             tc, warptitles_ewin[i]->client.title);
-              }
+            int                 state =
+               (ewin == warptitles_ewin[i]) ? STATE_CLICKED : STATE_NORMAL;
+
+            IclassApply(ic, warptitles[i], mw, mh, 0, 0, state, 0);
+            TclassApply(ic, warptitles[i], mw, mh, 0, 0, state, 0,
+                        tc, EwinGetTitle(warptitles_ewin[i]));
          }
      }
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/windowmatch.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- windowmatch.c       28 Feb 2004 15:14:02 -0000      1.19
+++ windowmatch.c       29 Feb 2004 01:30:18 -0000      1.20
@@ -56,16 +56,16 @@
 
    EDBUG(5, "MatchEwinBorder");
 
-   if ((b->win_title) && (ewin->client.title)
-       && (!matchregexp(b->win_title, ewin->client.title)))
+   if ((b->win_title) && (ewin->icccm.wm_name)
+       && (!matchregexp(b->win_title, ewin->icccm.wm_name)))
       EDBUG_RETURN(0);
 
-   if ((b->win_name) && (ewin->client.name)
-       && (!matchregexp(b->win_name, ewin->client.name)))
+   if ((b->win_name) && (ewin->icccm.wm_res_name)
+       && (!matchregexp(b->win_name, ewin->icccm.wm_res_name)))
       EDBUG_RETURN(0);
 
-   if ((b->win_class) && (ewin->client.class)
-       && (!matchregexp(b->win_class, ewin->client.class)))
+   if ((b->win_class) && (ewin->icccm.wm_res_class)
+       && (!matchregexp(b->win_class, ewin->icccm.wm_res_class)))
       EDBUG_RETURN(0);
 
    if ((ewin->client.w > b->width.max) || (ewin->client.w < b->width.min))




-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to