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