From 1bbcf1abb0f9368c2ac2a0638812b56a48b84301 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 31 Dec 2012 07:47:51 +0000 Subject: [PATCH] added function to hide all active menus, always hide menus when desklocking SVN revision: 81925 --- ChangeLog | 5 +++++ NEWS | 2 ++ src/bin/e_desklock.c | 2 ++ src/bin/e_menu.c | 14 ++++++++++++++ src/bin/e_menu.h | 1 + 5 files changed, 24 insertions(+) diff --git a/ChangeLog b/ChangeLog index 49c64efdf..6777f0afe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-12-31 Mike Blumenkrantz + + * Added function to hide all active menus + * Always hide menus on desklock + 2012-12-29 Mike Blumenkrantz * Fix incorrect config value clamping for window autoraise delay diff --git a/NEWS b/NEWS index 76b674cc8..b45ae5214 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,7 @@ Changes since 0.17.0: Additions: * Added action to reset filemanager + * Added function to hide all active menus Deprecations: * @@ -37,3 +38,4 @@ Fixes: * Fix construction of variant list for setxkbmap * Fix border(less) style of internal elm tooltip windows * Fix incorrect config value clamping for window autoraise delay + * Always hide menus on desklock diff --git a/src/bin/e_desklock.c b/src/bin/e_desklock.c index f28179039..8df275a30 100644 --- a/src/bin/e_desklock.c +++ b/src/bin/e_desklock.c @@ -218,6 +218,7 @@ e_desklock_show(Eina_Bool suspend) if (e_config->desklock_use_custom_desklock && e_config->desklock_custom_desklock_cmd && e_config->desklock_custom_desklock_cmd[0]) { + e_menu_hide_all(); _e_custom_desklock_exe_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _e_desklock_cb_custom_desklock_exit, NULL); @@ -264,6 +265,7 @@ e_desklock_show(Eina_Bool suspend) edd->elock_wnd = ecore_x_window_input_new(e_manager_current_get()->root, 0, 0, 1, 1); ecore_x_window_show(edd->elock_wnd); managers = e_manager_list(); + e_menu_hide_all(); if (!e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd)) { EINA_LIST_FOREACH(managers, l, man) diff --git a/src/bin/e_menu.c b/src/bin/e_menu.c index 8c21dce5f..276e8dab1 100644 --- a/src/bin/e_menu.c +++ b/src/bin/e_menu.c @@ -230,6 +230,20 @@ e_menu_shutdown(void) return 1; } +EAPI void +e_menu_hide_all(void) +{ + E_Menu *m; + + EINA_LIST_FREE(_e_active_menus, m) + { + m->active = 0; + _e_menu_unrealize(m); + m->in_active_list = 0; + e_object_unref(E_OBJECT(m)); + } +} + EAPI E_Menu * e_menu_new(void) { diff --git a/src/bin/e_menu.h b/src/bin/e_menu.h index de1a61e30..2bd2482c4 100644 --- a/src/bin/e_menu.h +++ b/src/bin/e_menu.h @@ -161,6 +161,7 @@ struct _E_Menu_Category_Callback EINTERN int e_menu_init(void); EINTERN int e_menu_shutdown(void); +EAPI void e_menu_hide_all(void); EAPI E_Menu *e_menu_new(void); EAPI void e_menu_activate_key(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir); EAPI void e_menu_activate_mouse(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir, Ecore_X_Time activate_time);