Honor lock flags in e_hints.c

SVN revision: 16406
This commit is contained in:
sebastid 2005-08-29 23:04:21 +00:00 committed by sebastid
parent 86b74f635a
commit 9f01af5e1d
3 changed files with 31 additions and 35 deletions

3
TODO
View File

@ -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

View File

@ -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);
}
}

View File

@ -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 */