Enlightenment CVS committal Author : englebass Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_shelf.c e_shelf.h Log Message: Make hiding work on the desktop again. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_shelf.c,v retrieving revision 1.64 retrieving revision 1.65 diff -u -3 -r1.64 -r1.65 --- e_shelf.c 7 May 2007 18:38:49 -0000 1.64 +++ e_shelf.c 7 May 2007 19:16:51 -0000 1.65 @@ -17,8 +17,8 @@ static void _e_shelf_menu_append(E_Shelf *es, E_Menu *mn); static void _e_shelf_cb_menu_items_append(void *data, E_Menu *mn); static void _e_shelf_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info); -static void _e_shelf_cb_mouse_in(Ecore_Evas *ee); -static void _e_shelf_cb_mouse_out(Ecore_Evas *ee); +static void _e_shelf_cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void *event_info); +static void _e_shelf_cb_mouse_out(void *data, Evas *evas, Evas_Object *obj, void *event_info); static int _e_shelf_cb_id_sort(void *data1, void *data2); static int _e_shelf_cb_hide_animator(void *data); static int _e_shelf_cb_hide_animator_timer(void *data); @@ -123,7 +123,6 @@ e_popup_layer_set(es->popup, layer); es->ee = es->popup->ecore_evas; es->evas = es->popup->evas; - ecore_evas_data_set(es->ee, "e_shelf", es); } else { @@ -139,10 +138,14 @@ es->o_event = evas_object_rectangle_add(es->evas); evas_object_color_set(es->o_event, 0, 0, 0, 0); evas_object_resize(es->o_event, es->w, es->h); - evas_object_event_callback_add(es->o_event, EVAS_CALLBACK_MOUSE_DOWN, _e_shelf_cb_mouse_down, es); - ecore_evas_callback_mouse_in_set(es->ee, _e_shelf_cb_mouse_in); - ecore_evas_callback_mouse_out_set(es->ee, _e_shelf_cb_mouse_out); + + es->o_hide = evas_object_rectangle_add(es->evas); + evas_object_color_set(es->o_hide, 0, 0, 0, 0); + evas_object_resize(es->o_hide, es->w, es->h); + evas_object_event_callback_add(es->o_hide, EVAS_CALLBACK_MOUSE_IN, _e_shelf_cb_mouse_in, es); + evas_object_event_callback_add(es->o_hide, EVAS_CALLBACK_MOUSE_OUT, _e_shelf_cb_mouse_out, es); + evas_object_repeat_events_set(es->o_hide, 1); es->o_base = edje_object_add(es->evas); es->name = evas_stringshare_add(name); @@ -153,14 +156,18 @@ "e/shelf/default/base"); if (es->popup) { + evas_object_layer_set(es->o_hide, 1); + evas_object_show(es->o_hide); evas_object_show(es->o_event); evas_object_show(es->o_base); e_popup_edje_bg_object_set(es->popup, es->o_base); } else { + evas_object_move(es->o_hide, es->zone->x + es->x, es->zone->y + es->y); evas_object_move(es->o_event, es->zone->x + es->x, es->zone->y + es->y); evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y); + evas_object_layer_set(es->o_hide, layer + 1); evas_object_layer_set(es->o_event, layer); evas_object_layer_set(es->o_base, layer); } @@ -250,6 +257,7 @@ e_popup_show(es->popup); else { + evas_object_show(es->o_hide); evas_object_show(es->o_event); evas_object_show(es->o_base); } @@ -264,6 +272,7 @@ e_popup_hide(es->popup); else { + evas_object_hide(es->o_hide); evas_object_hide(es->o_event); evas_object_hide(es->o_base); } @@ -275,8 +284,6 @@ E_OBJECT_CHECK(es); E_OBJECT_TYPE_CHECK(es, E_SHELF_TYPE); - if ((!es->popup) || (!es->cfg->autohide)) return; - if ((show) && (es->hidden)) { es->hidden = 0; @@ -296,7 +303,7 @@ es->hide_animator = ecore_animator_add(_e_shelf_cb_hide_animator, es); } } - else if ((!show) && (!es->hidden) && (!es->gadcon->editing)) + else if ((!show) && (!es->hidden) && (!es->gadcon->editing) && (es->cfg->autohide)) { es->hidden = 1; edje_object_signal_emit(es->o_base, "e,state,hidden", "e"); @@ -329,6 +336,7 @@ e_popup_move(es->popup, es->x, es->y); else { + evas_object_move(es->o_hide, es->zone->x + es->x, es->zone->y + es->y); evas_object_move(es->o_event, es->zone->x + es->x, es->zone->y + es->y); evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y); } @@ -343,6 +351,7 @@ es->h = h; if (es->popup) e_popup_resize(es->popup, es->w, es->h); + evas_object_resize(es->o_hide, es->w, es->h); evas_object_resize(es->o_event, es->w, es->h); evas_object_resize(es->o_base, es->w, es->h); } @@ -360,9 +369,11 @@ e_popup_move_resize(es->popup, es->x, es->y, es->w, es->h); else { + evas_object_move(es->o_hide, es->zone->x + es->x, es->zone->y + es->y); evas_object_move(es->o_event, es->zone->x + es->x, es->zone->y + es->y); evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y); } + evas_object_resize(es->o_hide, es->w, es->h); evas_object_resize(es->o_event, es->w, es->h); evas_object_resize(es->o_base, es->w, es->h); } @@ -378,6 +389,7 @@ e_popup_layer_set(es->popup, es->layer); else { + evas_object_layer_set(es->o_hide, es->layer + 1); evas_object_layer_set(es->o_event, es->layer); evas_object_layer_set(es->o_base, es->layer); } @@ -596,6 +608,7 @@ EAPI void e_shelf_popup_set(E_Shelf *es, int popup) { + /* FIXME: Needs to recreate the evas objects. */ E_OBJECT_CHECK(es); E_OBJECT_TYPE_CHECK(es, E_SHELF_TYPE); @@ -608,14 +621,17 @@ e_popup_layer_set(es->popup, es->cfg->layer); es->ee = es->popup->ecore_evas; es->evas = es->popup->evas; + evas_object_show(es->o_hide); evas_object_show(es->o_event); evas_object_show(es->o_base); e_popup_edje_bg_object_set(es->popup, es->o_base); } else { + evas_object_move(es->o_hide, es->zone->x + es->x, es->zone->y + es->y); evas_object_move(es->o_event, es->zone->x + es->x, es->zone->y + es->y); evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y); + evas_object_layer_set(es->o_hide, es->cfg->layer); evas_object_layer_set(es->o_event, es->cfg->layer); evas_object_layer_set(es->o_base, es->cfg->layer); } @@ -647,6 +663,7 @@ e_object_del(E_OBJECT(es->gadcon)); evas_stringshare_del(es->name); evas_stringshare_del(es->style); + evas_object_del(es->o_hide); evas_object_del(es->o_event); evas_object_del(es->o_base); if (es->popup) @@ -1148,23 +1165,21 @@ } static void -_e_shelf_cb_mouse_in(Ecore_Evas *ee) +_e_shelf_cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void *event_info) { E_Shelf *es; - es = ecore_evas_data_get(ee, "e_shelf"); - if (!es) return; + es = data; edje_object_signal_emit(es->o_base, "e,state,focused", "e"); e_shelf_toggle(es, 1); } static void -_e_shelf_cb_mouse_out(Ecore_Evas *ee) +_e_shelf_cb_mouse_out(void *data, Evas *evas, Evas_Object *obj, void *event_info) { E_Shelf *es; - es = ecore_evas_data_get(ee, "e_shelf"); - if (!es) return; + es = data; e_shelf_toggle(es, 0); } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_shelf.h,v retrieving revision 1.22 retrieving revision 1.23 diff -u -3 -r1.22 -r1.23 --- e_shelf.h 7 May 2007 16:37:54 -0000 1.22 +++ e_shelf.h 7 May 2007 19:16:51 -0000 1.23 @@ -21,6 +21,7 @@ E_Zone *zone; Evas_Object *o_base; Evas_Object *o_event; + Evas_Object *o_hide; Ecore_Evas *ee; Evas *evas; E_Gadcon *gadcon; ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs