diff options
| author | Dana Jansens <danakj@orodu.net> | 2010-05-11 19:01:46 -0400 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2010-05-11 19:01:46 -0400 |
| commit | 6e799ad40d8f313383dda1ac143eae14c41b9c89 (patch) | |
| tree | 6c602da7aaf6ac0741b84244909cd325142d31a9 /openbox/client_list_menu.c | |
| parent | 3fd74abb3c2969f170d727154245cde3ef8a4b87 (diff) | |
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)
Diffstat (limited to 'openbox/client_list_menu.c')
| -rw-r--r-- | openbox/client_list_menu.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/openbox/client_list_menu.c b/openbox/client_list_menu.c index b47ead02..f3df2a5a 100644 --- a/openbox/client_list_menu.c +++ b/openbox/client_list_menu.c @@ -121,6 +121,16 @@ static void desk_menu_destroy(ObMenu *menu, gpointer data) 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) { ObMenu *menu = frame->menu; @@ -203,6 +213,7 @@ void client_list_menu_startup(gboolean reconfig) menu = menu_new(MENU_NAME, _("Desktops"), TRUE, NULL); menu_set_update_func(menu, self_update); + menu_set_cleanup_func(menu, self_cleanup); menu_set_execute_func(menu, self_execute); } |
