From abdfd5f855e815774d0ebce211fb99476d5db448 Mon Sep 17 00:00:00 2001 From: Adrien Plazas Date: Wed, 12 Sep 2018 17:45:21 +0200 Subject: [PATCH 1/4] leaflet: Add the folded property This is a boolean equivalent of the fold property, it is a needed convenience as is can be used in GtkBuilder declarations while the fold property is more convenient to use from C as it enables stronger typing. --- src/hdy-leaflet.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/hdy-leaflet.c b/src/hdy-leaflet.c index da6ac71b..33a54451 100644 --- a/src/hdy-leaflet.c +++ b/src/hdy-leaflet.c @@ -56,6 +56,7 @@ enum { PROP_0, PROP_FOLD, + PROP_FOLDED, PROP_HHOMOGENEOUS_FOLDED, PROP_VHOMOGENEOUS_FOLDED, PROP_HHOMOGENEOUS_UNFOLDED, @@ -731,6 +732,8 @@ hdy_leaflet_set_fold (HdyLeaflet *self, g_object_notify_by_pspec (G_OBJECT (self), props[PROP_FOLD]); + g_object_notify_by_pspec (G_OBJECT (self), + props[PROP_FOLDED]); } /** @@ -2362,6 +2365,9 @@ hdy_leaflet_get_property (GObject *object, case PROP_FOLD: g_value_set_enum (value, hdy_leaflet_get_fold (self)); break; + case PROP_FOLDED: + g_value_set_boolean (value, hdy_leaflet_get_fold (self) == HDY_FOLD_FOLDED); + break; case PROP_HHOMOGENEOUS_FOLDED: g_value_set_boolean (value, hdy_leaflet_get_homogeneous (self, TRUE, GTK_ORIENTATION_HORIZONTAL)); break; @@ -2701,6 +2707,13 @@ hdy_leaflet_class_init (HdyLeafletClass *klass) HDY_TYPE_FOLD, HDY_FOLD_UNFOLDED, G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY); + props[PROP_FOLDED] = + g_param_spec_boolean ("folded", + _("Folded"), + _("Whether the widget is folded"), + FALSE, + G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY); + /** * HdyLeaflet:hhomogeneous_folded: * -- GitLab From 9d3c47057c0441a70464eaf047f9abefbabb3e76 Mon Sep 17 00:00:00 2001 From: Adrien Plazas Date: Fri, 21 Sep 2018 09:29:14 +0200 Subject: [PATCH 2/4] example: Bind back and close buttons visibility to fold Directly bind whether the back button and the close button are visible to whether the headerbar is folded. --- examples/example-window.c | 20 -------------------- examples/example-window.ui | 3 ++- 2 files changed, 2 insertions(+), 21 deletions(-) diff --git a/examples/example-window.c b/examples/example-window.c index 004f18ac..f632d6b4 100644 --- a/examples/example-window.c +++ b/examples/example-window.c @@ -38,23 +38,6 @@ example_window_key_pressed_cb (GtkWidget *sender, return FALSE; } -static void -update (ExampleWindow *self) -{ - HdyFold fold = hdy_leaflet_get_fold (self->content_box); - - gtk_header_bar_set_show_close_button (self->header_bar, fold == HDY_FOLD_FOLDED); - gtk_widget_set_visible (GTK_WIDGET (self->back), fold == HDY_FOLD_FOLDED); -} - -static void -example_window_notify_fold_cb (GObject *sender, - GParamSpec *pspec, - ExampleWindow *self) -{ - update (self); -} - static void example_window_notify_visible_child_cb (GObject *sender, GParamSpec *pspec, @@ -248,7 +231,6 @@ example_window_class_init (ExampleWindowClass *klass) gtk_widget_class_bind_template_child (widget_class, ExampleWindow, adj_arrows_count); gtk_widget_class_bind_template_child (widget_class, ExampleWindow, adj_arrows_duration); gtk_widget_class_bind_template_callback_full (widget_class, "key_pressed_cb", G_CALLBACK(example_window_key_pressed_cb)); - gtk_widget_class_bind_template_callback_full (widget_class, "notify_fold_cb", G_CALLBACK(example_window_notify_fold_cb)); gtk_widget_class_bind_template_callback_full (widget_class, "notify_visible_child_cb", G_CALLBACK(example_window_notify_visible_child_cb)); gtk_widget_class_bind_template_callback_full (widget_class, "back_clicked_cb", G_CALLBACK(example_window_back_clicked_cb)); gtk_widget_class_bind_template_callback_full (widget_class, "submitted_cb", G_CALLBACK(example_window_submitted_cb)); @@ -268,6 +250,4 @@ example_window_init (ExampleWindow *self) gtk_widget_init_template (GTK_WIDGET (self)); hdy_leaflet_set_visible_child (self->content_box, GTK_WIDGET (self->stack)); - - update (self); } diff --git a/examples/example-window.ui b/examples/example-window.ui index d1d9e49f..15fec184 100644 --- a/examples/example-window.ui +++ b/examples/example-window.ui @@ -38,6 +38,7 @@ True False Handy Widget Factory + sidebar @@ -64,6 +65,7 @@ False center True +