[geary/pantheon_mail: 18/32] remove if not gtk3.12 conditions, build several buttons like normal
- From: Javier Jardón Cabezas <jjardon src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary/pantheon_mail: 18/32] remove if not gtk3.12 conditions, build several buttons like normal
- Date: Wed, 25 Nov 2015 19:52:15 +0000 (UTC)
commit 43c71f249f325b91055d2a347cdb286147428825
Author: Daniel Foré <daniel elementary io>
Date: Mon Nov 23 19:19:51 2015 -0800
remove if not gtk3.12 conditions, build several buttons like normal
src/client/components/main-toolbar.vala | 120 +++++++++++++------------------
1 files changed, 49 insertions(+), 71 deletions(-)
---
diff --git a/src/client/components/main-toolbar.vala b/src/client/components/main-toolbar.vala
index 434d66c..8c5f04c 100644
--- a/src/client/components/main-toolbar.vala
+++ b/src/client/components/main-toolbar.vala
@@ -15,23 +15,23 @@ public class MainToolbar : Gtk.Box {
public bool show_close_button_right { get; private set; default = true; }
public bool search_open { get; set; default = false; }
public int left_pane_width { get; set; }
-
+
private PillHeaderbar folder_header;
private PillHeaderbar conversation_header;
private Gtk.Button archive_button;
private Gtk.Button trash_delete_button;
private Binding guest_header_binding;
-
+
public MainToolbar() {
Object(orientation: Gtk.Orientation.HORIZONTAL, spacing: 0);
-
+
folder_header = new PillHeaderbar(GearyApplication.instance.actions);
conversation_header = new PillHeaderbar(GearyApplication.instance.actions);
folder_header.get_style_context().add_class("titlebar");
folder_header.get_style_context().add_class("geary-titlebar-left");
conversation_header.get_style_context().add_class("titlebar");
conversation_header.get_style_context().add_class("geary-titlebar-right");
-
+
// Instead of putting a separator between the two headerbars, as other applications do,
// we put a separator at the right end of the left headerbar. This greatly improves
// the appearance under the Ambiance theme (see bug #746171). To get this separator to
@@ -44,31 +44,32 @@ public class MainToolbar : Gtk.Box {
target_value = left_pane_width + 6;
return true;
});
-
- if (!GearyApplication.instance.is_running_unity) {
- this.bind_property("account", folder_header, "title", BindingFlags.SYNC_CREATE);
- this.bind_property("folder", folder_header, "subtitle", BindingFlags.SYNC_CREATE);
- }
+
+ this.bind_property("account", folder_header, "title", BindingFlags.SYNC_CREATE);
+ this.bind_property("folder", folder_header, "subtitle", BindingFlags.SYNC_CREATE);
+
this.bind_property("show-close-button-left", folder_header, "show-close-button",
BindingFlags.SYNC_CREATE);
this.bind_property("show-close-button-right", conversation_header, "show-close-button",
BindingFlags.SYNC_CREATE);
-
+
bool rtl = get_direction() == Gtk.TextDirection.RTL;
-
+
// Assemble mark menu.
GearyApplication.instance.load_ui_file("toolbar_mark_menu.ui");
Gtk.Menu mark_menu = (Gtk.Menu)
GearyApplication.instance.ui_manager.get_widget("/ui/ToolbarMarkMenu");
mark_menu.foreach(GtkUtil.show_menuitem_accel_labels);
-
+
// Toolbar setup.
Gee.List<Gtk.Button> insert = new Gee.ArrayList<Gtk.Button>();
-
+
// Compose.
- insert.add(folder_header.create_toolbar_button("text-editor-symbolic",
- GearyController.ACTION_NEW_MESSAGE));
- folder_header.add_start(folder_header.create_pill_buttons(insert, false));
-
+ Gtk.Button compose = new Gtk.Button();
+ compose.related_action =
GearyApplication.instance.actions.get_action(GearyController.ACTION_NEW_MESSAGE);
+ compose.tooltip_text = compose.related_action.tooltip;
+ compose.image = new Gtk.Image.from_icon_name("mail-message-new", Gtk.IconSize.LARGE_TOOLBAR);
//FIXME: For some reason doing Button.from_icon_name doesn't work
+ folder_header.pack_start(compose);
+
// Assemble the empty menu
GearyApplication.instance.load_ui_file("toolbar_empty_menu.ui");
Gtk.Menu empty_menu = (Gtk.Menu)
GearyApplication.instance.ui_manager.get_widget("/ui/ToolbarEmptyMenu");
@@ -77,7 +78,7 @@ public class MainToolbar : Gtk.Box {
insert.add(folder_header.create_menu_button(null, empty_menu,
GearyController.ACTION_EMPTY_MENU));
Gtk.Box empty = folder_header.create_pill_buttons(insert, false);
-
+
// Search
insert.clear();
Gtk.Button search_button = folder_header.create_toggle_button(
@@ -86,17 +87,11 @@ public class MainToolbar : Gtk.Box {
BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL);
insert.add(search_button);
Gtk.Box search = folder_header.create_pill_buttons(insert, false);
-
-#if !GTK_3_12
+
folder_header.add_end(empty);
folder_header.add_end(search);
folder_header.add_end(new Gtk.Separator(Gtk.Orientation.VERTICAL));
-#else
- folder_header.add_end(new Gtk.Separator(Gtk.Orientation.VERTICAL));
- folder_header.add_end(search);
- folder_header.add_end(empty);
-#endif
-
+
// Reply buttons
insert.clear();
insert.add(conversation_header.create_toolbar_button(rtl ? "mail-reply-sender-rtl-symbolic"
@@ -106,7 +101,7 @@ public class MainToolbar : Gtk.Box {
insert.add(conversation_header.create_toolbar_button(rtl ? "mail-forward-rtl-symbolic"
: "mail-forward-symbolic", GearyController.ACTION_FORWARD_MESSAGE));
conversation_header.add_start(conversation_header.create_pill_buttons(insert));
-
+
// Mark, copy, move.
insert.clear();
insert.add(conversation_header.create_menu_button("marker-symbolic", mark_menu,
@@ -116,54 +111,49 @@ public class MainToolbar : Gtk.Box {
insert.add(conversation_header.create_menu_button("folder-symbolic", move_folder_menu,
GearyController.ACTION_MOVE_MENU));
conversation_header.add_start(conversation_header.create_pill_buttons(insert));
-
+
+ Gtk.Button trash_delete = new Gtk.Button();
+ trash_delete.related_action =
GearyApplication.instance.actions.get_action(GearyController.ACTION_TRASH_MESSAGE);
+ trash_delete.tooltip_text = trash_delete.related_action.tooltip;
+ trash_delete.image = new Gtk.Image.from_icon_name("edit-delete", Gtk.IconSize.LARGE_TOOLBAR);
//FIXME: For some reason doing Button.from_icon_name doesn't work
+
insert.clear();
insert.add(archive_button = conversation_header.create_toolbar_button(null,
GearyController.ACTION_ARCHIVE_MESSAGE, true));
- insert.add(trash_delete_button = conversation_header.create_toolbar_button(null,
GearyController.ACTION_TRASH_MESSAGE, false));
Gtk.Box archive_trash_delete = conversation_header.create_pill_buttons(insert);
-
- insert.clear();
- insert.add(conversation_header.create_toolbar_button(null, GearyController.ACTION_UNDO,
- false));
- Gtk.Box undo = conversation_header.create_pill_buttons(insert);
-
- // pack_end() ordering is reversed in GtkHeaderBar in 3.12 and above
-#if !GTK_3_12
- conversation_header.add_end(archive_trash_delete);
- conversation_header.add_end(undo);
-#endif
- insert.clear();
- Gtk.Menu application_menu = new Gtk.Menu.from_model(GearyApplication.instance.controller.app_menu);
- insert.add(conversation_header.create_menu_button("open-menu", application_menu,
GearyController.ACTION_GEAR_MENU));
- conversation_header.add_end(conversation_header.create_pill_buttons(insert));
+ Gtk.Button undo = new Gtk.Button();
+ undo.related_action = GearyApplication.instance.actions.get_action(GearyController.ACTION_UNDO);
+ undo.tooltip_text = undo.related_action.tooltip;
+ undo.related_action.notify["tooltip"].connect(() => { undo.tooltip_text =
undo.related_action.tooltip; });
+ undo.image = new Gtk.Image.from_icon_name("edit-undo", Gtk.IconSize.LARGE_TOOLBAR); //FIXME: For
some reason doing Button.from_icon_name doesn't work
+
+
+ Gtk.MenuButton menu = new Gtk.MenuButton();
+ menu.image = new Gtk.Image.from_icon_name("open-menu", Gtk.IconSize.LARGE_TOOLBAR);
+ menu.popup = new Gtk.Menu.from_model(GearyApplication.instance.controller.app_menu);
+ menu.tooltip_text = _("Menu");
-#if GTK_3_12
- conversation_header.add_end(undo);
+ conversation_header.pack_end(menu);
+ conversation_header.pack_end(undo);
conversation_header.add_end(archive_trash_delete);
-#endif
-
+ conversation_header.pack_end(trash_delete);
+
pack_start(folder_header, false, false);
pack_start(conversation_header, true, true);
-
-#if GTK_3_12
+
Gtk.Settings.get_default().notify["gtk-decoration-layout"].connect(set_window_buttons);
realize.connect(set_window_buttons);
-#else
- get_style_context().changed.connect(set_close_buttons_side);
- realize.connect(set_close_buttons_side);
-#endif
}
-
+
/// Updates the trash button as trash or delete, and shows or hides the archive button.
public void update_trash_archive_buttons(bool trash, bool archive) {
string action_name = (trash ? GearyController.ACTION_TRASH_MESSAGE
: GearyController.ACTION_DELETE_MESSAGE);
conversation_header.setup_button(trash_delete_button, null, action_name, false);
-
+
archive_button.visible = archive;
}
-
+
public void set_conversation_header(Gtk.HeaderBar header) {
conversation_header.hide();
header.get_style_context().add_class("titlebar");
@@ -171,24 +161,19 @@ public class MainToolbar : Gtk.Box {
guest_header_binding = bind_property("show-close-button-right", header,
"show-close-button", BindingFlags.SYNC_CREATE);
pack_start(header, true, true);
-#if GTK_3_12
header.decoration_layout = conversation_header.decoration_layout;
-#endif
}
-
+
public void remove_conversation_header(Gtk.HeaderBar header) {
remove(header);
header.get_style_context().remove_class("titlebar");
header.get_style_context().remove_class("geary-titlebar-right");
GtkUtil.unbind(guest_header_binding);
header.show_close_button = false;
-#if GTK_3_12
header.decoration_layout = Gtk.Settings.get_default().gtk_decoration_layout;
-#endif
conversation_header.show();
}
-
-#if GTK_3_12
+
private void set_window_buttons() {
string[] buttons = Gtk.Settings.get_default().gtk_decoration_layout.split(":");
if (buttons.length != 2) {
@@ -200,12 +185,5 @@ public class MainToolbar : Gtk.Box {
folder_header.decoration_layout = buttons[0] + ":";
conversation_header.decoration_layout = ":" + buttons[1];
}
-#else
- private void set_close_buttons_side() {
- bool at_end = folder_header.close_button_at_end();
- show_close_button_left = show_close_button && !at_end;
- show_close_button_right = show_close_button && at_end;
- }
-#endif
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]