add cleanup functions to the client list menus that removes everything from them when they are not being shown (saves iterating thru the list uselessly when a client is unmanaged)
This commit is contained in:
parent
3fd74abb3c
commit
6e799ad40d
2 changed files with 17 additions and 0 deletions
|
@ -37,6 +37,11 @@ static ObMenu *combined_menu;
|
||||||
#define ADD_DESKTOP -2
|
#define ADD_DESKTOP -2
|
||||||
#define REMOVE_DESKTOP -3
|
#define REMOVE_DESKTOP -3
|
||||||
|
|
||||||
|
static void self_cleanup(ObMenu *menu, gpointer data)
|
||||||
|
{
|
||||||
|
menu_clear_entries(menu);
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean self_update(ObMenuFrame *frame, gpointer data)
|
static gboolean self_update(ObMenuFrame *frame, gpointer data)
|
||||||
{
|
{
|
||||||
ObMenu *menu = frame->menu;
|
ObMenu *menu = frame->menu;
|
||||||
|
@ -151,6 +156,7 @@ void client_list_combined_menu_startup(gboolean reconfig)
|
||||||
|
|
||||||
combined_menu = menu_new(MENU_NAME, _("Windows"), TRUE, NULL);
|
combined_menu = menu_new(MENU_NAME, _("Windows"), TRUE, NULL);
|
||||||
menu_set_update_func(combined_menu, self_update);
|
menu_set_update_func(combined_menu, self_update);
|
||||||
|
menu_set_cleanup_func(combined_menu, self_cleanup);
|
||||||
menu_set_execute_func(combined_menu, menu_execute);
|
menu_set_execute_func(combined_menu, menu_execute);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -121,6 +121,16 @@ static void desk_menu_destroy(ObMenu *menu, gpointer data)
|
||||||
desktop_menus = g_slist_remove(desktop_menus, menu);
|
desktop_menus = g_slist_remove(desktop_menus, menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void self_cleanup(ObMenu *menu, gpointer data)
|
||||||
|
{
|
||||||
|
menu_clear_entries(menu);
|
||||||
|
|
||||||
|
while (desktop_menus) {
|
||||||
|
menu_free(desktop_menus->data);
|
||||||
|
desktop_menus = g_slist_delete_link(desktop_menus, desktop_menus);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean self_update(ObMenuFrame *frame, gpointer data)
|
static gboolean self_update(ObMenuFrame *frame, gpointer data)
|
||||||
{
|
{
|
||||||
ObMenu *menu = frame->menu;
|
ObMenu *menu = frame->menu;
|
||||||
|
@ -203,6 +213,7 @@ void client_list_menu_startup(gboolean reconfig)
|
||||||
|
|
||||||
menu = menu_new(MENU_NAME, _("Desktops"), TRUE, NULL);
|
menu = menu_new(MENU_NAME, _("Desktops"), TRUE, NULL);
|
||||||
menu_set_update_func(menu, self_update);
|
menu_set_update_func(menu, self_update);
|
||||||
|
menu_set_cleanup_func(menu, self_cleanup);
|
||||||
menu_set_execute_func(menu, self_execute);
|
menu_set_execute_func(menu, self_execute);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue