From 81d41018aef6a611543443eb7a862d22a3869823 Mon Sep 17 00:00:00 2001 From: Mikael Magnusson Date: Thu, 29 Dec 2022 20:39:26 +0100 Subject: [PATCH] Add option Add option to change the client list menus back to separating iconified windows with a line instead of bracketing them. --- openbox/client_list_combined_menu.c | 15 ++++++++++++--- openbox/client_list_menu.c | 15 ++++++++++++--- openbox/config.c | 4 ++++ openbox/config.h | 2 ++ 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/openbox/client_list_combined_menu.c b/openbox/client_list_combined_menu.c index c26b6fa0..8aeb6058 100644 --- a/openbox/client_list_combined_menu.c +++ b/openbox/client_list_combined_menu.c @@ -54,6 +54,7 @@ static gboolean self_update(ObMenuFrame *frame, gpointer data) for (desktop = 0; desktop < screen_num_desktops; desktop++) { gboolean empty = TRUE; gboolean onlyiconic = TRUE; + gboolean noicons = TRUE; menu_add_separator(menu, SEPARATOR, screen_desktop_names[desktop]); for (it = focus_order; it; it = g_list_next(it)) { @@ -65,9 +66,17 @@ static gboolean self_update(ObMenuFrame *frame, gpointer data) empty = FALSE; if (c->iconic) { - gchar *title = g_strdup_printf("(%s)", c->icon_title); - e = menu_add_normal(menu, desktop, title, NULL, FALSE); - g_free(title); + if (config_menu_separate_iconic) { + if (noicons) { + menu_add_separator(menu, -1, NULL); + noicons = FALSE; + } + e = menu_add_normal(menu, desktop, c->icon_title, NULL, FALSE); + } else { + gchar *title = g_strdup_printf("(%s)", c->icon_title); + e = menu_add_normal(menu, desktop, title, NULL, FALSE); + g_free(title); + } } else { onlyiconic = FALSE; e = menu_add_normal(menu, desktop, c->title, NULL, FALSE); diff --git a/openbox/client_list_menu.c b/openbox/client_list_menu.c index f3df2a5a..1fab80cb 100644 --- a/openbox/client_list_menu.c +++ b/openbox/client_list_menu.c @@ -49,6 +49,7 @@ static gboolean desk_menu_update(ObMenuFrame *frame, gpointer data) GList *it; gboolean empty = TRUE; gboolean onlyiconic = TRUE; + gboolean noicons = TRUE; menu_clear_entries(menu); @@ -61,9 +62,17 @@ static gboolean desk_menu_update(ObMenuFrame *frame, gpointer data) empty = FALSE; if (c->iconic) { - gchar *title = g_strdup_printf("(%s)", c->icon_title); - e = menu_add_normal(menu, d->desktop, title, NULL, FALSE); - g_free(title); + if (config_menu_separate_iconic) { + if (noicons) { + menu_add_separator(menu, -1, NULL); + noicons = FALSE; + } + e = menu_add_normal(menu, d->desktop, c->icon_title, NULL, FALSE); + } else { + gchar *title = g_strdup_printf("(%s)", c->icon_title); + e = menu_add_normal(menu, d->desktop, title, NULL, FALSE); + g_free(title); + } } else { onlyiconic = FALSE; e = menu_add_normal(menu, d->desktop, c->title, NULL, FALSE); diff --git a/openbox/config.c b/openbox/config.c index 6fd03966..8cc52841 100644 --- a/openbox/config.c +++ b/openbox/config.c @@ -100,6 +100,7 @@ guint config_submenu_show_delay; guint config_submenu_hide_delay; gboolean config_menu_manage_desktops; gboolean config_menu_show_icons; +gboolean config_menu_separate_iconic; GSList *config_menu_files; @@ -976,6 +977,8 @@ static void parse_menu(xmlNodePtr node, gpointer d) g_message(_("Openbox was compiled without image loading support. Icons in menus will not be loaded.")); #endif } + if ((n = obt_xml_find_node(node, "separateIconic"))) + config_menu_separate_iconic = obt_xml_node_bool(n); for (node = obt_xml_find_node(node, "file"); node; @@ -1187,6 +1190,7 @@ void config_startup(ObtXmlInst *i) config_menu_manage_desktops = TRUE; config_menu_files = NULL; config_menu_show_icons = TRUE; + config_menu_separate_iconic = FALSE; obt_xml_register(i, "menu", parse_menu, NULL); diff --git a/openbox/config.h b/openbox/config.h index 51944b37..277d8b47 100644 --- a/openbox/config.h +++ b/openbox/config.h @@ -215,6 +215,8 @@ extern guint config_submenu_hide_delay; extern gboolean config_menu_manage_desktops; /*! Load & show icons in user-defined menus */ extern gboolean config_menu_show_icons; +/*! Separate iconic windows instead of bracketing */ +extern gboolean config_menu_separate_iconic; /*! User-specified menu files */ extern GSList *config_menu_files; /*! Per app settings */ -- 2.34.1