Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        eobj.c eobj.h ewins.c ewins.h windowmatch.c 


Log Message:
Enable matching override-redirect windows by WM_CLASS.

===================================================================
RCS file: /cvs/e/e16/e/src/eobj.c,v
retrieving revision 1.87
retrieving revision 1.88
diff -u -3 -r1.87 -r1.88
--- eobj.c      26 Nov 2006 11:11:14 -0000      1.87
+++ eobj.c      26 Nov 2006 14:40:05 -0000      1.88
@@ -184,14 +184,19 @@
    eo->shaped = -1;
 
    if (type == EOBJ_TYPE_EXT)
-      eo->name = ecore_x_icccm_title_get(WinGetXwin(win));
+     {
+       eo->icccm.wm_name = ecore_x_icccm_title_get(WinGetXwin(win));
+       ecore_x_icccm_name_class_get(WinGetXwin(win),
+                                    &eo->icccm.wm_res_name,
+                                    &eo->icccm.wm_res_class);
+     }
    else if (name)
-      eo->name = Estrdup(name);
-   if (!eo->name)
-      eo->name = Estrdup("-?-");
+      eo->icccm.wm_name = Estrdup(name);
+   if (!eo->icccm.wm_name)
+      eo->icccm.wm_name = Estrdup("-?-");
 
    if (type != EOBJ_TYPE_EWIN && type != EOBJ_TYPE_EXT)
-      HintsSetWindowName(eo->win, eo->name);
+      HintsSetWindowName(eo->win, eo->icccm.wm_name);
 
 #if USE_COMPOSITE
    eo->fade = 1;
@@ -234,8 +239,12 @@
    else
       EDestroyWindow(eo->win);
 
-   if (eo->name)
-      Efree(eo->name);
+   if (eo->icccm.wm_name)
+      Efree(eo->icccm.wm_name);
+   if (eo->icccm.wm_res_name)
+      Efree(eo->icccm.wm_res_name);
+   if (eo->icccm.wm_res_class)
+      Efree(eo->icccm.wm_res_class);
 }
 
 void
===================================================================
RCS file: /cvs/e/e16/e/src/eobj.h,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -3 -r1.36 -r1.37
--- eobj.h      3 Nov 2006 23:44:32 -0000       1.36
+++ eobj.h      26 Nov 2006 14:40:05 -0000      1.37
@@ -52,7 +52,12 @@
    void               *cmhook;
    unsigned int        serial;
 #endif
-   char               *name;
+   struct
+   {
+      char               *wm_name;
+      char               *wm_res_name;
+      char               *wm_res_class;
+   } icccm;
 };
 
 #define EOBJ_TYPE_EWIN      0
@@ -71,16 +76,20 @@
 #define EobjGetW(eo)            WinGetW((eo)->win)
 #define EobjGetH(eo)            WinGetH((eo)->win)
 #define EobjGetBW(eo)           WinGetBorderWidth((eo)->win)
-#define EobjGetDesk(eo)         ((eo)->desk)
-#define EobjGetName(eo)         ((eo)->name)
 #define EobjGetType(eo)         ((eo)->type)
+#define EobjGetDesk(eo)         ((eo)->desk)
+#define EobjGetName(eo)         ((eo)->icccm.wm_name)
+#define EobjGetCName(eo)        ((eo)->icccm.wm_res_name)
+#define EobjGetClass(eo)        ((eo)->icccm.wm_res_class)
 
 #define EoObj(eo)               (&((eo)->o))
 #define EoGetWin(eo)            EobjGetWin(EoObj(eo))
 #define EoGetXwin(eo)           EobjGetXwin(EoObj(eo))
+#define EoGetType(eo)           EobjGetType(EoObj(eo))
 #define EoGetDesk(eo)           EobjGetDesk(EoObj(eo))
 #define EoGetName(eo)           EobjGetName(EoObj(eo))
-#define EoGetType(eo)           EobjGetType(EoObj(eo))
+#define EoGetCName(eo)          EobjGetCName(EoObj(eo))
+#define EoGetClass(eo)          EobjGetClass(EoObj(eo))
 #define EoGetX(eo)              EobjGetX(EoObj(eo))
 #define EoGetY(eo)              EobjGetY(EoObj(eo))
 #define EoGetW(eo)              EobjGetW(EoObj(eo))
@@ -93,7 +102,6 @@
 #define EoGetLayer(eo)          (EoObj(eo)->layer)
 #define EoGetPixmap(eo)         EobjGetPixmap(EoObj(eo))
 
-#define EoSetName(eo, _x)       EoObj(eo)->name = (_x)
 #define EoSetGone(eo)           EoObj(eo)->gone = 1
 #define EoSetSticky(eo, _x)     EoObj(eo)->sticky = ((_x)?1:0)
 #define EoSetFloating(eo, _f)   EobjSetFloating(EoObj(eo), (_f))
===================================================================
RCS file: /cvs/e/e16/e/src/ewins.c,v
retrieving revision 1.182
retrieving revision 1.183
diff -u -3 -r1.182 -r1.183
--- ewins.c     26 Nov 2006 12:42:05 -0000      1.182
+++ ewins.c     26 Nov 2006 14:40:05 -0000      1.183
@@ -224,7 +224,7 @@
           ECreateWindow(frame, 0, 0, ewin->client.w, ewin->client.h, 0);
 
        EoInit(ewin, EOBJ_TYPE_EWIN, frame, ewin->client.x, ewin->client.y,
-              ewin->client.w, ewin->client.h, 1, EwinGetIcccmName(ewin));
+              ewin->client.w, ewin->client.h, 1, NULL);
 
        EobjListFocusAdd(&ewin->o, 1);
        EobjListOrderAdd(&ewin->o);
@@ -387,12 +387,6 @@
 
    HintsSetClientList();
 
-   if (EwinGetIcccmName(ewin))
-      Efree(EwinGetIcccmName(ewin));
-   if (EwinGetIcccmCName(ewin))
-      Efree(EwinGetIcccmCName(ewin));
-   if (EwinGetIcccmClass(ewin))
-      Efree(EwinGetIcccmClass(ewin));
    if (ewin->icccm.wm_icon_name)
       Efree(ewin->icccm.wm_icon_name);
    if (ewin->icccm.wm_role)
===================================================================
RCS file: /cvs/e/e16/e/src/ewins.h,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -3 -r1.61 -r1.62
--- ewins.h     26 Nov 2006 12:42:05 -0000      1.61
+++ ewins.h     26 Nov 2006 14:40:05 -0000      1.62
@@ -146,9 +146,6 @@
    EWinInhibit         inh_wm;
    struct
    {
-      char               *wm_name;
-      char               *wm_res_name;
-      char               *wm_res_class;
       char               *wm_icon_name;
       char               *wm_role;
       char               *wm_command;
@@ -293,9 +290,9 @@
 #define EwinGetClientWin(ewin)         ((ewin)->client.win)
 #define EwinGetContainerWin(ewin)      ((ewin)->win_container)
 
-#define EwinGetIcccmName(ewin)          ((ewin)->icccm.wm_name)
-#define EwinGetIcccmCName(ewin)         ((ewin)->icccm.wm_res_name)
-#define EwinGetIcccmClass(ewin)         ((ewin)->icccm.wm_res_class)
+#define EwinGetIcccmName(ewin)          EoGetName(ewin)
+#define EwinGetIcccmCName(ewin)         EoGetCName(ewin)
+#define EwinGetIcccmClass(ewin)         EoGetClass(ewin)
 
 /* arrange.c */
 #define ARRANGE_VERBATIM    0
===================================================================
RCS file: /cvs/e/e16/e/src/windowmatch.c,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -3 -r1.56 -r1.57
--- windowmatch.c       26 Nov 2006 12:42:05 -0000      1.56
+++ windowmatch.c       26 Nov 2006 14:40:05 -0000      1.57
@@ -590,14 +590,13 @@
    switch (wm->match)
      {
      case MATCH_TYPE_TITLE:
-       return matchregexp(wm->value, eo->name);
-#if 0
+       return matchregexp(wm->value, EobjGetName(eo));
+
      case MATCH_TYPE_WM_NAME:
-       return matchregexp(wm->value, eo->icccm.wm_res_name);
+       return matchregexp(wm->value, EobjGetCName(eo));
 
      case MATCH_TYPE_WM_CLASS:
-       return matchregexp(wm->value, eo->icccm.wm_res_class);
-#endif
+       return matchregexp(wm->value, EobjGetClass(eo));
      }
 
    if (wm->qual)



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to