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