diff options
-rw-r--r-- | panels/applications/cc-applications-panel.c | 2 | ||||
-rw-r--r-- | panels/bluetooth/cc-bluetooth-panel.c | 2 | ||||
-rw-r--r-- | panels/datetime/cc-datetime-panel.c | 4 | ||||
-rw-r--r-- | panels/keyboard/cc-keyboard-panel.c | 2 | ||||
-rw-r--r-- | panels/mouse/cc-mouse-panel.c | 2 | ||||
-rw-r--r-- | panels/network/cc-wifi-panel.c | 2 | ||||
-rw-r--r-- | panels/printers/cc-printers-panel.c | 4 | ||||
-rw-r--r-- | panels/region/cc-region-panel.c | 3 | ||||
-rw-r--r-- | panels/search/cc-search-panel.c | 2 | ||||
-rw-r--r-- | panels/sharing/cc-sharing-panel.c | 3 | ||||
-rw-r--r-- | panels/thunderbolt/cc-bolt-panel.c | 2 | ||||
-rw-r--r-- | panels/user-accounts/cc-user-panel.c | 2 | ||||
-rw-r--r-- | panels/wacom/cc-wacom-panel.c | 2 | ||||
-rw-r--r-- | shell/cc-shell.c | 6 | ||||
-rw-r--r-- | shell/cc-shell.h | 10 | ||||
-rw-r--r-- | shell/cc-window.c | 32 | ||||
-rw-r--r-- | shell/cc-window.ui | 7 | ||||
-rw-r--r-- | tests/interactive-panels/gtp-header-widget.c | 2 | ||||
-rw-r--r-- | tests/network/cc-test-window.c | 5 |
19 files changed, 66 insertions, 28 deletions
diff --git a/panels/applications/cc-applications-panel.c b/panels/applications/cc-applications-panel.c index 57a6d49ad..1cc476093 100644 --- a/panels/applications/cc-applications-panel.c +++ b/panels/applications/cc-applications-panel.c @@ -1627,7 +1627,7 @@ cc_applications_panel_constructed (GObject *object) G_OBJECT_CLASS (cc_applications_panel_parent_class)->constructed (object); shell = cc_panel_get_shell (CC_PANEL (self)); - cc_shell_embed_widget_in_header (shell, self->header_button); + cc_shell_embed_widget_in_header (shell, self->header_button, GTK_POS_RIGHT); } static GtkWidget* diff --git a/panels/bluetooth/cc-bluetooth-panel.c b/panels/bluetooth/cc-bluetooth-panel.c index 576e527b3..28f5a8c54 100644 --- a/panels/bluetooth/cc-bluetooth-panel.c +++ b/panels/bluetooth/cc-bluetooth-panel.c @@ -90,7 +90,7 @@ cc_bluetooth_panel_constructed (GObject *object) /* add kill switch widgets */ self->kill_switch_header = g_object_ref (WID ("box_power")); cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (self)), - self->kill_switch_header); + self->kill_switch_header, GTK_POS_RIGHT); gtk_widget_show (self->kill_switch_header); } diff --git a/panels/datetime/cc-datetime-panel.c b/panels/datetime/cc-datetime-panel.c index c452b89c2..cb7ddf5f1 100644 --- a/panels/datetime/cc-datetime-panel.c +++ b/panels/datetime/cc-datetime-panel.c @@ -175,7 +175,9 @@ cc_date_time_panel_constructed (GObject *object) G_OBJECT_CLASS (cc_date_time_panel_parent_class)->constructed (object); - cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (self)), GTK_WIDGET (self->lock_button)); + cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (self)), + GTK_WIDGET (self->lock_button), + GTK_POS_RIGHT); } static const char * diff --git a/panels/keyboard/cc-keyboard-panel.c b/panels/keyboard/cc-keyboard-panel.c index 33029a220..fc2639265 100644 --- a/panels/keyboard/cc-keyboard-panel.c +++ b/panels/keyboard/cc-keyboard-panel.c @@ -652,7 +652,7 @@ cc_keyboard_panel_constructed (GObject *object) toplevel = GTK_WINDOW (cc_shell_get_toplevel (cc_panel_get_shell (CC_PANEL (self)))); gtk_window_set_transient_for (GTK_WINDOW (self->shortcut_editor), toplevel); - cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (self)), self->search_button); + cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (self)), self->search_button, GTK_POS_RIGHT); self->search_bar_handler_id = g_signal_connect_swapped (toplevel, diff --git a/panels/mouse/cc-mouse-panel.c b/panels/mouse/cc-mouse-panel.c index af3ed17c8..f3130f46f 100644 --- a/panels/mouse/cc-mouse-panel.c +++ b/panels/mouse/cc-mouse-panel.c @@ -83,7 +83,7 @@ cc_mouse_panel_constructed (GObject *object) gtk_widget_set_valign (button, GTK_ALIGN_CENTER); gtk_widget_set_visible (button, TRUE); - cc_shell_embed_widget_in_header (shell, button); + cc_shell_embed_widget_in_header (shell, button, GTK_POS_RIGHT); g_signal_connect (GTK_BUTTON (button), "toggled", G_CALLBACK (shell_test_button_toggled), diff --git a/panels/network/cc-wifi-panel.c b/panels/network/cc-wifi-panel.c index 09e16baf8..de5069425 100644 --- a/panels/network/cc-wifi-panel.c +++ b/panels/network/cc-wifi-panel.c @@ -572,7 +572,7 @@ cc_wifi_panel_constructed (GObject *object) G_OBJECT_CLASS (cc_wifi_panel_parent_class)->constructed (object); - cc_shell_embed_widget_in_header (shell, GTK_WIDGET (self->header_stack)); + cc_shell_embed_widget_in_header (shell, GTK_WIDGET (self->header_stack), GTK_POS_RIGHT); } static void diff --git a/panels/printers/cc-printers-panel.c b/panels/printers/cc-printers-panel.c index 2333e9257..9fc0c7980 100644 --- a/panels/printers/cc-printers-panel.c +++ b/panels/printers/cc-printers-panel.c @@ -241,7 +241,7 @@ cc_printers_panel_constructed (GObject *object) G_OBJECT_CLASS (cc_printers_panel_parent_class)->constructed (object); shell = cc_panel_get_shell (CC_PANEL (self)); - cc_shell_embed_widget_in_header (shell, self->headerbar_buttons); + cc_shell_embed_widget_in_header (shell, self->headerbar_buttons, GTK_POS_RIGHT); widget = (GtkWidget*) gtk_builder_get_object (self->builder, "lock-button"); @@ -249,7 +249,7 @@ cc_printers_panel_constructed (GObject *object) widget = (GtkWidget*) gtk_builder_get_object (self->builder, "search-button"); - cc_shell_embed_widget_in_header (shell, widget); + cc_shell_embed_widget_in_header (shell, widget, GTK_POS_RIGHT); widget = (GtkWidget*) gtk_builder_get_object (self->builder, "search-bar"); diff --git a/panels/region/cc-region-panel.c b/panels/region/cc-region-panel.c index 664097da2..e968e1379 100644 --- a/panels/region/cc-region-panel.c +++ b/panels/region/cc-region-panel.c @@ -187,7 +187,8 @@ cc_region_panel_constructed (GObject *object) if (self->permission) cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (object)), - GTK_WIDGET (self->login_button)); + GTK_WIDGET (self->login_button), + GTK_POS_RIGHT); } static const char * diff --git a/panels/search/cc-search-panel.c b/panels/search/cc-search-panel.c index 9d2975052..26590482b 100644 --- a/panels/search/cc-search-panel.c +++ b/panels/search/cc-search-panel.c @@ -716,7 +716,7 @@ cc_search_panel_constructed (GObject *object) G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); - cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (self)), box); + cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (self)), box, GTK_POS_RIGHT); } static void diff --git a/panels/sharing/cc-sharing-panel.c b/panels/sharing/cc-sharing-panel.c index 91e2c660c..303a54e4f 100644 --- a/panels/sharing/cc-sharing-panel.c +++ b/panels/sharing/cc-sharing-panel.c @@ -142,7 +142,8 @@ cc_sharing_panel_constructed (GObject *object) /* add the master switch */ cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (object)), - gtk_widget_get_parent (self->master_switch)); + gtk_widget_get_parent (self->master_switch), + GTK_POS_RIGHT); } static void diff --git a/panels/thunderbolt/cc-bolt-panel.c b/panels/thunderbolt/cc-bolt-panel.c index dfc82bd4a..10570e168 100644 --- a/panels/thunderbolt/cc-bolt-panel.c +++ b/panels/thunderbolt/cc-bolt-panel.c @@ -920,7 +920,7 @@ cc_bolt_panel_constructed (GObject *object) G_OBJECT_CLASS (cc_bolt_panel_parent_class)->constructed (object); shell = cc_panel_get_shell (CC_PANEL (panel)); - cc_shell_embed_widget_in_header (shell, GTK_WIDGET (panel->headerbar_box)); + cc_shell_embed_widget_in_header (shell, GTK_WIDGET (panel->headerbar_box), GTK_POS_RIGHT); } static void diff --git a/panels/user-accounts/cc-user-panel.c b/panels/user-accounts/cc-user-panel.c index 3a1167b66..23abf48a1 100644 --- a/panels/user-accounts/cc-user-panel.c +++ b/panels/user-accounts/cc-user-panel.c @@ -1384,7 +1384,7 @@ cc_user_panel_constructed (GObject *object) G_OBJECT_CLASS (cc_user_panel_parent_class)->constructed (object); shell = cc_panel_get_shell (CC_PANEL (self)); - cc_shell_embed_widget_in_header (shell, GTK_WIDGET (self->headerbar_button_stack)); + cc_shell_embed_widget_in_header (shell, GTK_WIDGET (self->headerbar_button_stack), GTK_POS_RIGHT); gtk_lock_button_set_permission (self->lock_button, self->permission); } diff --git a/panels/wacom/cc-wacom-panel.c b/panels/wacom/cc-wacom-panel.c index b1f7bad7a..4e123a5ae 100644 --- a/panels/wacom/cc-wacom-panel.c +++ b/panels/wacom/cc-wacom-panel.c @@ -466,7 +466,7 @@ cc_wacom_panel_constructed (GObject *object) gtk_widget_set_valign (button, GTK_ALIGN_CENTER); gtk_widget_set_visible (button, TRUE); - cc_shell_embed_widget_in_header (shell, button); + cc_shell_embed_widget_in_header (shell, button, GTK_POS_RIGHT); self->test_popover = gtk_popover_new (button); gtk_container_set_border_width (GTK_CONTAINER (self->test_popover), 6); diff --git a/shell/cc-shell.c b/shell/cc-shell.c index 81de92a09..ffab0a68d 100644 --- a/shell/cc-shell.c +++ b/shell/cc-shell.c @@ -152,7 +152,9 @@ cc_shell_get_toplevel (CcShell *shell) } void -cc_shell_embed_widget_in_header (CcShell *shell, GtkWidget *widget) +cc_shell_embed_widget_in_header (CcShell *shell, + GtkWidget *widget, + GtkPositionType position) { CcShellInterface *iface; @@ -168,6 +170,6 @@ cc_shell_embed_widget_in_header (CcShell *shell, GtkWidget *widget) } else { - iface->embed_widget_in_header (shell, widget); + iface->embed_widget_in_header (shell, widget, position); } } diff --git a/shell/cc-shell.h b/shell/cc-shell.h index 1786aedb4..cc96365f7 100644 --- a/shell/cc-shell.h +++ b/shell/cc-shell.h @@ -55,8 +55,9 @@ struct _CcShellInterface GVariant *parameters, GError **error); GtkWidget * (*get_toplevel) (CcShell *shell); - void (*embed_widget_in_header) (CcShell *shell, - GtkWidget *widget); + void (*embed_widget_in_header) (CcShell *shell, + GtkWidget *widget, + GtkPositionType position); }; GType cc_shell_get_type (void) G_GNUC_CONST; @@ -70,8 +71,9 @@ gboolean cc_shell_set_active_panel_from_id (CcShell *shell, GError **error); GtkWidget * cc_shell_get_toplevel (CcShell *shell); -void cc_shell_embed_widget_in_header (CcShell *shell, - GtkWidget *widget); +void cc_shell_embed_widget_in_header (CcShell *shell, + GtkWidget *widget, + GtkPositionType position); G_END_DECLS diff --git a/shell/cc-window.c b/shell/cc-window.c index 17e55e899..6cbe22c71 100644 --- a/shell/cc-window.c +++ b/shell/cc-window.c @@ -64,6 +64,7 @@ struct _CcWindow GtkWidget *panel_list; GtkWidget *previous_button; GtkWidget *back_revealer; + GtkWidget *top_left_box; GtkWidget *top_right_box; GtkWidget *search_button; GtkWidget *search_bar; @@ -108,6 +109,7 @@ in_flatpak_sandbox (void) static void remove_all_custom_widgets (CcWindow *self) { + GtkWidget *parent; GtkWidget *widget; guint i; @@ -117,7 +119,10 @@ remove_all_custom_widgets (CcWindow *self) for (i = 0; i < self->custom_widgets->len; i++) { widget = g_ptr_array_index (self->custom_widgets, i); - gtk_container_remove (GTK_CONTAINER (self->top_right_box), widget); + parent = gtk_widget_get_parent (widget); + + g_assert (parent == self->top_right_box || parent == self->top_left_box); + gtk_container_remove (GTK_CONTAINER (parent), widget); } g_ptr_array_set_size (self->custom_widgets, 0); @@ -511,6 +516,7 @@ update_fold_state (CcWindow *shell) hdy_header_group_set_focus (shell->header_group, fold == HDY_FOLD_FOLDED ? GTK_HEADER_BAR (header_child) : NULL); + gtk_widget_set_visible (shell->back_revealer, fold == HDY_FOLD_FOLDED); gtk_revealer_set_reveal_child (GTK_REVEALER (shell->back_revealer), fold == HDY_FOLD_FOLDED); } @@ -697,15 +703,32 @@ cc_window_set_active_panel_from_id (CcShell *shell, } static void -cc_window_embed_widget_in_header (CcShell *shell, - GtkWidget *widget) +cc_window_embed_widget_in_header (CcShell *shell, + GtkWidget *widget, + GtkPositionType position) { CcWindow *self = CC_WINDOW (shell); CC_ENTRY; /* add to header */ - gtk_box_pack_end (GTK_BOX (self->top_right_box), widget, FALSE, FALSE, 0); + switch (position) + { + case GTK_POS_RIGHT: + gtk_container_add (GTK_CONTAINER (self->top_right_box), widget); + break; + + case GTK_POS_LEFT: + gtk_container_add (GTK_CONTAINER (self->top_left_box), widget); + break; + + case GTK_POS_TOP: + case GTK_POS_BOTTOM: + default: + g_warning ("Invalid position passed"); + return; + } + g_ptr_array_add (self->custom_widgets, g_object_ref (widget)); gtk_size_group_add_widget (self->header_sizegroup, widget); @@ -887,6 +910,7 @@ cc_window_class_init (CcWindowClass *klass) gtk_widget_class_bind_template_child (widget_class, CcWindow, search_button); gtk_widget_class_bind_template_child (widget_class, CcWindow, search_entry); gtk_widget_class_bind_template_child (widget_class, CcWindow, stack); + gtk_widget_class_bind_template_child (widget_class, CcWindow, top_left_box); gtk_widget_class_bind_template_child (widget_class, CcWindow, top_right_box); gtk_widget_class_bind_template_callback (widget_class, back_button_clicked_cb); diff --git a/shell/cc-window.ui b/shell/cc-window.ui index 7473dec53..45f9182f1 100644 --- a/shell/cc-window.ui +++ b/shell/cc-window.ui @@ -222,7 +222,6 @@ <property name="show_close_button">True</property> <child> <object class="GtkRevealer" id="back_revealer"> - <property name="visible">True</property> <property name="can_focus">False</property> <property name="transition-type">crossfade</property> <property name="transition-duration" bind-source="main_leaflet" bind-property="mode-transition-duration" bind-flags="bidirectional|sync-create"/> @@ -255,6 +254,12 @@ </object> </child> <child> + <object class="GtkBox" id="top_left_box"> + <property name="visible">True</property> + <property name="can_focus">True</property> + </object> + </child> + <child> <object class="GtkBox" id="top_right_box"> <property name="visible">True</property> <property name="can_focus">True</property> diff --git a/tests/interactive-panels/gtp-header-widget.c b/tests/interactive-panels/gtp-header-widget.c index e56f6478f..44f6d8038 100644 --- a/tests/interactive-panels/gtp-header-widget.c +++ b/tests/interactive-panels/gtp-header-widget.c @@ -38,7 +38,7 @@ gtp_header_widget_constructed (GObject *object) G_OBJECT_CLASS (gtp_header_widget_parent_class)->constructed (object); shell = cc_panel_get_shell (CC_PANEL (self)); - cc_shell_embed_widget_in_header (shell, self->header_widget); + cc_shell_embed_widget_in_header (shell, self->header_widget, GTK_POS_LEFT); } static void diff --git a/tests/network/cc-test-window.c b/tests/network/cc-test-window.c index 95c979b15..ddb6b488e 100644 --- a/tests/network/cc-test-window.c +++ b/tests/network/cc-test-window.c @@ -94,8 +94,9 @@ cc_test_window_set_active_panel_from_id (CcShell *shell, } static void -cc_test_window_embed_widget_in_header (CcShell *shell, - GtkWidget *widget) +cc_test_window_embed_widget_in_header (CcShell *shell, + GtkWidget *widget, + GtkPositionType position) { CcTestWindow *self = CC_TEST_WINDOW (shell); |