Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


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


Log Message:
Fix layers and client lists.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.196
retrieving revision 1.197
diff -u -3 -r1.196 -r1.197
--- e_border.c  13 May 2005 07:27:40 -0000      1.196
+++ e_border.c  13 May 2005 09:23:50 -0000      1.197
@@ -416,7 +416,7 @@
    E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
    if (bd->visible) return;
    e_container_shape_show(bd->shape);
-   e_container_window_show(bd->zone->container, bd->client.win, bd->layer);
+   ecore_x_window_show(bd->client.win);
    e_hints_window_visible_set(bd);
    bd->visible = 1;
    bd->changes.visible = 1;
@@ -441,7 +441,7 @@
    if (!bd->visible) return;
    if (bd->moving) return;
 
-   e_container_window_hide(bd->zone->container, bd->client.win, bd->layer);
+   ecore_x_window_hide(bd->client.win);
    e_container_shape_hide(bd->shape);
    if (!bd->iconic)
      e_hints_window_hidden_set(bd);
@@ -593,7 +593,7 @@
    E_OBJECT_CHECK(bd);
    E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
    _e_border_reorder_after(bd, NULL);
-   e_container_window_raise(bd->zone->container, bd->win, bd->layer);
+   e_container_border_raise(bd);
      {
        E_Event_Border_Raise *ev;
        
@@ -611,7 +611,7 @@
    E_OBJECT_CHECK(bd);
    E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
    _e_border_reorder_before(bd, NULL);
-   e_container_window_lower(bd->zone->container, bd->win, bd->layer);
+   e_container_border_lower(bd);
      {
        E_Event_Border_Lower *ev;
        
@@ -969,6 +969,8 @@
    if ((bd->shaded) || (bd->shading)) return;
    if (!bd->fullscreen)
      {
+       int layer;
+
        bd->saved.x = bd->x;
        bd->saved.y = bd->y;
        bd->saved.w = bd->w;
@@ -976,7 +978,10 @@
 
        e_hints_window_fullscreen_set(bd, 1);
 
-       e_container_window_raise(bd->zone->container, bd->win, 200);
+       layer = bd->layer;
+       bd->layer = 200;
+       e_border_raise(bd);
+       bd->layer = layer;
        e_border_move_resize(bd,
                             bd->zone->x - bd->client_inset.l,
                             bd->zone->y - bd->client_inset.t,
@@ -1185,7 +1190,7 @@
        if ((bd->changes.visible) && (bd->visible))
          {
             ecore_evas_show(bd->bg_ecore_evas);
-            e_container_window_show(bd->zone->container, bd->win, bd->layer);
+            ecore_x_window_show(bd->win);
             bd->changes.visible = 0;
          }
      }
@@ -1197,7 +1202,7 @@
        bd = l->data;
        if ((bd->changes.visible) && (!bd->visible))
          {
-            e_container_window_hide(bd->zone->container, bd->win, bd->layer);
+            ecore_x_window_hide(bd->win);
             ecore_evas_hide(bd->bg_ecore_evas);
             bd->changes.visible = 0;
          }
@@ -3867,7 +3872,7 @@
        bd->layer = 150;
        e_hints_window_stacking_set(bd, E_STACKING_ABOVE);
      }
-   e_container_window_raise(bd->zone->container, bd->win, bd->layer);
+   e_container_border_raise(bd);
 }
 
 static void
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_container.c,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -3 -r1.47 -r1.48
--- e_container.c       13 May 2005 07:20:09 -0000      1.47
+++ e_container.c       13 May 2005 09:23:50 -0000      1.48
@@ -509,23 +509,10 @@
  * 999 = internal on top windows for E
  */
 void
-e_container_window_show(E_Container *con, Ecore_X_Window win, int layer)
-{
-   ecore_x_window_show(win);
-}
-
-void
-e_container_window_hide(E_Container *con, Ecore_X_Window win, int layer)
-{
-   ecore_x_window_hide(win);
-}
-
-void
 e_container_window_raise(E_Container *con, Ecore_X_Window win, int layer)
 {
-   int pos, i;
-   E_Border *bd;
-   
+   int pos;
+
    if (layer == 0) pos = 1;
    else if ((layer > 0) && (layer <= 50)) pos = 2;
    else if ((layer > 50) && (layer <= 100)) pos = 3;
@@ -538,21 +525,13 @@
                            ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE,
                            0, 0, 0, 0, 0,
                            con->layers[pos].win, ECORE_X_WINDOW_STACK_BELOW);
-
-   bd = e_border_find_by_client_window(win);
-   if (!bd) return;
-   /* FIXME, remember the old layer if layer is changed. */
-   for (i = 0; i < 7; i++)
-     con->layers[i].clients = evas_list_remove(con->layers[i].clients, bd);
-   con->layers[pos - 1].clients = evas_list_append(con->layers[pos - 
1].clients, bd);
 }
 
 void
 e_container_window_lower(E_Container *con, Ecore_X_Window win, int layer)
 {
-   int pos, i;
-   E_Border *bd;
-   
+   int pos;
+
    if (layer == 0) pos = 0;
    else if ((layer > 0) && (layer <= 50)) pos = 1;
    else if ((layer > 50) && (layer <= 100)) pos = 2;
@@ -565,13 +544,65 @@
                            ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE,
                            0, 0, 0, 0, 0,
                            con->layers[pos].win, ECORE_X_WINDOW_STACK_ABOVE);
+}
+void
+e_container_border_raise(E_Border *bd)
+{
+   int pos, i;
 
-   bd = e_border_find_by_client_window(win);
-   if (!bd) return;
-   /* FIXME, remember the old layer if layer is changed. */
+   /* Remove from old layer */
    for (i = 0; i < 7; i++)
-     con->layers[i].clients = evas_list_remove(con->layers[i].clients, bd);
-   con->layers[pos].clients = evas_list_prepend(con->layers[pos].clients, bd);
+     {
+       bd->zone->container->layers[i].clients =
+          evas_list_remove(bd->zone->container->layers[i].clients, bd);
+     }
+
+   /* Add to new layer */
+   if (bd->layer == 0) pos = 1;
+   else if ((bd->layer > 0) && (bd->layer <= 50)) pos = 2;
+   else if ((bd->layer > 50) && (bd->layer <= 100)) pos = 3;
+   else if ((bd->layer > 100) && (bd->layer <= 150)) pos = 4;
+   else if ((bd->layer > 150) && (bd->layer <= 200)) pos = 5;
+   else pos = 6;
+
+   ecore_x_window_configure(bd->win,
+                           ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING |
+                           ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE,
+                           0, 0, 0, 0, 0,
+                           bd->zone->container->layers[pos].win, 
ECORE_X_WINDOW_STACK_BELOW);
+
+   bd->zone->container->layers[pos - 1].clients =
+      evas_list_append(bd->zone->container->layers[pos - 1].clients, bd);
+}
+
+void
+e_container_border_lower(E_Border *bd)
+{
+   int pos, i;
+   
+   /* Remove from old layer */
+   for (i = 0; i < 7; i++)
+     {
+       bd->zone->container->layers[i].clients =
+          evas_list_remove(bd->zone->container->layers[i].clients, bd);
+     }
+
+   /* Add to new layer */
+   if (bd->layer == 0) pos = 0;
+   else if ((bd->layer > 0) && (bd->layer <= 50)) pos = 1;
+   else if ((bd->layer > 50) && (bd->layer <= 100)) pos = 2;
+   else if ((bd->layer > 100) && (bd->layer <= 150)) pos = 3;
+   else if ((bd->layer > 150) && (bd->layer <= 200)) pos = 4;
+   else pos = 5;
+
+   ecore_x_window_configure(bd->win,
+                           ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING |
+                           ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE,
+                           0, 0, 0, 0, 0,
+                           bd->zone->container->layers[pos].win, 
ECORE_X_WINDOW_STACK_ABOVE);
+
+   bd->zone->container->layers[pos].clients =
+      evas_list_prepend(bd->zone->container->layers[pos].clients, bd);
 }
 
 /* local subsystem functions */
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_container.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- e_container.h       13 May 2005 07:20:09 -0000      1.19
+++ e_container.h       13 May 2005 09:23:51 -0000      1.20
@@ -110,10 +110,10 @@
 EAPI void               e_container_shape_solid_rect_set(E_Container_Shape 
*es, int x, int y, int w, int h);
 EAPI void               e_container_shape_solid_rect_get(E_Container_Shape 
*es, int *x, int *y, int *w, int *h);
 
-EAPI void               e_container_window_show(E_Container *con, 
Ecore_X_Window, int layer);
-EAPI void               e_container_window_hide(E_Container *con, 
Ecore_X_Window, int layer);
 EAPI void               e_container_window_raise(E_Container *con, 
Ecore_X_Window, int layer);
 EAPI void               e_container_window_lower(E_Container *con, 
Ecore_X_Window, int layer);
+EAPI void               e_container_border_raise(E_Border *bd);
+EAPI void               e_container_border_lower(E_Border *bd);
 
 extern EAPI int E_EVENT_CONTAINER_RESIZE;
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- e_hints.c   10 May 2005 10:19:02 -0000      1.19
+++ e_hints.c   13 May 2005 09:23:51 -0000      1.20
@@ -264,7 +264,7 @@
      bd->layer = 150;
    else
      bd->layer = 100;
-   e_container_window_raise(bd->zone->container, bd->win, bd->layer);
+   e_container_border_raise(bd);
 
    if (bd->client.netwm.state.sticky)
      e_border_stick(bd);




-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7393&alloc_id=16281&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to