Honor lock flags in e_hints.c
authorsebastid <sebastid>
Mon, 29 Aug 2005 23:04:21 +0000 (23:04 +0000)
committersebastid <sebastid@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 29 Aug 2005 23:04:21 +0000 (23:04 +0000)
SVN revision: 16406

TODO
src/bin/e_border.c
src/bin/e_hints.c

diff --git a/TODO b/TODO
index 9679033..f955db4 100644 (file)
--- 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
index 88e9e4a..68efddb 100644 (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);
      }
 }
 
index 101f015..d77fd3f 100644 (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 */