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