From af9c9c7df0314ffa88ed8473d2fcf8c32f9fc9e3 Mon Sep 17 00:00:00 2001 From: Gustavo Sverzut Barbieri Date: Sat, 10 Jan 2009 07:09:45 +0000 Subject: [PATCH] e_shelf: lock whenever its menu is active. Anytime shelf appends its submenu, it will lock shelf so it's not hidden automatically. Unlock happens as soon as the menu item is deleted. SVN revision: 38529 --- src/bin/e_shelf.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/bin/e_shelf.c b/src/bin/e_shelf.c index 250c5bb3e..b12689f73 100644 --- a/src/bin/e_shelf.c +++ b/src/bin/e_shelf.c @@ -1082,6 +1082,13 @@ _e_shelf_toggle_border_fix(E_Shelf *es) } } +static void +_e_shelf_menu_item_free(void *data) +{ + E_Shelf *es = e_object_data_get(data); + e_shelf_locked_set(es, 0); +} + static void _e_shelf_menu_append(E_Shelf *es, E_Menu *mn) { @@ -1093,12 +1100,16 @@ _e_shelf_menu_append(E_Shelf *es, E_Menu *mn) name = es->name; if (!name) name = _("Shelf #"); snprintf(buf, sizeof(buf), "%s %i", name, es->id); - + + e_shelf_locked_set(es, 1); + subm = e_menu_new(); mi = e_menu_item_new(mn); e_menu_item_label_set(mi, buf); e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf"); e_menu_pre_activate_callback_set(subm, _e_shelf_menu_pre_cb, es); + e_object_free_attach_func_set(E_OBJECT(mi), _e_shelf_menu_item_free); + e_object_data_set(E_OBJECT(mi), es); e_menu_item_submenu_set(mi, subm); }