[gnome-builder] header-bar: hide workbench menu when no items are present
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] header-bar: hide workbench menu when no items are present
- Date: Sat, 16 Dec 2017 23:07:51 +0000 (UTC)
commit 6018ad4a4d1a2bac915b57dcd2261bbc51261cf3
Author: Christian Hergert <chergert redhat com>
Date: Sat Dec 16 15:06:06 2017 -0800
header-bar: hide workbench menu when no items are present
If there are no items in the workbench menu, we should hide the
button automatically. This can happen if no plugins add any
items to the menu.
src/libide/workbench/ide-workbench-header-bar.c | 29 +++++++++++++++++++++++
1 files changed, 29 insertions(+), 0 deletions(-)
---
diff --git a/src/libide/workbench/ide-workbench-header-bar.c b/src/libide/workbench/ide-workbench-header-bar.c
index 2bb358c..dc0c44f 100644
--- a/src/libide/workbench/ide-workbench-header-bar.c
+++ b/src/libide/workbench/ide-workbench-header-bar.c
@@ -52,6 +52,23 @@ ide_workbench_header_bar_new (void)
}
static void
+ide_workbench_header_bar_menu_items_changed (IdeWorkbenchHeaderBar *self,
+ guint position,
+ guint removed,
+ guint added,
+ GMenu *menu)
+{
+ IdeWorkbenchHeaderBarPrivate *priv = ide_workbench_header_bar_get_instance_private (self);
+ gboolean visible;
+
+ g_assert (IDE_IS_WORKBENCH_HEADER_BAR (self));
+ g_assert (G_IS_MENU (menu));
+
+ visible = g_menu_model_get_n_items (G_MENU_MODEL (menu)) > 0;
+ gtk_widget_set_visible (GTK_WIDGET (priv->menu_button), visible);
+}
+
+static void
search_popover_position_func (DzlSuggestionEntry *entry,
GdkRectangle *area,
gboolean *is_absolute,
@@ -115,6 +132,18 @@ ide_workbench_header_bar_init (IdeWorkbenchHeaderBar *self)
dzl_suggestion_entry_set_position_func (DZL_SUGGESTION_ENTRY (priv->search_entry),
search_popover_position_func, NULL, NULL);
+
+ /*
+ * We want to track whether or not there are any menu items
+ * in the workbench menu. If there are no items, then we will
+ * hide the menu.
+ */
+ g_signal_connect_object (model,
+ "items-changed",
+ G_CALLBACK (ide_workbench_header_bar_menu_items_changed),
+ self,
+ G_CONNECT_SWAPPED);
+ ide_workbench_header_bar_menu_items_changed (self, 0, 0, 0, model);
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]