Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_border.c e_border.h e_hints.c e_hints.h e_int_menus.c 


Log Message:
Handle window state change requests.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.172
retrieving revision 1.173
diff -u -3 -r1.172 -r1.173
--- e_border.c  1 May 2005 15:30:51 -0000       1.172
+++ e_border.c  2 May 2005 09:19:55 -0000       1.173
@@ -577,6 +577,7 @@
    E_OBJECT_CHECK(bd);
    E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
    _e_border_reorder_after(bd, NULL);
+   printf("raise layer: %d\n", bd->layer);
    e_container_window_raise(bd->zone->container, bd->win, bd->layer);
      {
        E_Event_Border_Raise *ev;
@@ -960,9 +961,7 @@
 
        e_hints_window_fullscreen_set(bd, 1);
 
-       bd->layer = 200;
-
-       e_border_raise(bd);
+       e_container_window_raise(bd->zone->container, bd->win, 200);
        e_border_move_resize(bd,
                             bd->zone->x - bd->client_inset.l,
                             bd->zone->y - bd->client_inset.t,
@@ -990,7 +989,6 @@
 
        e_border_move_resize(bd, bd->saved.x, bd->saved.y, bd->saved.w, 
bd->saved.h);
 
-       bd->layer = 100;
        bd->fullscreen = 0;
        bd->changes.pos = 1;
        bd->changes.size = 1;
@@ -1460,8 +1458,8 @@
    bd = e_border_find_by_client_window(e->win);
    if (!bd)
      {
-       printf("generic config request %x %i %i %ix%i ...\n",
-              e->win, e->x, e->y, e->w, e->h);
+       printf("generic config request 0x%x 0x%lx %i %i %ix%i %i 0x%x 
0x%x...\n",
+              e->win, e->value_mask, e->x, e->y, e->w, e->h, e->border, 
e->abovewin, e->detail);
        ecore_x_window_configure(e->win, e->value_mask,
                                 e->x, e->y, e->w, e->h, e->border,
                                 e->abovewin, e->detail);
@@ -1567,22 +1565,27 @@
          {
             if (e->detail == ECORE_X_WINDOW_STACK_ABOVE)
               {
+                 printf("config raise\n");
                  e_border_raise(bd);
               }
             else if (e->detail == ECORE_X_WINDOW_STACK_BELOW)
               {
+                 printf("config lower\n");
                  e_border_lower(bd);
               }
             else if (e->detail == ECORE_X_WINDOW_STACK_TOP_IF)
               {
+                 printf("config topif\n");
                  /* FIXME: do */
               }
             else if (e->detail == ECORE_X_WINDOW_STACK_BOTTOM_IF)
               {
+                 printf("config bottomif\n");
                  /* FIXME: do */
               }
             else if (e->detail == ECORE_X_WINDOW_STACK_OPPOSITE)
               {
+                 printf("config opposite\n");
                  /* FIXME: do */
               }
          }
@@ -1880,83 +1883,7 @@
    if (!bd) return 1;
    printf("State: 0x%x %d %d\n", bd->client.win, e->state[0], e->state[1]);
    for (i = 0; i < 2; i++)
-     {
-       int set;
-
-       if (e->state[i] != ECORE_X_WINDOW_STATE_UNKNOWN)
-         {
-            switch (e->action)
-              {
-               case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
-                  ecore_x_netwm_window_state_set(bd->client.win, e->state[i], 
0);
-                  set = 0;
-                  break;
-               case ECORE_X_WINDOW_STATE_ACTION_ADD:
-                  ecore_x_netwm_window_state_set(bd->client.win, e->state[i], 
1);
-                  set = 1;
-                  break;
-               case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
-                  if (ecore_x_netwm_window_state_isset(bd->client.win, 
e->state[i]))
-                    {
-                       ecore_x_netwm_window_state_set(bd->client.win, 
e->state[i], 0);
-                       set = 0;
-                    }
-                  else
-                    {
-                       ecore_x_netwm_window_state_set(bd->client.win, 
e->state[i], 1);
-                       set = 1;
-                    }
-                  break;
-              }
-
-            if (e->state[i] == ECORE_X_WINDOW_STATE_ABOVE)
-              {
-                 if (set)
-                   {
-                      bd->layer = 150;
-                      bd->client.netwm.state.stacking = 1;
-                   }
-                 else
-                   {
-                      bd->layer = 100;
-                      bd->client.netwm.state.stacking = 0;
-                   }
-                 e_border_raise(bd);
-              }
-            else if (e->state[i] == ECORE_X_WINDOW_STATE_BELOW)
-              {
-                 if (set)
-                   {
-                      bd->layer = 50;
-                      bd->client.netwm.state.stacking = 2;
-                   }
-                 else
-                   {
-                      bd->layer = 100;
-                      bd->client.netwm.state.stacking = 0;
-                   }
-                 e_border_raise(bd);
-              }
-            else if (e->state[i] == ECORE_X_WINDOW_STATE_FULLSCREEN)
-              {
-                 if (set)
-                   {
-                      bd->layer = 200;
-                      bd->client.netwm.state.fullscreen = 1;
-
-                      e_border_fullscreen(bd);
-                   }
-                 else
-                   {
-                      bd->layer = 100;
-                      bd->client.netwm.state.fullscreen = 0;
-
-                      e_border_unfullscreen(bd);
-                   }
-                 e_border_raise(bd);
-              }
-         }
-     }
+     e_hints_window_state_update(bd, e->state[i], e->action);
    return 1;
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -3 -r1.41 -r1.42
--- e_border.h  30 Apr 2005 07:03:35 -0000      1.41
+++ e_border.h  2 May 2005 09:19:55 -0000       1.42
@@ -334,6 +334,8 @@
 EAPI void      e_border_unshade(E_Border *bd, E_Direction dir);
 EAPI void      e_border_maximize(E_Border *bd);
 EAPI void      e_border_unmaximize(E_Border *bd);
+EAPI void      e_border_fullscreen(E_Border *bd);
+EAPI void      e_border_unfullscreen(E_Border *bd);
 EAPI void      e_border_iconify(E_Border *bd);
 EAPI void      e_border_uniconify(E_Border *bd);
 EAPI void      e_border_stick(E_Border *bd);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- e_hints.c   29 Apr 2005 11:08:04 -0000      1.16
+++ e_hints.c   2 May 2005 09:19:55 -0000       1.17
@@ -262,8 +262,6 @@
      bd->layer = 150;
    else if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DOCK)
      bd->layer = 150;
-   else if (bd->client.netwm.state.fullscreen)
-     bd->layer = 200;
    else
      bd->layer = 100;
    e_container_window_raise(bd->zone->container, bd->win, bd->layer);
@@ -274,6 +272,8 @@
      e_border_shade(bd, e_hints_window_shade_direction_get(bd));
    if (bd->client.netwm.state.maximized_v && 
bd->client.netwm.state.maximized_h)
      e_border_maximize(bd);
+   if (bd->client.netwm.state.fullscreen)
+     e_border_fullscreen(bd);
    if (bd->client.icccm.state == ECORE_X_WINDOW_STATE_HINT_ICONIC)
      e_border_iconify(bd);
    /* If a window isn't iconic, and is one the current desk,
@@ -330,6 +330,382 @@
 }
 
 void
+e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
+                           Ecore_X_Window_State_Action action)
+{
+   int changed;
+
+   switch (state)
+     {
+      case ECORE_X_WINDOW_STATE_ICONIFIED:
+        if (action != ECORE_X_WINDOW_STATE_ACTION_ADD) return;
+        if (bd->client.icccm.state == ECORE_X_WINDOW_STATE_HINT_ICONIC) return;
+        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;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_ADD:
+              if (!bd->client.netwm.state.modal)
+                {
+                   bd->client.netwm.state.modal = 1;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+              bd->client.netwm.state.modal = !bd->client.netwm.state.modal;
+              changed = 1;
+              break;
+          }
+        if (changed)
+          {
+             ecore_x_netwm_window_state_set(bd->client.win,
+                                            ECORE_X_WINDOW_STATE_MODAL,
+                                            bd->client.netwm.state.modal);
+          }
+        break;
+      case ECORE_X_WINDOW_STATE_STICKY:
+        changed = 0;
+        switch (action)
+          {
+           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+              if (bd->client.netwm.state.sticky)
+                {
+                   bd->client.netwm.state.sticky = 0;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_ADD:
+              if (!bd->client.netwm.state.sticky)
+                {
+                   bd->client.netwm.state.sticky = 1;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+              bd->client.netwm.state.sticky = !bd->client.netwm.state.sticky;
+              changed = 1;
+              break;
+          }
+        if (changed)
+          {
+             ecore_x_netwm_window_state_set(bd->client.win,
+                                            ECORE_X_WINDOW_STATE_STICKY,
+                                            bd->client.netwm.state.sticky);
+             if (bd->client.netwm.state.sticky)
+               e_border_stick(bd);
+             else
+               e_border_unstick(bd);
+          }
+        break;
+      case ECORE_X_WINDOW_STATE_MAXIMIZED_VERT:
+        changed = 0;
+        switch (action)
+          {
+           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+              if (bd->client.netwm.state.maximized_v)
+                {
+                   bd->client.netwm.state.maximized_v = 0;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_ADD:
+              if (!bd->client.netwm.state.maximized_v)
+                {
+                   bd->client.netwm.state.maximized_v = 1;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+              bd->client.netwm.state.maximized_v = 
!bd->client.netwm.state.maximized_v;
+              changed = 1;
+              break;
+          }
+        if (changed)
+          {
+             ecore_x_netwm_window_state_set(bd->client.win,
+                                            
ECORE_X_WINDOW_STATE_MAXIMIZED_VERT,
+                                            
bd->client.netwm.state.maximized_v);
+             if ((bd->client.netwm.state.maximized_v)
+                 && (bd->client.netwm.state.maximized_h))
+               e_border_maximize(bd);
+             else if ((!bd->client.netwm.state.maximized_v)
+                      && (!bd->client.netwm.state.maximized_h))
+               e_border_unmaximize(bd);
+          }
+        break;
+      case ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ:
+        changed = 0;
+        switch (action)
+          {
+           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+              if (bd->client.netwm.state.maximized_h)
+                {
+                   bd->client.netwm.state.maximized_h = 0;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_ADD:
+              if (!bd->client.netwm.state.maximized_h)
+                {
+                   bd->client.netwm.state.maximized_h = 1;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+              bd->client.netwm.state.maximized_h = 
!bd->client.netwm.state.maximized_h;
+              changed = 1;
+              break;
+          }
+        if (changed)
+          {
+             ecore_x_netwm_window_state_set(bd->client.win,
+                                            
ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ,
+                                            
bd->client.netwm.state.maximized_h);
+             if ((bd->client.netwm.state.maximized_v)
+                 && (bd->client.netwm.state.maximized_h))
+               e_border_maximize(bd);
+             else if ((!bd->client.netwm.state.maximized_v)
+                      && (!bd->client.netwm.state.maximized_h))
+               e_border_unmaximize(bd);
+          }
+        break;
+      case ECORE_X_WINDOW_STATE_SHADED:
+        changed = 0;
+        switch (action)
+          {
+           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+              if (bd->client.netwm.state.shaded)
+                {
+                   bd->client.netwm.state.shaded = 0;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_ADD:
+              if (!bd->client.netwm.state.shaded)
+                {
+                   bd->client.netwm.state.shaded = 1;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+              bd->client.netwm.state.shaded = !bd->client.netwm.state.shaded;
+              changed = 1;
+              break;
+          }
+        if (changed)
+          {
+             ecore_x_netwm_window_state_set(bd->client.win,
+                                            ECORE_X_WINDOW_STATE_SHADED,
+                                            bd->client.netwm.state.shaded);
+             if (bd->client.netwm.state.shaded)
+               e_border_shade(bd, e_hints_window_shade_direction_get(bd));
+             else
+               e_border_unshade(bd, e_hints_window_shade_direction_get(bd));
+          }
+        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;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_ADD:
+              if (!bd->client.netwm.state.skip_taskbar)
+                {
+                   bd->client.netwm.state.skip_taskbar = 1;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+              bd->client.netwm.state.skip_taskbar = 
!bd->client.netwm.state.skip_taskbar;
+              changed = 1;
+              break;
+          }
+        if (changed)
+          {
+             ecore_x_netwm_window_state_set(bd->client.win,
+                                            ECORE_X_WINDOW_STATE_SKIP_TASKBAR,
+                                            
bd->client.netwm.state.skip_taskbar);
+          }
+        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;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_ADD:
+              if (!bd->client.netwm.state.skip_pager)
+                {
+                   bd->client.netwm.state.skip_pager = 1;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+              bd->client.netwm.state.skip_pager = 
!bd->client.netwm.state.skip_pager;
+              changed = 1;
+              break;
+          }
+        if (changed)
+          {
+             /* FIXME, we have a pager, care about this! */
+             ecore_x_netwm_window_state_set(bd->client.win,
+                                            ECORE_X_WINDOW_STATE_SKIP_PAGER,
+                                            bd->client.netwm.state.skip_pager);
+          }
+        break;
+      case ECORE_X_WINDOW_STATE_HIDDEN:
+        /* Ignore */
+        break;
+      case ECORE_X_WINDOW_STATE_FULLSCREEN:
+        changed = 0;
+        switch (action)
+          {
+           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+              if (bd->client.netwm.state.fullscreen)
+                {
+                   bd->client.netwm.state.fullscreen = 0;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_ADD:
+              if (!bd->client.netwm.state.fullscreen)
+                {
+                   bd->client.netwm.state.fullscreen = 1;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+              bd->client.netwm.state.fullscreen = 
!bd->client.netwm.state.fullscreen;
+              changed = 1;
+              break;
+          }
+        if (changed)
+          {
+             ecore_x_netwm_window_state_set(bd->client.win,
+                                            ECORE_X_WINDOW_STATE_FULLSCREEN,
+                                            bd->client.netwm.state.fullscreen);
+             if (bd->client.netwm.state.fullscreen)
+               e_border_fullscreen(bd);
+             else
+               e_border_unfullscreen(bd);
+          }
+        break;
+      case ECORE_X_WINDOW_STATE_ABOVE:
+        changed = 0;
+        switch (action)
+          {
+           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+              if (bd->client.netwm.state.stacking == 1)
+                {
+                   bd->client.netwm.state.stacking = 0;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_ADD:
+              if (bd->client.netwm.state.stacking == 0)
+                {
+                   bd->client.netwm.state.stacking = 1;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+              if (bd->client.netwm.state.stacking == 1)
+                {
+                   bd->client.netwm.state.stacking = 0;
+                   changed = 1;
+                }
+              else if (bd->client.netwm.state.stacking == 0)
+                {
+                   bd->client.netwm.state.stacking = 1;
+                   changed = 1;
+                }
+              break;
+          }
+        if (changed)
+          {
+             ecore_x_netwm_window_state_set(bd->client.win,
+                                            ECORE_X_WINDOW_STATE_ABOVE,
+                                            bd->client.netwm.state.stacking);
+             if (bd->client.netwm.state.stacking)
+               bd->layer = 150;
+             else
+               bd->layer = 100;
+             e_border_raise(bd);
+          }
+        break;
+      case ECORE_X_WINDOW_STATE_BELOW:
+        changed = 0;
+        switch (action)
+          {
+           case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
+              if (bd->client.netwm.state.stacking == 2)
+                {
+                   bd->client.netwm.state.stacking = 0;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_ADD:
+              if (bd->client.netwm.state.stacking == 0)
+                {
+                   bd->client.netwm.state.stacking = 2;
+                   changed = 1;
+                }
+              break;
+           case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
+              if (bd->client.netwm.state.stacking == 2)
+                {
+                   bd->client.netwm.state.stacking = 0;
+                   changed = 1;
+                }
+              else if (bd->client.netwm.state.stacking == 0)
+                {
+                   bd->client.netwm.state.stacking = 2;
+                   changed = 1;
+                }
+              break;
+          }
+        if (changed)
+          {
+             ecore_x_netwm_window_state_set(bd->client.win,
+                                            ECORE_X_WINDOW_STATE_BELOW,
+                                            bd->client.netwm.state.stacking);
+             if (bd->client.netwm.state.stacking)
+               bd->layer = 50;
+             else
+               bd->layer = 100;
+             e_border_raise(bd);
+          }
+        break;
+      case ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION:
+        /* FIXME */
+        break;
+      case ECORE_X_WINDOW_STATE_UNKNOWN:
+        /* Ignore */
+        break;
+     }
+}
+
+void
 e_hints_window_state_get(E_Border *bd)
 {
    int          above, below;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- e_hints.h   29 Apr 2005 08:37:09 -0000      1.10
+++ e_hints.h   2 May 2005 09:19:55 -0000       1.11
@@ -23,6 +23,9 @@
 EAPI void e_hints_window_type_set(E_Border *bd);
 EAPI void e_hints_window_type_get(E_Border *bd);
 
+EAPI void e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
+                                     Ecore_X_Window_State_Action action);
+
 EAPI void e_hints_window_visible_set(E_Border *bd);
 EAPI void e_hints_window_iconic_set(E_Border *bd);
 EAPI void e_hints_window_hidden_set(E_Border *bd);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -3 -r1.54 -r1.55
--- e_int_menus.c       2 May 2005 06:48:38 -0000       1.54
+++ e_int_menus.c       2 May 2005 09:19:55 -0000       1.55
@@ -3,8 +3,6 @@
  */
 #include "e.h"
 
-extern E_Config *e_config;
-
 typedef struct _Main_Data Main_Data;
 
 struct _Main_Data
@@ -607,7 +605,6 @@
                  for (l = e_config->themes; l; l = l->next)
                    {
                       E_Config_Theme *et;
-                      char buf[256];
                       
                       et = l->data;
                       if (!strcmp(et->category, "theme"))




-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.
Get your fingers limbered up and give it your best shot. 4 great events, 4
opportunities to win big! Highest score wins.NEC IT Guy Games. Play to
win an NEC 61 plasma display. Visit http://www.necitguy.com/?r=20
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to