diff --git a/src/bin/e_shelf.c b/src/bin/e_shelf.c index 70296bd2f..2899ae9e6 100644 --- a/src/bin/e_shelf.c +++ b/src/bin/e_shelf.c @@ -131,11 +131,9 @@ e_shelf_zone_dummy_new(E_Zone *zone, Evas_Object *obj, int id) es->zone = zone; es->dummy = 1; es->o_base = obj; + es->cfg = E_NEW(E_Config_Shelf, 1); + e_object_del_attach_func_set(E_OBJECT(es), _e_shelf_del_cb); - es->gadcon = e_gadcon_dummy_new(id); - es->gadcon->location = - e_gadcon_location_new(NULL, E_GADCON_SITE_SHELF, NULL, NULL, NULL, NULL); - e_gadcon_location_register(es->gadcon->location); dummies = eina_list_append(dummies, es); return es; @@ -570,9 +568,9 @@ e_shelf_orient(E_Shelf *es, E_Gadcon_Orient orient) E_OBJECT_IF_NOT_TYPE(es, E_SHELF_DUMMY_TYPE) E_OBJECT_TYPE_CHECK(es, E_SHELF_TYPE); - e_gadcon_orient(es->gadcon, orient); if (!es->dummy) { + e_gadcon_orient(es->gadcon, orient); snprintf(buf, sizeof(buf), "e,state,orientation,%s", e_shelf_orient_string_get(es)); edje_object_signal_emit(es->o_base, buf, "e"); @@ -923,7 +921,10 @@ _e_shelf_del_cb(void *d) es = d; if (es->dummy) - dummies = eina_list_remove(dummies, es); + { + dummies = eina_list_remove(dummies, es); + E_FREE(es->cfg); + } else shelves = eina_list_remove(shelves, es); } diff --git a/src/bin/e_shelf.h b/src/bin/e_shelf.h index f30fd60d8..df3253fed 100644 --- a/src/bin/e_shelf.h +++ b/src/bin/e_shelf.h @@ -62,6 +62,7 @@ EAPI void e_shelf_config_update(void); EAPI Eina_List *e_shelf_list(void); EAPI Eina_List *e_shelf_list_all(void); // includes dummy shelves EAPI E_Shelf *e_shelf_zone_new(E_Zone *zone, const char *name, const char *style, int popup, int layer, int id); +EAPI E_Shelf *e_shelf_zone_dummy_new(E_Zone *zone, Evas_Object *obj, int id); EAPI void e_shelf_zone_move_resize_handle(E_Zone *zone); EAPI void e_shelf_populate(E_Shelf *es); EAPI void e_shelf_show(E_Shelf *es);