From f4711b90b18df4ba87fd37d149af14e74720711f Mon Sep 17 00:00:00 2001 From: rephorm Date: Fri, 25 Jan 2002 19:41:02 +0000 Subject: [PATCH] Windows will now be on top when you uniconify them, and will not reappear on their old desktop if you move around while they are iconified. Also, added some event types. SVN revision: 5859 --- src/border.c | 5 +++-- src/desktops.c | 2 +- src/observer.h | 19 ++++++++++++++++--- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/border.c b/src/border.c index 67e5ce35e..53173a30f 100644 --- a/src/border.c +++ b/src/border.c @@ -1775,8 +1775,9 @@ e_border_uniconify(E_Border *b) e_icccm_state_mapped(b->win.client); b->changed = 1; e_border_update(b); - /* should be UNICONIFY */ - e_observee_notify_observers(E_OBSERVEE(b), E_EVENT_BORDER_ICONIFY); + e_border_raise(b); + + e_observee_notify_observers(E_OBSERVEE(b), E_EVENT_BORDER_UNICONIFY); } void diff --git a/src/desktops.c b/src/desktops.c index 562e44bfb..78c7f0959 100644 --- a/src/desktops.c +++ b/src/desktops.c @@ -391,7 +391,7 @@ e_desktops_goto(int d, int ax, int ay) E_Border *b; b = l->data; - if ((!b->client.sticky) && (!b->mode.move)) + if ((!b->client.sticky) && (!b->mode.move) && (!b->client.iconified)) { if (b->client.desk != d) { diff --git a/src/observer.h b/src/observer.h index c27eab981..cf4226363 100644 --- a/src/observer.h +++ b/src/observer.h @@ -14,17 +14,30 @@ typedef struct _e_observee E_Observee; typedef enum _e_event_type { + /* basic event types */ E_EVENT_BORDER_NEW = 1 << 0, - E_EVENT_BORDER_RELEASE = 1 << 1, + E_EVENT_BORDER_DELETE = 1 << 1, E_EVENT_BORDER_FOCUS_IN = 1 << 2, E_EVENT_BORDER_ICONIFY = 1 << 3, E_EVENT_BORDER_UNICONIFY = 1 << 4, E_EVENT_BORDER_MAXIMIZE = 1 << 5, E_EVENT_BORDER_UNMAXIMIZE = 1 << 6, + E_EVENT_BORDER_MOVE = 1 << 7, + E_EVENT_BORDER_RESIZE = 1 << 8, - E_EVENT_DESKTOP_SWITCH = 1 << 10, - + E_EVENT_DESKTOP_NEW = 1 << 10, + E_EVENT_DESKTOP_DELETE = 1 << 11, + E_EVENT_DESKTOP_SWITCH = 1 << 12, + /* meta event types */ + E_EVENT_BORDER_ALL = E_EVENT_BORDER_NEW | + E_EVENT_BORDER_DELETE | E_EVENT_BORDER_FOCUS_IN | + E_EVENT_BORDER_ICONIFY | E_EVENT_BORDER_UNICONIFY | + E_EVENT_BORDER_MAXIMIZE | E_EVENT_BORDER_UNMAXIMIZE, + E_EVENT_DESKTOP_ALL = E_EVENT_DESKTOP_NEW | + E_EVENT_DESKTOP_DELETE | E_EVENT_DESKTOP_SWITCH, + + /* ALL events */ E_EVENT_MAX = 0xFFFFFFFF } E_Event_Type;