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_container.c e_container.h 
        e_moveresize.c e_moveresize.h 


Log Message:
Window layers, incomplete.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.158
retrieving revision 1.159
diff -u -3 -r1.158 -r1.159
--- e_border.c  28 Apr 2005 07:49:13 -0000      1.158
+++ e_border.c  28 Apr 2005 09:55:40 -0000      1.159
@@ -199,7 +199,6 @@
    Ecore_X_Window_Attributes *att;
    Evas_List *list;
    E_Config_Binding *eb;
-   Ecore_X_Window mwin;
    unsigned int managed, desk[2];
    int deskx, desky;
 
@@ -213,14 +212,6 @@
    bd->h = 1;
    bd->win = ecore_x_window_override_new(bd->container->win, 0, 0, bd->w, 
bd->h);
    ecore_x_window_shape_events_select(bd->win, 1);
-   mwin = e_menu_grab_window_get();
-   if (!mwin) mwin = e_init_window_get();
-   if (mwin)
-     ecore_x_window_configure(bd->win,
-                             ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING |
-                             ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE,
-                             0, 0, 0, 0, 0,
-                             mwin, ECORE_X_WINDOW_STACK_BELOW);
    /* Bindings */
    for (list = e_config->bindings; list; list = list->next)
      {
@@ -299,6 +290,8 @@
 
    bd->w = bd->client.w;
    bd->h = bd->client.h;
+
+   bd->layer = 100;
    bd->changes.size = 1;
    bd->changes.shape = 1;
 
@@ -321,8 +314,8 @@
    ecore_x_window_save_set_add(win);
    ecore_x_window_reparent(win, bd->client.shell_win, 0, 0);
    ecore_x_window_border_width_set(win, 0);
-   ecore_x_window_show(bd->event_win);
-   ecore_x_window_show(bd->client.shell_win);
+   e_container_window_show(con, bd->event_win, bd->layer);
+   e_container_window_show(con, bd->client.shell_win, bd->layer);
    bd->shape = e_container_shape_add(con);
 
    bd->new_client = 1;
@@ -410,7 +403,7 @@
    E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
    if (bd->visible) return;
    e_container_shape_show(bd->shape);
-   ecore_x_window_show(bd->client.win);
+   e_container_window_show(bd->zone->container, bd->client.win, bd->layer);
    e_hints_window_visible_set(bd->client.win);
    bd->visible = 1;
    bd->changes.visible = 1;
@@ -436,7 +429,7 @@
    if (!bd->visible) return;
    if (bd->moving) return;
 
-   ecore_x_window_hide(bd->client.win);
+   e_container_window_hide(bd->zone->container, bd->client.win, bd->layer);
    e_container_shape_hide(bd->shape);
    if (!bd->iconic)
      e_hints_window_hidden_set(bd->client.win);
@@ -581,22 +574,10 @@
 void
 e_border_raise(E_Border *bd)
 {
-   Ecore_X_Window mwin;
-
    E_OBJECT_CHECK(bd);
    E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
    _e_border_reorder_after(bd, NULL);
-   mwin = e_menu_grab_window_get();
-   if (!mwin) mwin = e_init_window_get();
-   if (!mwin)
-     ecore_x_window_raise(bd->win);
-   else
-     ecore_x_window_configure(bd->win,
-                             ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING |
-                             ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE,
-                             0, 0, 0, 0, 0,
-                             mwin, ECORE_X_WINDOW_STACK_BELOW);
-
+   e_container_window_raise(bd->zone->container, bd->win, bd->layer);
      {
        E_Event_Border_Raise *ev;
        
@@ -606,8 +587,6 @@
        ev->above = NULL;
        ecore_event_add(E_EVENT_BORDER_RAISE, ev, 
_e_border_event_border_raise_free, NULL);
      }
-   /* FIXME, ugly hack! */
-   e_moveresize_raise();
 }
 
 void
@@ -1123,7 +1102,7 @@
        if ((bd->changes.visible) && (bd->visible))
          {
             ecore_evas_show(bd->bg_ecore_evas);
-            ecore_x_window_show(bd->win);
+            e_container_window_show(bd->zone->container, bd->win, bd->layer);
             bd->changes.visible = 0;
          }
      }
@@ -1135,7 +1114,7 @@
        bd = l->data;
        if ((bd->changes.visible) && (!bd->visible))
          {
-            ecore_x_window_hide(bd->win);
+            e_container_window_hide(bd->zone->container, bd->win, bd->layer);
             ecore_evas_hide(bd->bg_ecore_evas);
             bd->changes.visible = 0;
          }
@@ -2942,49 +2921,40 @@
      {
        /*  show at start of unshade (but don't hide until end of shade) */
        if (bd->shaded)
-//       ecore_x_window_show(bd->client.shell_win);
-         ecore_x_window_raise(bd->client.shell_win);
+         e_container_window_raise(bd->zone->container, bd->client.shell_win, 
bd->layer);
        bd->changes.shading = 0;
      }
    if ((bd->changes.shaded) && (bd->changes.pos) && (bd->changes.size))
      {
        if (bd->shaded)
-//       ecore_x_window_hide(bd->client.shell_win);
-         ecore_x_window_lower(bd->client.shell_win);
+         e_container_window_lower(bd->zone->container, bd->client.shell_win, 
bd->layer);
        else
-//       ecore_x_window_show(bd->client.shell_win);
-         ecore_x_window_raise(bd->client.shell_win);
+         e_container_window_raise(bd->zone->container, bd->client.shell_win, 
bd->layer);
        bd->changes.shaded = 0;
      }
    else if ((bd->changes.shaded) && (bd->changes.pos))
      {
        if (bd->shaded)
-//       ecore_x_window_hide(bd->client.shell_win);
-         ecore_x_window_lower(bd->client.shell_win);
+         e_container_window_lower(bd->zone->container, bd->client.shell_win, 
bd->layer);
        else
-//       ecore_x_window_show(bd->client.shell_win);
-         ecore_x_window_raise(bd->client.shell_win);
+         e_container_window_raise(bd->zone->container, bd->client.shell_win, 
bd->layer);
        bd->changes.size = 1;
        bd->changes.shaded = 0;
      }
    else if ((bd->changes.shaded) && (bd->changes.size))
      {
        if (bd->shaded)
-//       ecore_x_window_hide(bd->client.shell_win);
-         ecore_x_window_lower(bd->client.shell_win);
+         e_container_window_lower(bd->zone->container, bd->client.shell_win, 
bd->layer);
        else
-//       ecore_x_window_show(bd->client.shell_win);
-         ecore_x_window_raise(bd->client.shell_win);
+         e_container_window_raise(bd->zone->container, bd->client.shell_win, 
bd->layer);
        bd->changes.shaded = 0;
      }
    else if (bd->changes.shaded)
      {
        if (bd->shaded)
-//       ecore_x_window_hide(bd->client.shell_win);
-         ecore_x_window_lower(bd->client.shell_win);
+         e_container_window_lower(bd->zone->container, bd->client.shell_win, 
bd->layer);
        else
-//       ecore_x_window_show(bd->client.shell_win);
-         ecore_x_window_raise(bd->client.shell_win);
+         e_container_window_raise(bd->zone->container, bd->client.shell_win, 
bd->layer);
        bd->changes.size = 1;
        bd->changes.shaded = 0;
      }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -3 -r1.34 -r1.35
--- e_border.h  26 Apr 2005 09:36:18 -0000      1.34
+++ e_border.h  28 Apr 2005 09:55:40 -0000      1.35
@@ -216,6 +216,8 @@
        unsigned char start : 1;
        int x, y;
    } drag;
+
+   unsigned int layer;
 };
 
 struct _E_Border_Pending_Move_Resize 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_container.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -3 -r1.38 -r1.39
--- e_container.c       25 Apr 2005 08:29:53 -0000      1.38
+++ e_container.c       28 Apr 2005 09:55:41 -0000      1.39
@@ -43,6 +43,7 @@
    Evas_Object *o;
    char name[40];
    Evas_List *l, *screens;
+   int i;
    
    con = E_OBJECT_ALLOC(E_Container, E_CONTAINER_TYPE, _e_container_free);
    if (!con) return NULL;
@@ -98,6 +99,25 @@
    snprintf(name, sizeof(name), "Container %d", con->num);
    con->name = strdup(name);
 
+   /* init layers */
+   for (i = 0; i < 7; i++)
+     {
+       con->layers[i] = ecore_x_window_input_new(con->win, 0, 0, 1, 1);
+
+       if (i > 0)
+         ecore_x_window_configure(con->layers[i],
+                                  ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING |
+                                  ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE,
+                                  0, 0, 0, 0, 0,
+                                  con->layers[i - 1], 
ECORE_X_WINDOW_STACK_ABOVE);
+     }
+
+   ecore_x_window_configure(con->bg_win,
+        ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING |
+        ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE,
+        0, 0, 0, 0, 0,
+        con->layers[0], ECORE_X_WINDOW_STACK_BELOW);
+
    screens = (Evas_List *)e_xinerama_screens_get();
    if (screens)
      {
@@ -455,6 +475,52 @@
    if (h) *h = es->solid_rect.h;
 }
 
+/* layers
+ * 0 = desktop
+ * 50 = below
+ * 100 = normal
+ * 150 = above
+ * 200 = fullscreen
+ * 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);
+   e_container_window_raise(con, win, layer);
+}
+
+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;
+   
+   if (layer == 0) pos = 0;
+   else if ((layer > 0) && (layer <= 50)) pos = 1;
+   else if ((layer > 50) && (layer <= 100)) pos = 2;
+   else if ((layer > 100) && (layer <= 150)) pos = 3;
+   else if ((layer > 150) && (layer <= 200)) pos = 4;
+   else pos = 5;
+
+   ecore_x_window_configure(win,
+        ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING |
+        ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE,
+        0, 0, 0, 0, 0,
+        con->layers[pos], ECORE_X_WINDOW_STACK_BELOW);
+}
+
+void
+e_container_window_lower(E_Container *con, Ecore_X_Window win, int layer)
+{
+   ecore_x_window_lower(win);
+}
+
 /* local subsystem functions */
 static void
 _e_container_free(E_Container *con)
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_container.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- e_container.h       13 Apr 2005 15:52:33 -0000      1.16
+++ e_container.h       28 Apr 2005 09:55:41 -0000      1.17
@@ -48,6 +48,8 @@
    Evas_List           *shape_change_cb;
    Evas_List           *zones;
    Evas_List           *clients;
+
+   Ecore_X_Window       layers[7];
 };
 
 struct _E_Container_Shape
@@ -105,6 +107,11 @@
 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);
+
 extern EAPI int E_EVENT_CONTAINER_RESIZE;
 
 #endif
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_moveresize.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_moveresize.c      27 Apr 2005 08:42:36 -0000      1.7
+++ e_moveresize.c      28 Apr 2005 09:55:41 -0000      1.8
@@ -141,9 +141,3 @@
    snprintf(buf, sizeof(buf) - 1, "%i %i", x, y);
    edje_object_part_text_set(_obj, "text", buf);
 }
-
-void
-e_moveresize_raise(void)
-{
-   if (_ee) ecore_evas_raise(_ee);
-}
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_moveresize.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_moveresize.h      24 Apr 2005 21:11:44 -0000      1.1
+++ e_moveresize.h      28 Apr 2005 09:55:41 -0000      1.2
@@ -9,5 +9,3 @@
 EAPI void e_move_begin(E_Zone *zone, int x, int y);
 EAPI void e_move_end(void);
 EAPI void e_move_update(int x, int y);
-
-EAPI void e_moveresize_raise(void);




-------------------------------------------------------
SF.Net email is sponsored by: Tell us your software development plans!
Take this survey and enter to win a one-year sub to SourceForge.net
Plus IDC's 2005 look-ahead and a copy of this survey
Click here to start!  http://www.idcswdc.com/cgi-bin/survey?id=105hix
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to