Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_border.c e_layout.c e_main.c Log Message: fix stacking of windows in pager.. and make the contianer actually track stacking! =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.178 retrieving revision 1.179 diff -u -3 -r1.178 -r1.179 --- e_border.c 5 May 2005 06:45:47 -0000 1.178 +++ e_border.c 6 May 2005 08:33:50 -0000 1.179 @@ -579,6 +579,8 @@ 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); + bd->zone->container->clients = evas_list_remove(bd->zone->container->clients, bd); + bd->zone->container->clients = evas_list_append(bd->zone->container->clients, bd); { E_Event_Border_Raise *ev; @@ -597,6 +599,8 @@ 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); + bd->zone->container->clients = evas_list_remove(bd->zone->container->clients, bd); + bd->zone->container->clients = evas_list_prepend(bd->zone->container->clients, bd); { E_Event_Border_Lower *ev; @@ -619,6 +623,8 @@ ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE, 0, 0, 0, 0, 0, above->win, ECORE_X_WINDOW_STACK_ABOVE); + bd->zone->container->clients = evas_list_remove(bd->zone->container->clients, bd); + bd->zone->container->clients = evas_list_append_relative(bd->zone->container->clients, bd, above); { E_Event_Border_Raise *ev; @@ -642,6 +648,8 @@ ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE, 0, 0, 0, 0, 0, below->win, ECORE_X_WINDOW_STACK_BELOW); + bd->zone->container->clients = evas_list_remove(bd->zone->container->clients, bd); + bd->zone->container->clients = evas_list_prepend_relative(bd->zone->container->clients, bd, below); { E_Event_Border_Lower *ev; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_layout.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- e_layout.c 6 May 2005 06:22:21 -0000 1.5 +++ e_layout.c 6 May 2005 08:33:50 -0000 1.6 @@ -155,12 +155,20 @@ li = evas_object_data_get(obj, "e_layout_data"); if (!li) return; - li->sd->items = evas_list_remove(li->sd->items, obj); - if (li->sd->items) + if (!evas_list_find(li->sd->items, obj)) return; + if ((li->sd->items) && (li->sd->items->next)) { - evas_object_stack_above(obj, evas_list_data(evas_list_last(li->sd->items))); + li->sd->items = evas_list_remove(li->sd->items, obj); +/* FIXME: this is some deeb subtle problem - why do i have to do a restack? */ +/* evas_object_stack_below(obj, li->sd->items->data);*/ + li->sd->items = evas_list_prepend(li->sd->items, obj); + { + Evas_List *l; + + for (l = li->sd->items; l; l = l->next) + evas_object_stack_below(l->data, li->sd->clip); + } } - li->sd->items = evas_list_append(li->sd->items, obj); } void @@ -170,10 +178,13 @@ li = evas_object_data_get(obj, "e_layout_data"); if (!li) return; - li->sd->items = evas_list_remove(li->sd->items, obj); - if (li->sd->items) - evas_object_stack_below(obj, evas_list_data(li->sd->items)); - li->sd->items = evas_list_prepend(li->sd->items, obj); + if (!evas_list_find(li->sd->items, obj)) return; + if ((li->sd->items) && (li->sd->items->next)) + { + li->sd->items = evas_list_remove(li->sd->items, obj); + evas_object_stack_below(obj, li->sd->clip); + li->sd->items = evas_list_append(li->sd->items, obj); + } } void @@ -183,10 +194,14 @@ li = evas_object_data_get(obj, "e_layout_data"); if (!li) return; - li->sd->items = evas_list_remove(li->sd->items, obj); - if (li->sd->items) - evas_object_stack_above(obj, below); - li->sd->items = evas_list_append_relative(li->sd->items, obj, below); + if (!evas_list_find(li->sd->items, below)) return; + if (!evas_list_find(li->sd->items, obj)) return; + if ((li->sd->items) && (li->sd->items->next)) + { + li->sd->items = evas_list_remove(li->sd->items, obj); + evas_object_stack_below(obj, below); + li->sd->items = evas_list_prepend_relative(li->sd->items, obj, below); + } } void @@ -196,10 +211,14 @@ li = evas_object_data_get(obj, "e_layout_data"); if (!li) return; - li->sd->items = evas_list_remove(li->sd->items, obj); - if (li->sd->items) - evas_object_stack_below(obj, above); - li->sd->items = evas_list_prepend_relative(li->sd->items, obj, above); + if (!evas_list_find(li->sd->items, above)) return; + if (!evas_list_find(li->sd->items, obj)) return; + if ((li->sd->items) && (li->sd->items->next)) + { + li->sd->items = evas_list_remove(li->sd->items, obj); + evas_object_stack_above(obj, above); + li->sd->items = evas_list_append_relative(li->sd->items, obj, above); + } } void @@ -235,10 +254,7 @@ evas_object_data_set(obj, "e_layout_data", li); evas_object_event_callback_add(obj, EVAS_CALLBACK_FREE, _e_layout_smart_item_del_hook, NULL); - if (li->sd->items) - evas_object_stack_below(obj, evas_list_data(li->sd->items)); - else - evas_object_stack_above(obj, sd->obj); + evas_object_stack_below(obj, li->sd->clip); if (!evas_object_visible_get(sd->clip)) evas_object_show(sd->clip); return li; @@ -375,7 +391,6 @@ sd = evas_object_smart_data_get(obj); if (!sd) return; - { Evas_List *l; @@ -397,10 +412,9 @@ Evas_List *l; for (l = sd->items; l; l = l->next) - { - evas_object_raise(l->data); - } + evas_object_raise(l->data); } + evas_object_raise(sd->clip); } static void @@ -410,13 +424,12 @@ sd = evas_object_smart_data_get(obj); if (!sd) return; + evas_object_lower(sd->clip); { Evas_List *l; for (l = evas_list_last(sd->items); l; l = l->prev) - { - evas_object_lower(l->data); - } + evas_object_lower(l->data); } } @@ -427,13 +440,12 @@ sd = evas_object_smart_data_get(obj); if (!sd) return; + evas_object_stack_above(sd->clip, above); { Evas_List *l; - for (l = evas_list_last(sd->items); l; l = l->prev) - { - evas_object_stack_above(l->data, above); - } + for (l = sd->items; l; l = l->next) + evas_object_stack_below(l->data, sd->clip); } } @@ -444,13 +456,12 @@ sd = evas_object_smart_data_get(obj); if (!sd) return; + evas_object_stack_below(sd->clip, below); { Evas_List *l; for (l = sd->items; l; l = l->next) - { - evas_object_stack_below(l->data, below); - } + evas_object_stack_below(l->data, sd->clip); } } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_main.c,v retrieving revision 1.72 retrieving revision 1.73 diff -u -3 -r1.72 -r1.73 --- e_main.c 30 Apr 2005 07:15:22 -0000 1.72 +++ e_main.c 6 May 2005 08:33:50 -0000 1.73 @@ -215,10 +215,17 @@ _e_main_shutdown_push(ecore_ipc_shutdown); /* init the evas wrapper */ if (!ecore_evas_init()) - { + { e_error_message_show(_("Enlightenment cannot initialize the Evas system.\n" "Perhaps you are out of memory?")); _e_main_shutdown(-1); + } + if (!ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_SOFTWARE_X11)) + { + e_error_message_show(_("Enlightenment found ecore_evas doesnt support Software X11\n" + "rendering in Evas. Please check your installation of Evas and\n" + "Ecore and check they support Software X11 rendering.")); + _e_main_shutdown(-1); } _e_main_shutdown_push(ecore_evas_shutdown); /* init the file system */ ------------------------------------------------------- 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