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;