From 7d207dbb7756b7ec20bdd75d30b4ac915b174f16 Mon Sep 17 00:00:00 2001 From: Adrien Plazas Date: Sat, 18 Jan 2020 13:27:29 +0100 Subject: [PATCH] main-toolbar: Use a header group This simplifies the code handling the location of the window decorations by using HdyHeaderGroup, whis is designed specifically for that. --- src/client/components/main-toolbar.vala | 32 ++++----------------- src/client/composer/composer-headerbar.vala | 1 + src/client/composer/composer-window.vala | 1 - ui/main-toolbar.ui | 9 +++++- 4 files changed, 14 insertions(+), 29 deletions(-) diff --git a/src/client/components/main-toolbar.vala b/src/client/components/main-toolbar.vala index 5afaea6c..57a87b00 100644 --- a/src/client/components/main-toolbar.vala +++ b/src/client/components/main-toolbar.vala @@ -14,8 +14,6 @@ public class MainToolbar : Gtk.Box { public string folder { get; set; } // Close button settings public bool show_close_button { get; set; default = true; } - public bool show_close_button_left { get; private set; default = true; } - public bool show_close_button_right { get; private set; default = true; } // Search and find bar public bool search_open { get; set; default = false; } public bool find_open { get; set; default = false; } @@ -33,7 +31,6 @@ public class MainToolbar : Gtk.Box { private Gtk.ToggleButton search_conversations_button; [GtkChild] private Gtk.MenuButton main_menu_button; - private Binding guest_header_binding; // Conversation header elements [GtkChild] @@ -51,6 +48,9 @@ public class MainToolbar : Gtk.Box { [GtkChild] private Gtk.ToggleButton find_button; + [GtkChild] + private Hdy.HeaderGroup header_group; + private bool show_trash_button = true; // Load these at construction time @@ -72,10 +72,6 @@ public class MainToolbar : Gtk.Box { this.bind_property("account", this.folder_header, "title", BindingFlags.SYNC_CREATE); this.bind_property("folder", this.folder_header, "subtitle", BindingFlags.SYNC_CREATE); } - this.bind_property("show-close-button-left", this.folder_header, "show-close-button", - BindingFlags.SYNC_CREATE); - this.bind_property("show-close-button-right", this.conversation_header, "show-close-button", - BindingFlags.SYNC_CREATE); // Assemble the main/mark menus Gtk.Builder builder = new Gtk.Builder.from_resource("/org/gnome/Geary/main-toolbar-menus.ui"); @@ -95,27 +91,21 @@ public class MainToolbar : Gtk.Box { this.bind_property("find-open", this.find_button, "active", BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL); - - Gtk.Settings.get_default().notify["gtk-decoration-layout"].connect(set_window_buttons); - this.realize.connect(set_window_buttons); } public void set_conversation_header(Gtk.HeaderBar header) { conversation_header.hide(); header.get_style_context().add_class("geary-titlebar"); header.get_style_context().add_class("geary-titlebar-right"); - guest_header_binding = bind_property("show-close-button-right", header, - "show-close-button", BindingFlags.SYNC_CREATE); + this.header_group.add_header_bar(header); pack_start(header, true, true); - header.decoration_layout = conversation_header.decoration_layout; } public void remove_conversation_header(Gtk.HeaderBar header) { remove(header); header.get_style_context().remove_class("geary-titlebar"); header.get_style_context().remove_class("geary-titlebar-right"); - guest_header_binding.unbind(); - header.decoration_layout = Gtk.Settings.get_default().gtk_decoration_layout; + this.header_group.remove_header_bar(header); conversation_header.show(); } @@ -124,18 +114,6 @@ public class MainToolbar : Gtk.Box { update_conversation_buttons(); } - private void set_window_buttons() { - string[] buttons = Gtk.Settings.get_default().gtk_decoration_layout.split(":"); - this.show_close_button_left = this.show_close_button; - this.show_close_button_right = this.show_close_button; - this.folder_header.decoration_layout = buttons[0] + ":"; - this.conversation_header.decoration_layout = ( - (buttons.length == 2) - ? ":" + buttons[1] - : "" - ); - } - // Updates tooltip text depending on number of conversations selected. private void update_conversation_buttons() { this.mark_message_button.tooltip_text = ngettext( diff --git a/src/client/composer/composer-headerbar.vala b/src/client/composer/composer-headerbar.vala index 4fde97cd..9b08c22f 100644 --- a/src/client/composer/composer-headerbar.vala +++ b/src/client/composer/composer-headerbar.vala @@ -42,6 +42,7 @@ public class Composer.Headerbar : Gtk.HeaderBar { Gtk.Settings.get_default().notify["gtk-decoration-layout"].connect( on_gtk_decoration_layout_changed ); + this.show_close_button = this.config.desktop_environment != UNITY; } public override void destroy() { diff --git a/src/client/composer/composer-window.vala b/src/client/composer/composer-window.vala index 4e77d8c4..a1488b44 100644 --- a/src/client/composer/composer-window.vala +++ b/src/client/composer/composer-window.vala @@ -44,7 +44,6 @@ public class Composer.Window : Gtk.ApplicationWindow, Container { if (application.config.desktop_environment == UNITY) { composer.embed_header(); } else { - composer.header.show_close_button = true; set_titlebar(this.composer.header); } diff --git a/ui/main-toolbar.ui b/ui/main-toolbar.ui index 5cf9e4d8..e9991fff 100644 --- a/ui/main-toolbar.ui +++ b/ui/main-toolbar.ui @@ -14,6 +14,7 @@ True False + True @@ -100,7 +101,7 @@ True False - True + True @@ -344,4 +345,10 @@ + + + + + +