[gtk/inspector-tweaks: 6/7] inspector: Manage visibility of stack pages
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/inspector-tweaks: 6/7] inspector: Manage visibility of stack pages
- Date: Tue, 2 Apr 2019 23:38:14 +0000 (UTC)
commit 7c2ce72b5f86690f259a00a0f01be288d8de436a
Author: Matthias Clasen <mclasen redhat com>
Date: Tue Apr 2 23:24:57 2019 +0000
inspector: Manage visibility of stack pages
The hand-rolled stack combo we were using before
was looking at the visibility of the page itself
to show or hide items. Other stack switchers
expect us to use the GtkStackPage::visible
property for this.
gtk/inspector/actions.c | 18 +++++++++++++-----
gtk/inspector/controllers.c | 13 ++++++++++++-
gtk/inspector/css-node-tree.c | 9 +++++++--
gtk/inspector/data-list.c | 10 ++++++++--
gtk/inspector/magnifier.c | 11 +++++++++--
gtk/inspector/menu.c | 22 ++++++++++++++++------
gtk/inspector/size-groups.c | 16 ++++++++++------
7 files changed, 75 insertions(+), 24 deletions(-)
---
diff --git a/gtk/inspector/actions.c b/gtk/inspector/actions.c
index cd6f413ac2..c4ec553c27 100644
--- a/gtk/inspector/actions.c
+++ b/gtk/inspector/actions.c
@@ -28,6 +28,7 @@
#include "gtkwidgetprivate.h"
#include "gtkpopover.h"
#include "gtklabel.h"
+#include "gtkstack.h"
enum
{
@@ -167,13 +168,14 @@ action_state_changed_cb (GActionGroup *group,
static void
add_group (GtkInspectorActions *sl,
+ GtkStackPage *page,
GActionGroup *group,
const gchar *prefix)
{
gint i;
gchar **names;
- gtk_widget_show (GTK_WIDGET (sl));
+ g_object_set (page, "visible", TRUE, NULL);
g_signal_connect (group, "action-added", G_CALLBACK (action_added_cb), sl);
g_signal_connect (group, "action-removed", G_CALLBACK (action_removed_cb), sl);
@@ -203,16 +205,22 @@ void
gtk_inspector_actions_set_object (GtkInspectorActions *sl,
GObject *object)
{
- gtk_widget_hide (GTK_WIDGET (sl));
+ GtkWidget *stack;
+ GtkStackPage *page;
+
+ stack = gtk_widget_get_parent (GTK_WIDGET (sl));
+ page = gtk_stack_get_page (GTK_STACK (stack), GTK_WIDGET (sl));
+
+ g_object_set (page, "visible", FALSE, NULL);
g_hash_table_foreach (sl->priv->groups, disconnect_group, sl);
g_hash_table_remove_all (sl->priv->groups);
g_hash_table_remove_all (sl->priv->iters);
gtk_list_store_clear (sl->priv->model);
if (GTK_IS_APPLICATION (object))
- add_group (sl, G_ACTION_GROUP (object), "app");
+ add_group (sl, page, G_ACTION_GROUP (object), "app");
else if (GTK_IS_APPLICATION_WINDOW (object))
- add_group (sl, G_ACTION_GROUP (object), "win");
+ add_group (sl, page, G_ACTION_GROUP (object), "win");
else if (GTK_IS_WIDGET (object))
{
const gchar **prefixes;
@@ -225,7 +233,7 @@ gtk_inspector_actions_set_object (GtkInspectorActions *sl,
for (i = 0; prefixes[i]; i++)
{
group = gtk_widget_get_action_group (GTK_WIDGET (object), prefixes[i]);
- add_group (sl, group, prefixes[i]);
+ add_group (sl, page, group, prefixes[i]);
}
g_free (prefixes);
}
diff --git a/gtk/inspector/controllers.c b/gtk/inspector/controllers.c
index 179b4fa625..4fa0b313b8 100644
--- a/gtk/inspector/controllers.c
+++ b/gtk/inspector/controllers.c
@@ -33,6 +33,7 @@
#include "gtkscrolledwindow.h"
#include "gtksortlistmodel.h"
#include "gtkwidgetprivate.h"
+#include "gtkstack.h"
enum
{
@@ -204,13 +205,23 @@ void
gtk_inspector_controllers_set_object (GtkInspectorControllers *sl,
GObject *object)
{
+ GtkWidget *stack;
+ GtkStackPage *page;
GtkInspectorControllersPrivate *priv = sl->priv;
GtkMapListModel *map_model;
GtkFlattenListModel *flatten_model;
GtkSortListModel *sort_model;
+ stack = gtk_widget_get_parent (GTK_WIDGET (sl));
+ page = gtk_stack_get_page (GTK_STACK (stack), GTK_WIDGET (sl));
+
if (!GTK_IS_WIDGET (object))
- return;
+ {
+ g_object_set (page, "visible", FALSE, NULL);
+ return;
+ }
+
+ g_object_set (page, "visible", TRUE, NULL);
priv->model = gtk_property_lookup_list_model_new (GTK_TYPE_WIDGET, "parent");
gtk_property_lookup_list_model_set_object (priv->model, object);
diff --git a/gtk/inspector/css-node-tree.c b/gtk/inspector/css-node-tree.c
index b7d9a3cb13..6093c81d5f 100644
--- a/gtk/inspector/css-node-tree.c
+++ b/gtk/inspector/css-node-tree.c
@@ -408,6 +408,8 @@ void
gtk_inspector_css_node_tree_set_object (GtkInspectorCssNodeTree *cnt,
GObject *object)
{
+ GtkWidget *stack;
+ GtkStackPage *page;
GtkInspectorCssNodeTreePrivate *priv;
GtkCssNode *node, *root;
GtkTreePath *path;
@@ -417,13 +419,16 @@ gtk_inspector_css_node_tree_set_object (GtkInspectorCssNodeTree *cnt,
priv = cnt->priv;
+ stack = gtk_widget_get_parent (GTK_WIDGET (cnt));
+ page = gtk_stack_get_page (GTK_STACK (stack), GTK_WIDGET (cnt));
+
if (!GTK_IS_WIDGET (object))
{
- gtk_widget_hide (GTK_WIDGET (cnt));
+ g_object_set (page, "visible", FALSE, NULL);
return;
}
- gtk_widget_show (GTK_WIDGET (cnt));
+ g_object_set (page, "visible", TRUE, NULL);
root = node = gtk_widget_get_css_node (GTK_WIDGET (object));
while (gtk_css_node_get_parent (root))
diff --git a/gtk/inspector/data-list.c b/gtk/inspector/data-list.c
index 6ba7955f0e..c15ace1352 100644
--- a/gtk/inspector/data-list.c
+++ b/gtk/inspector/data-list.c
@@ -26,6 +26,7 @@
#include "gtkcellrenderertext.h"
#include "gtktogglebutton.h"
#include "gtklabel.h"
+#include "gtkstack.h"
struct _GtkInspectorDataListPrivate
@@ -116,15 +117,20 @@ void
gtk_inspector_data_list_set_object (GtkInspectorDataList *sl,
GObject *object)
{
+ GtkWidget *stack;
+ GtkStackPage *page;
gchar *title;
+ stack = gtk_widget_get_parent (GTK_WIDGET (sl));
+ page = gtk_stack_get_page (GTK_STACK (stack), GTK_WIDGET (sl));
+
clear_view (sl);
sl->priv->object = NULL;
sl->priv->show_data = FALSE;
if (!GTK_IS_TREE_MODEL (object))
{
- gtk_widget_hide (GTK_WIDGET (sl));
+ g_object_set (page, "visible", FALSE, NULL);
return;
}
@@ -132,7 +138,7 @@ gtk_inspector_data_list_set_object (GtkInspectorDataList *sl,
gtk_label_set_label (GTK_LABEL (sl->priv->object_title), title);
g_free (title);
- gtk_widget_show (GTK_WIDGET (sl));
+ g_object_set (page, "visible", TRUE, NULL);
sl->priv->object = GTK_TREE_MODEL (object);
add_columns (sl);
diff --git a/gtk/inspector/magnifier.c b/gtk/inspector/magnifier.c
index f4a0f7e2e3..34cf33fa19 100644
--- a/gtk/inspector/magnifier.c
+++ b/gtk/inspector/magnifier.c
@@ -24,6 +24,7 @@
#include "gtklabel.h"
#include "gtkadjustment.h"
+#include "gtkstack.h"
enum
{
@@ -51,16 +52,22 @@ void
gtk_inspector_magnifier_set_object (GtkInspectorMagnifier *sl,
GObject *object)
{
+ GtkWidget *stack;
+ GtkStackPage *page;
+
+ stack = gtk_widget_get_parent (GTK_WIDGET (sl));
+ page = gtk_stack_get_page (GTK_STACK (stack), GTK_WIDGET (sl));
+
sl->priv->object = NULL;
if (!GTK_IS_WIDGET (object) || !gtk_widget_is_visible (GTK_WIDGET (object)))
{
- gtk_widget_hide (GTK_WIDGET (sl));
+ g_object_set (page, "visible", FALSE, NULL);
_gtk_magnifier_set_inspected (GTK_MAGNIFIER (sl->priv->magnifier), NULL);
return;
}
- gtk_widget_show (GTK_WIDGET (sl));
+ g_object_set (page, "visible", TRUE, NULL);
sl->priv->object = GTK_WIDGET (object);
diff --git a/gtk/inspector/menu.c b/gtk/inspector/menu.c
index 8a4d1ad93f..3374418942 100644
--- a/gtk/inspector/menu.c
+++ b/gtk/inspector/menu.c
@@ -23,6 +23,7 @@
#include "gtktreestore.h"
#include "gtkwidgetprivate.h"
#include "gtklabel.h"
+#include "gtkstack.h"
enum
@@ -49,11 +50,13 @@ gtk_inspector_menu_init (GtkInspectorMenu *sl)
}
static void add_menu (GtkInspectorMenu *sl,
+ GtkStackPage *page,
GMenuModel *menu,
GtkTreeIter *parent);
static void
add_item (GtkInspectorMenu *sl,
+ GtkStackPage *page,
GMenuModel *menu,
gint idx,
GtkTreeIter *parent)
@@ -91,14 +94,14 @@ add_item (GtkInspectorMenu *sl,
gtk_tree_store_set (sl->priv->model, &iter,
COLUMN_LABEL, _("Unnamed section"),
-1);
- add_menu (sl, model, &iter);
+ add_menu (sl, page, model, &iter);
g_object_unref (model);
}
model = g_menu_model_get_item_link (menu, idx, G_MENU_LINK_SUBMENU);
if (model)
{
- add_menu (sl, model, &iter);
+ add_menu (sl, page, model, &iter);
g_object_unref (model);
}
@@ -110,28 +113,35 @@ add_item (GtkInspectorMenu *sl,
static void
add_menu (GtkInspectorMenu *sl,
+ GtkStackPage *page,
GMenuModel *menu,
GtkTreeIter *parent)
{
gint n_items;
gint i;
- gtk_widget_show (GTK_WIDGET (sl));
+ g_object_set (page, "visible", TRUE, NULL);
n_items = g_menu_model_get_n_items (menu);
for (i = 0; i < n_items; i++)
- add_item (sl, menu, i, parent);
+ add_item (sl, page, menu, i, parent);
}
void
gtk_inspector_menu_set_object (GtkInspectorMenu *sl,
GObject *object)
{
- gtk_widget_hide (GTK_WIDGET (sl));
+ GtkWidget *stack;
+ GtkStackPage *page;
+
+ stack = gtk_widget_get_parent (GTK_WIDGET (sl));
+ page = gtk_stack_get_page (GTK_STACK (stack), GTK_WIDGET (sl));
+
+ g_object_set (page, "visible", FALSE, NULL);
gtk_tree_store_clear (sl->priv->model);
if (G_IS_MENU_MODEL (object))
- add_menu (sl, G_MENU_MODEL (object), NULL);
+ add_menu (sl, page, G_MENU_MODEL (object), NULL);
}
static void
diff --git a/gtk/inspector/size-groups.c b/gtk/inspector/size-groups.c
index 0537edba00..6cd583699b 100644
--- a/gtk/inspector/size-groups.c
+++ b/gtk/inspector/size-groups.c
@@ -31,6 +31,7 @@
#include "gtkstylecontext.h"
#include "gtkswitch.h"
#include "gtkwidgetprivate.h"
+#include "gtkstack.h"
typedef struct {
@@ -210,7 +211,6 @@ add_widget (GtkInspectorSizeGroups *sl,
g_object_set (label, "margin", 10, NULL);
gtk_widget_set_halign (label, GTK_ALIGN_START);
gtk_widget_set_valign (label, GTK_ALIGN_BASELINE);
- gtk_widget_show (label);
gtk_container_add (GTK_CONTAINER (row), label);
gtk_container_add (GTK_CONTAINER (listbox), row);
}
@@ -266,18 +266,22 @@ gtk_inspector_size_groups_set_object (GtkInspectorSizeGroups *sl,
GObject *object)
{
GSList *groups, *l;
+ GtkWidget *stack;
+ GtkStackPage *page;
+
+ stack = gtk_widget_get_parent (GTK_WIDGET (sl));
+ page = gtk_stack_get_page (GTK_STACK (stack), GTK_WIDGET (sl));
+
+ g_object_set (page, "visible", FALSE, NULL);
clear_view (sl);
if (!GTK_IS_WIDGET (object))
- {
- gtk_widget_hide (GTK_WIDGET (sl));
- return;
- }
+ return;
groups = _gtk_widget_get_sizegroups (GTK_WIDGET (object));
if (groups)
- gtk_widget_show (GTK_WIDGET (sl));
+ g_object_set (page, "visible", TRUE, NULL);
for (l = groups; l; l = l->next)
{
GtkSizeGroup *group = l->data;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]