[gnome-builder] plugins/buildui: allow selecting auto-discover
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] plugins/buildui: allow selecting auto-discover
- Date: Wed, 20 Jul 2022 05:02:40 +0000 (UTC)
commit eb9ac182c4e74cb3ea03b57b56a69e4ae9816af6
Author: Christian Hergert <chergert redhat com>
Date: Tue Jul 19 22:01:52 2022 -0700
plugins/buildui: allow selecting auto-discover
Sort of a hack when we should probably just use a AdwExpanderRow, but this
is a bit easier to wire up to the gsetting.
src/libide/gui/ide-preferences-window.c | 11 +++++++++++
.../buildui/gbp-buildui-preferences-addin.c | 23 ++++++++++++++++++++--
2 files changed, 32 insertions(+), 2 deletions(-)
---
diff --git a/src/libide/gui/ide-preferences-window.c b/src/libide/gui/ide-preferences-window.c
index d7ed9eaf7..67968f0cc 100644
--- a/src/libide/gui/ide-preferences-window.c
+++ b/src/libide/gui/ide-preferences-window.c
@@ -285,6 +285,15 @@ search_changed_cb (IdePreferencesWindow *self,
gtk_list_box_set_filter_func (page->list_box, filter_rows_cb, g_strdup (text), g_free);
}
+static void
+set_page_action (GtkWidget *widget,
+ const char *action_name,
+ GVariant *param)
+{
+ ide_preferences_window_set_page (IDE_PREFERENCES_WINDOW (widget),
+ g_variant_get_string (param, NULL));
+}
+
static void
ide_preferences_window_extension_added (IdeExtensionSetAdapter *set,
PeasPluginInfo *plugin_info,
@@ -492,6 +501,8 @@ ide_preferences_window_class_init (IdePreferencesWindowClass *klass)
gtk_widget_class_bind_template_callback (widget_class, go_back_cb);
gtk_widget_class_add_binding_action (widget_class, GDK_KEY_w, GDK_CONTROL_MASK, "window.close", NULL);
+
+ gtk_widget_class_install_action (widget_class, "win.page", "s", set_page_action);
}
static void
diff --git a/src/plugins/buildui/gbp-buildui-preferences-addin.c
b/src/plugins/buildui/gbp-buildui-preferences-addin.c
index ccefc52e0..060df1767 100644
--- a/src/plugins/buildui/gbp-buildui-preferences-addin.c
+++ b/src/plugins/buildui/gbp-buildui-preferences-addin.c
@@ -134,10 +134,13 @@ list_run_commands_cb (GObject *object,
GAsyncResult *result,
gpointer user_data)
{
+ static GListStore *empty_model;
IdeRunManager *run_manager = (IdeRunManager *)object;
+ g_autoptr(GtkFlattenListModel) flatten = NULL;
g_autoptr(GtkDropDown) drop_down = user_data;
g_autoptr(GListModel) model = NULL;
g_autoptr(GError) error = NULL;
+ GListStore *wrapper;
int command_index = -1;
g_assert (IDE_IS_MAIN_THREAD ());
@@ -166,10 +169,26 @@ list_run_commands_cb (GObject *object,
}
}
- gtk_drop_down_set_model (drop_down, model);
+ if (!empty_model)
+ {
+ g_autoptr(IdeRunCommand) empty = g_object_new (IDE_TYPE_RUN_COMMAND,
+ "id", "",
+ "display-name", _("Automatically Discover"),
+ NULL);
+ empty_model = g_list_store_new (IDE_TYPE_RUN_COMMAND);
+ g_list_store_append (empty_model, empty);
+ }
+
+ wrapper = g_list_store_new (G_TYPE_LIST_MODEL);
+ g_list_store_append (wrapper, empty_model);
+ if (model != NULL)
+ g_list_store_append (wrapper, model);
+ flatten = gtk_flatten_list_model_new (G_LIST_MODEL (wrapper));
+
+ gtk_drop_down_set_model (drop_down, G_LIST_MODEL (flatten));
if (command_index > -1)
- gtk_drop_down_set_selected (drop_down, command_index);
+ gtk_drop_down_set_selected (drop_down, command_index+1);
g_signal_connect_object (drop_down,
"notify::selected-item",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]