From 9f01af5e1d7617e71fdd38273a21e06ed3c148ed Mon Sep 17 00:00:00 2001 From: sebastid Date: Mon, 29 Aug 2005 23:04:21 +0000 Subject: [PATCH] Honor lock flags in e_hints.c SVN revision: 16406 --- TODO | 3 --- src/bin/e_border.c | 10 ++++----- src/bin/e_hints.c | 53 +++++++++++++++++++++++----------------------- 3 files changed, 31 insertions(+), 35 deletions(-) diff --git a/TODO b/TODO index 9679033c5..f955db44d 100644 --- a/TODO +++ b/TODO @@ -10,9 +10,6 @@ Some of the things (in very short form) that need to be done to E17... * BUG: e often forgets what window is focused so ctrl+alt+x for example doesnt close the current focused window... hmmmm -* e_hints.c manually changes flags on a border instead of calling - e_border_stick() for example or the calls in e_border.c - add calls as needed - to e_border.c. before calling check the lock flags too. * BUG: in general fullscreen needs work, cleaning and testing. dont allow desktop switches for the desk a fullscreened window is on, nor allow windows to be raised above the fs win etc. ie the app must seem to be entirely fs for diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 88e9e4aea..68efddbf7 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -3,8 +3,8 @@ */ #include "e.h" -#define INOUTDEBUG_MOUSE 1 -#define INOUTDEBUG_FOCUS 1 +//#define INOUTDEBUG_MOUSE 1 +//#define INOUTDEBUG_FOCUS 1 /* These are compatible with netwm */ #define RESIZE_TL 0 @@ -863,7 +863,7 @@ e_border_focus_set(E_Border *bd, int focus, int set) { E_OBJECT_CHECK(bd); E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE); - printf("e_border_focus_set(%p, %i %i);\n", bd, focus, set); + //printf("e_border_focus_set(%p, %i %i);\n", bd, focus, set); if ((bd->visible) && (bd->changes.visible)) { if ((bd->want_focus) && (set) && (!focus)) @@ -968,12 +968,12 @@ e_border_focus_set(E_Border *bd, int focus, int set) if (bd->focused) { focused = bd; - printf("set focused to %p\n", focused); + //printf("set focused to %p\n", focused); } else if ((!bd->focused) && (focused == bd)) { focused = NULL; - printf("set focused to %p\n", focused); + //printf("set focused to %p\n", focused); } } diff --git a/src/bin/e_hints.c b/src/bin/e_hints.c index 101f015fc..d77fd3fb3 100644 --- a/src/bin/e_hints.c +++ b/src/bin/e_hints.c @@ -515,33 +515,30 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state, e_border_iconify(bd); break; case ECORE_X_WINDOW_STATE_MODAL: - changed = 0; switch (action) { case ECORE_X_WINDOW_STATE_ACTION_REMOVE: if (bd->client.netwm.state.modal) { bd->client.netwm.state.modal = 0; - changed = 1; + bd->client.netwm.update.state = 1; + bd->changed = 1; } break; case ECORE_X_WINDOW_STATE_ACTION_ADD: if (!bd->client.netwm.state.modal) { bd->client.netwm.state.modal = 1; - changed = 1; + bd->client.netwm.update.state = 1; + bd->changed = 1; } break; case ECORE_X_WINDOW_STATE_ACTION_TOGGLE: bd->client.netwm.state.modal = !bd->client.netwm.state.modal; - changed = 1; + bd->client.netwm.update.state = 1; + bd->changed = 1; break; } - if (changed) - { - bd->client.netwm.update.state = 1; - bd->changed = 1; - } break; case ECORE_X_WINDOW_STATE_STICKY: if (bd->lock_client_sticky) return; @@ -563,6 +560,10 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state, break; case ECORE_X_WINDOW_STATE_MAXIMIZED_VERT: if (bd->lock_client_maximize) return; + /* We might end up in a state where maximized_h or maximized_v is + * set. This doesn't matter, because E only checks if both are + * set for maximization. + */ changed = 0; switch (action) { @@ -599,6 +600,10 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state, break; case ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ: if (bd->lock_client_maximize) return; + /* We might end up in a state where maximized_h or maximized_v is + * set. This doesn't matter, because E only checks if both are + * set for maximization. + */ changed = 0; switch (action) { @@ -652,62 +657,56 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state, } break; case ECORE_X_WINDOW_STATE_SKIP_TASKBAR: - changed = 0; switch (action) { case ECORE_X_WINDOW_STATE_ACTION_REMOVE: if (bd->client.netwm.state.skip_taskbar) { bd->client.netwm.state.skip_taskbar = 0; - changed = 1; + bd->client.netwm.update.state = 1; + bd->changed = 1; } break; case ECORE_X_WINDOW_STATE_ACTION_ADD: if (!bd->client.netwm.state.skip_taskbar) { bd->client.netwm.state.skip_taskbar = 1; - changed = 1; + bd->client.netwm.update.state = 1; + bd->changed = 1; } break; case ECORE_X_WINDOW_STATE_ACTION_TOGGLE: bd->client.netwm.state.skip_taskbar = !bd->client.netwm.state.skip_taskbar; - changed = 1; + bd->client.netwm.update.state = 1; + bd->changed = 1; break; } - if (changed) - { - bd->client.netwm.update.state = 1; - bd->changed = 1; - } break; case ECORE_X_WINDOW_STATE_SKIP_PAGER: - changed = 0; switch (action) { case ECORE_X_WINDOW_STATE_ACTION_REMOVE: if (bd->client.netwm.state.skip_pager) { bd->client.netwm.state.skip_pager = 0; - changed = 1; + bd->client.netwm.update.state = 1; + bd->changed = 1; } break; case ECORE_X_WINDOW_STATE_ACTION_ADD: if (!bd->client.netwm.state.skip_pager) { bd->client.netwm.state.skip_pager = 1; - changed = 1; + bd->client.netwm.update.state = 1; + bd->changed = 1; } break; case ECORE_X_WINDOW_STATE_ACTION_TOGGLE: bd->client.netwm.state.skip_pager = !bd->client.netwm.state.skip_pager; - changed = 1; + bd->client.netwm.update.state = 1; + bd->changed = 1; break; } - if (changed) - { - bd->client.netwm.update.state = 1; - bd->changed = 1; - } break; case ECORE_X_WINDOW_STATE_HIDDEN: /* Ignore */