diff options
author | Christopher Davis <brainblasted@disroot.org> | 2020-10-03 16:12:11 -0700 |
---|---|---|
committer | Christopher Davis <brainblasted@disroot.org> | 2020-10-05 00:39:44 +0000 |
commit | 72d4b362bf3647598fa72a45161cdedfe13410a8 (patch) | |
tree | 9745825ea2e41c4d602bb744634228b9ac00d88b | |
parent | f40524f205a9d4180220d31dcc536653452c4632 (diff) | |
download | gnome-contacts-72d4b362bf3647598fa72a45161cdedfe13410a8.tar.gz |
window: Use HdyWindowwip/christopherdavis/hdywindow
Allows us to drop the use of HdyTitleBar.
-rw-r--r-- | data/ui/contacts-window.ui | 131 | ||||
-rw-r--r-- | src/contacts-window.vala | 25 |
2 files changed, 86 insertions, 70 deletions
diff --git a/data/ui/contacts-window.ui b/data/ui/contacts-window.ui index 0c2d3d5..aa858e8 100644 --- a/data/ui/contacts-window.ui +++ b/data/ui/contacts-window.ui @@ -136,7 +136,7 @@ </object> </child> </object> - <template class="ContactsWindow" parent="GtkApplicationWindow"> + <template class="ContactsWindow" parent="HdyApplicationWindow"> <property name="can_focus">False</property> <property name="default_width">800</property> <property name="default_height">600</property> @@ -144,9 +144,10 @@ <property name="title" translatable="yes">Contacts</property> <signal name="key-press-event" handler="key_press_event_cb" object="ContactsWindow" after="yes" swapped="no"/> <signal name="delete-event" handler="delete_event_cb" object="ContactsWindow" after="no" swapped="no"/> - <child type="titlebar"> - <object class="HdyTitleBar" id="titlebar"> + <child> + <object class="GtkBox"> <property name="visible">True</property> + <property name="orientation">vertical</property> <child> <object class="HdyLeaflet" id="header"> <property name="visible">True</property> @@ -155,7 +156,7 @@ <property name="child-transition-duration" bind-source="content_box" bind-property="child-transition-duration" bind-flags="bidirectional|sync-create"/> <property name="transition-type" bind-source="content_box" bind-property="transition-type" bind-flags="bidirectional|sync-create"/> <child> - <object class="GtkHeaderBar" id="left_header"> + <object class="HdyHeaderBar" id="left_header"> <property name="visible">True</property> <property name="hexpand">False</property> <property name="can_focus">False</property> @@ -193,7 +194,7 @@ <property name="can_focus">True</property> <property name="focus_on_click">False</property> <property name="popover">hamburger_menu_popover</property> - <accelerator key="F10" signal="clicked"/> + <accelerator key="F10" signal="clicked"/> <child> <object class="GtkImage"> <property name="visible">True</property> @@ -235,7 +236,7 @@ </packing> </child> <child> - <object class="GtkHeaderBar" id="right_header"> + <object class="HdyHeaderBar" id="right_header"> <property name="visible">True</property> <property name="hexpand">True</property> <property name="show_close_button">True</property> @@ -350,82 +351,82 @@ </child> </object> </child> - </object> - </child> - <child> - <object class="GtkOverlay" id="notification_overlay"> - <property name="visible">True</property> - <property name="can_focus">False</property> <child> - <object class="HdyLeaflet" id="content_box"> + <object class="GtkOverlay" id="notification_overlay"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="can-swipe-back">True</property> - <signal name="notify::folded" handler="on_folded" object="ContactsWindow" after="yes" swapped="no"/> - <signal name="notify::child-transition-running" handler="on_child_transition_running" object="ContactsWindow" after="yes" swapped="no"/> <child> - <object class="GtkStack" id="list_pane_stack"> + <object class="HdyLeaflet" id="content_box"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="hexpand">False</property> + <property name="can-swipe-back">True</property> + <signal name="notify::folded" handler="on_folded" object="ContactsWindow" after="yes" swapped="no"/> + <signal name="notify::child-transition-running" handler="on_child_transition_running" object="ContactsWindow" after="yes" swapped="no"/> <child> - <object class="GtkBox"> + <object class="GtkStack" id="list_pane_stack"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="orientation">vertical</property> - <property name="width_request">300</property> - <property name="homogeneous">True</property> + <property name="hexpand">False</property> <child> - <object class="GtkSpinner"> + <object class="GtkBox"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="active">True</property> - <property name="valign">end</property> - <property name="halign">center</property> - <style> - <class name="contacts-watermark"/> - </style> - </object> - </child> - <child> - <object class="GtkLabel" id="label1"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="valign">start</property> - <property name="halign">center</property> - <property name="label" translatable="yes">Loading</property> - <style> - <class name="contacts-watermark"/> - </style> + <property name="orientation">vertical</property> + <property name="width_request">300</property> + <property name="homogeneous">True</property> + <child> + <object class="GtkSpinner"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="active">True</property> + <property name="valign">end</property> + <property name="halign">center</property> + <style> + <class name="contacts-watermark"/> + </style> + </object> + </child> + <child> + <object class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="valign">start</property> + <property name="halign">center</property> + <property name="label" translatable="yes">Loading</property> + <style> + <class name="contacts-watermark"/> + </style> + </object> + </child> </object> </child> </object> + <packing> + <property name="name">list-pane</property> + </packing> + </child> + <child> + <object class="GtkSeparator"> + <property name="visible">True</property> + <style> + <class name="sidebar"/> + </style> + </object> + <packing> + <property name="navigatable">False</property> + </packing> + </child> + <child> + <object class="GtkOverlay" id="contact_pane_container"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + </object> + <packing> + <property name="name">contact-pane</property> + </packing> </child> </object> - <packing> - <property name="name">list-pane</property> - </packing> - </child> - <child> - <object class="GtkSeparator"> - <property name="visible">True</property> - <style> - <class name="sidebar"/> - </style> - </object> - <packing> - <property name="navigatable">False</property> - </packing> - </child> - <child> - <object class="GtkOverlay" id="contact_pane_container"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="hexpand">True</property> - </object> - <packing> - <property name="name">contact-pane</property> - </packing> </child> </object> </child> diff --git a/src/contacts-window.vala b/src/contacts-window.vala index 5349456..759832b 100644 --- a/src/contacts-window.vala +++ b/src/contacts-window.vala @@ -18,7 +18,7 @@ using Folks; [GtkTemplate (ui = "/org/gnome/Contacts/ui/contacts-window.ui")] -public class Contacts.Window : Gtk.ApplicationWindow { +public class Contacts.Window : Hdy.ApplicationWindow { private const GLib.ActionEntry[] action_entries = { { "edit-contact", edit_contact }, @@ -38,11 +38,11 @@ public class Contacts.Window : Gtk.ApplicationWindow { [GtkChild] private Gtk.Container contact_pane_container; [GtkChild] - private Hdy.TitleBar titlebar; + private Hdy.HeaderBar left_header; [GtkChild] - private Gtk.HeaderBar left_header; + private Gtk.Separator header_separator; [GtkChild] - private Gtk.HeaderBar right_header; + private Hdy.HeaderBar right_header; [GtkChild] private Gtk.Overlay notification_overlay; [GtkChild] @@ -240,7 +240,7 @@ public class Contacts.Window : Gtk.ApplicationWindow { ((Gtk.Widget) this.done_button).set_focus_on_click (true); } // When selecting or editing, we get special headerbars - this.titlebar.selection_mode = this.state == UiState.SELECTING || this.state.editing (); + set_selection_mode (this.state == UiState.SELECTING || this.state.editing ()); // Allow the back gesture when not browsing this.content_box.can_swipe_back = this.state == UiState.NORMAL || @@ -248,6 +248,21 @@ public class Contacts.Window : Gtk.ApplicationWindow { this.state == UiState.SELECTING; } + private void set_selection_mode (bool selection_mode) { + var left_ctx = this.left_header.get_style_context (); + var separator_ctx = this.header_separator.get_style_context (); + var right_ctx = this.right_header.get_style_context (); + if (selection_mode) { + left_ctx.add_class ("selection-mode"); + separator_ctx.add_class ("selection-mode"); + right_ctx.add_class ("selection-mode"); + } else { + left_ctx.remove_class ("selection-mode"); + separator_ctx.remove_class ("selection-mode"); + right_ctx.remove_class ("selection-mode"); + } + } + [GtkCallback] private void on_back_clicked () { show_list_pane (); |