[gnome-contacts/wip/christopherdavis/hdywindow: 3/3] window: Use HdyWindow




commit 3f4bfdb650554eb8dd202b1feee41d63905db8f4
Author: Christopher Davis <brainblasted disroot org>
Date:   Sat Oct 3 16:12:11 2020 -0700

    window: Use HdyWindow
    
    Allows us to drop the use of HdyTitleBar.

 data/ui/contacts-window.ui | 131 +++++++++++++++++++++++----------------------
 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 0c2d3d5b..aa858e80 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 53494562..759832b5 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 ();


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]