diff --git a/doc/handy-docs.xml b/doc/handy-docs.xml index e474d6054b869244fbf9a0950651ddb46a7ee011..6ae43ed3e5c76d0c55bebfcae9fa33a07a5be0da 100644 --- a/doc/handy-docs.xml +++ b/doc/handy-docs.xml @@ -41,6 +41,7 @@ + diff --git a/examples/example-window.c b/examples/example-window.c index 004f18acc68329256a0d956322bed75c60d1e0be..0b146315cdadedd89772828f963be774f6558995 100644 --- a/examples/example-window.c +++ b/examples/example-window.c @@ -6,8 +6,8 @@ struct _ExampleWindow { GtkApplicationWindow parent_instance; + HdyLeaflet *header_box; HdyLeaflet *content_box; - GtkHeaderBar *header_bar; GtkButton *back; GtkStackSidebar *sidebar; GtkStack *stack; @@ -15,6 +15,7 @@ struct _ExampleWindow HdyDialer *dialer; GtkLabel *display; GtkWidget *arrows; + HdyHeaderGroup *header_group; GtkAdjustment *adj_arrows_count; GtkAdjustment *adj_arrows_duration; }; @@ -41,10 +42,20 @@ example_window_key_pressed_cb (GtkWidget *sender, static void update (ExampleWindow *self) { - HdyFold fold = hdy_leaflet_get_fold (self->content_box); + GtkWidget *header_child = hdy_leaflet_get_visible_child (self->header_box); + HdyFold fold = hdy_leaflet_get_fold (self->header_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); + g_assert (header_child == NULL || GTK_IS_HEADER_BAR (header_child)); + + hdy_header_group_set_focus (self->header_group, fold == HDY_FOLD_FOLDED ? header_child : NULL); +} + +static void +example_window_notify_header_visible_child_cb (GObject *sender, + GParamSpec *pspec, + ExampleWindow *self) +{ + update (self); } static void @@ -236,8 +247,8 @@ example_window_class_init (ExampleWindowClass *klass) object_class->constructed = example_window_constructed; gtk_widget_class_set_template_from_resource (widget_class, "/sm/puri/handy/example/ui/example-window.ui"); + gtk_widget_class_bind_template_child (widget_class, ExampleWindow, header_box); gtk_widget_class_bind_template_child (widget_class, ExampleWindow, content_box); - gtk_widget_class_bind_template_child (widget_class, ExampleWindow, header_bar); gtk_widget_class_bind_template_child (widget_class, ExampleWindow, back); gtk_widget_class_bind_template_child (widget_class, ExampleWindow, sidebar); gtk_widget_class_bind_template_child (widget_class, ExampleWindow, stack); @@ -245,9 +256,11 @@ example_window_class_init (ExampleWindowClass *klass) gtk_widget_class_bind_template_child (widget_class, ExampleWindow, dialer); gtk_widget_class_bind_template_child (widget_class, ExampleWindow, display); gtk_widget_class_bind_template_child (widget_class, ExampleWindow, arrows); + gtk_widget_class_bind_template_child (widget_class, ExampleWindow, header_group); 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_header_visible_child_cb", G_CALLBACK(example_window_notify_header_visible_child_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)); @@ -268,6 +281,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 d1d9e49f8b370483b98477b0552100367b6dcd0a..444a62fcfd9c09ad0dc990a553787878f1537b1c 100644 --- a/examples/example-window.ui +++ b/examples/example-window.ui @@ -33,11 +33,14 @@ slide slide + + True False Handy Widget Factory + True sidebar @@ -64,6 +67,7 @@ False center True +