[gtk/wip/baedert/for-master: 1/2] stack: Add GtkStackPage:visible accessors
- From: Timm Bäder <baedert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/baedert/for-master: 1/2] stack: Add GtkStackPage:visible accessors
- Date: Tue, 18 Feb 2020 08:37:04 +0000 (UTC)
commit a3d7abee4b3ab323553f5d9646b8fc532d0546da
Author: Timm Bäder <mail baedert org>
Date: Tue Feb 18 09:27:42 2020 +0100
stack: Add GtkStackPage:visible accessors
docs/reference/gtk/gtk4-sections.txt | 6 ++--
gtk/gtkstack.c | 65 ++++++++++++++++++++++++++++--------
gtk/gtkstack.h | 10 ++++--
3 files changed, 62 insertions(+), 19 deletions(-)
---
diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt
index a7b1be5e5e..8e7d3e8b46 100644
--- a/docs/reference/gtk/gtk4-sections.txt
+++ b/docs/reference/gtk/gtk4-sections.txt
@@ -5780,15 +5780,17 @@ gtk_header_bar_get_type
<SECTION>
<FILE>gtkstack</FILE>
<TITLE>GtkStack</TITLE>
-GtkStack
GtkStackPage
+gtk_stack_page_get_visible
+gtk_stack_page_set_visible
+gtk_stack_page_get_child
+GtkStack
gtk_stack_new
gtk_stack_add_named
gtk_stack_add_titled
gtk_stack_get_child_by_name
gtk_stack_get_page
gtk_stack_get_pages
-gtk_stack_page_get_child
gtk_stack_set_visible_child
gtk_stack_get_visible_child
gtk_stack_set_visible_child_name
diff --git a/gtk/gtkstack.c b/gtk/gtkstack.c
index 71e3ad4297..fc6a46347e 100644
--- a/gtk/gtkstack.c
+++ b/gtk/gtkstack.c
@@ -189,19 +189,22 @@ enum
LAST_CHILD_PROP
};
-struct _GtkStackPage {
- GObject instance;
+struct _GtkStackPage
+{
+ GObject parent_instance;
+
GtkWidget *widget;
- gchar *name;
- gchar *title;
- gchar *icon_name;
+ char *name;
+ char *title;
+ char *icon_name;
gboolean needs_attention;
gboolean visible;
GtkWidget *last_focus;
};
typedef struct _GtkStackPageClass GtkStackPageClass;
-struct _GtkStackPageClass {
+struct _GtkStackPageClass
+{
GObjectClass parent_class;
};
@@ -264,7 +267,7 @@ gtk_stack_page_get_property (GObject *object,
break;
case CHILD_PROP_VISIBLE:
- g_value_set_boolean (value, info->visible);
+ g_value_set_boolean (value, gtk_stack_page_get_visible (info));
break;
default:
@@ -344,13 +347,7 @@ gtk_stack_page_set_property (GObject *object,
break;
case CHILD_PROP_VISIBLE:
- if (info->visible != g_value_get_boolean (value))
- {
- info->visible = g_value_get_boolean (value);
- if (info->widget)
- gtk_widget_set_visible (info->widget, info->visible);
- g_object_notify_by_pspec (object, pspec);
- }
+ gtk_stack_page_set_visible (info, g_value_get_boolean (value));
break;
default:
@@ -2592,3 +2589,43 @@ gtk_stack_get_pages (GtkStack *stack)
return priv->pages;
}
+
+/**
+ * gtk_stack_page_get_visible:
+ * @page: a #GtkStackPage
+ *
+ * Returns whether @page is visible in its #GtkStack.
+ * This is independent from the #GtkWidget:visible value of its
+ * #GtkWidget.
+ */
+gboolean
+gtk_stack_page_get_visible (GtkStackPage *page)
+{
+ g_return_val_if_fail (GTK_IS_STACK_PAGE (page), FALSE);
+
+ return page->visible;
+}
+
+/**
+ * gtk_stack_page_set_visible:
+ * @page: a #GtkStackPage
+ * @visible: The new property value
+ *
+ * Sets the new value of the #GtkStackPage:visible property
+ * to @visible.
+ */
+void
+gtk_stack_page_set_visible (GtkStackPage *page,
+ gboolean visible)
+{
+ g_return_if_fail (GTK_IS_STACK_PAGE (page));
+
+ visible = !!visible;
+
+ if (visible != page->visible)
+ {
+ page->visible = visible;
+
+ g_object_notify_by_pspec (G_OBJECT (page), stack_child_props[CHILD_PROP_VISIBLE]);
+ }
+}
diff --git a/gtk/gtkstack.h b/gtk/gtkstack.h
index 75a8d6871e..ad8b4cb697 100644
--- a/gtk/gtkstack.h
+++ b/gtk/gtkstack.h
@@ -72,6 +72,13 @@ typedef enum {
GDK_AVAILABLE_IN_ALL
GType gtk_stack_page_get_type (void) G_GNUC_CONST;
+GDK_AVAILABLE_IN_ALL
+GtkWidget * gtk_stack_page_get_child (GtkStackPage *page);
+GDK_AVAILABLE_IN_ALL
+gboolean gtk_stack_page_get_visible (GtkStackPage *page);
+GDK_AVAILABLE_IN_ALL
+void gtk_stack_page_set_visible (GtkStackPage *page,
+ gboolean visible);
GDK_AVAILABLE_IN_ALL
GType gtk_stack_get_type (void) G_GNUC_CONST;
@@ -91,9 +98,6 @@ GtkStackPage * gtk_stack_add_titled (GtkStack
GDK_AVAILABLE_IN_ALL
GtkStackPage * gtk_stack_get_page (GtkStack *stack,
GtkWidget *child);
-GDK_AVAILABLE_IN_ALL
-GtkWidget * gtk_stack_page_get_child (GtkStackPage *page);
-
GDK_AVAILABLE_IN_ALL
GtkWidget * gtk_stack_get_child_by_name (GtkStack *stack,
const gchar *name);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]