[gnome-todo] window: Subclass AdwApplicationWindow



commit 67329b431d94864b5a5cdd21e789c79cb1734583
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Sat Apr 3 19:05:31 2021 -0300

    window: Subclass AdwApplicationWindow
    
    Subclass AdwApplicationWindow, and add an intermediary AdwLeafLet to handle
    adaptativeness.

 src/gui/gtd-window.c  |   4 +-
 src/gui/gtd-window.h  |   4 +-
 src/gui/gtd-window.ui | 207 ++++++++++++++++++++++++++++----------------------
 3 files changed, 119 insertions(+), 96 deletions(-)
---
diff --git a/src/gui/gtd-window.c b/src/gui/gtd-window.c
index 21f741ad..d72e9a5d 100644
--- a/src/gui/gtd-window.c
+++ b/src/gui/gtd-window.c
@@ -56,7 +56,7 @@
 
 struct _GtdWindow
 {
-  GtkApplicationWindow application;
+  AdwApplicationWindow application;
 
   GtkHeaderBar       *headerbar;
   GtkBox             *headerbar_box;
@@ -98,7 +98,7 @@ enum
 
 static GParamSpec *properties[N_PROPS] = { NULL, };
 
-G_DEFINE_TYPE (GtdWindow, gtd_window, GTK_TYPE_APPLICATION_WINDOW)
+G_DEFINE_TYPE (GtdWindow, gtd_window, ADW_TYPE_APPLICATION_WINDOW)
 
 static gint             compare_workspaced_func                  (gconstpointer      a,
                                                                   gconstpointer      b,
diff --git a/src/gui/gtd-window.h b/src/gui/gtd-window.h
index 255c5ca7..594662d9 100644
--- a/src/gui/gtd-window.h
+++ b/src/gui/gtd-window.h
@@ -22,13 +22,13 @@
 
 #include "gtd-types.h"
 
-#include <gtk/gtk.h>
+#include <adwaita.h>
 
 G_BEGIN_DECLS
 
 #define GTD_TYPE_WINDOW (gtd_window_get_type())
 
-G_DECLARE_FINAL_TYPE (GtdWindow, gtd_window, GTD, WINDOW, GtkApplicationWindow)
+G_DECLARE_FINAL_TYPE (GtdWindow, gtd_window, GTD, WINDOW, AdwApplicationWindow)
 
 GtkWidget*                gtd_window_new                  (GtdApplication       *application);
 
diff --git a/src/gui/gtd-window.ui b/src/gui/gtd-window.ui
index 2595b146..c7b74f05 100644
--- a/src/gui/gtd-window.ui
+++ b/src/gui/gtd-window.ui
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <requires lib="gtk+" version="3.16"/>
-  <template class="GtdWindow" parent="GtkApplicationWindow">
+  <template class="GtdWindow" parent="AdwApplicationWindow">
     <property name="default_width">800</property>
     <property name="default_height">600</property>
 
@@ -21,101 +21,124 @@
     <style>
       <class name="org-gnome-Todo"/>
     </style>
-    <child>
-      <object class="GtkOverlay" id="overlay">
-        <child type="overlay">
-          <object class="GtdNotificationWidget" id="notification_widget">
-            <property name="can_focus">False</property>
-            <property name="halign">center</property>
-            <property name="valign">start</property>
-          </object>
-        </child>
 
-        <child type="overlay">
-          <object class="GtkRevealer" id="headerbar_overlay_revealer">
-            <property name="transition-type">slide-down</property>
-            <property name="transition-duration">750</property>
-            <property name="can_focus">False</property>
-            <property name="valign">start</property>
-          </object>
-        </child>
 
-        <child>
-          <object class="GtkEventControllerMotion" id="overlay_motion_controller">
-            <property name="propagation-phase">none</property>
-            <signal name="motion" handler="on_overlay_motion_controller_motion_cb" object="GtdWindow" 
swapped="no" />
-          </object>
-        </child>
+    <!-- Main leaflet -->
+      <child>
+        <object class="AdwLeaflet" id="content_box">
+          <property name="can-swipe-back">true</property>
+          <property name="width-request">360</property>
+
+          <child>
+            <object class="GtkBox">
+              <property name="orientation">vertical</property>
+              <property name="hexpand">true</property>
+
+              <child>
+                <object class="GtkBox" id="headerbar_box">
+                  <child>
+                    <object class="GtkHeaderBar" id="headerbar">
+                      <property name="hexpand">1</property>
+                      <property name="show-title-buttons">1</property>
+
+                      <!-- Workspace Button -->
+                      <child>
+                        <object class="GtdMenuButton" id="workspaces_menu_button">
+                          <property name="visible">false</property>
+                          <property name="can_focus">1</property>
+                          <property name="popover">workspaces_popover</property>
+                        </object>
+                      </child>
+
+                      <child>
+                        <object class="GtkBox" id="workspace_box_start">
+                          <property name="spacing">6</property>
+                        </object>
+                      </child>
+
+                      <!-- Omni Area -->
+                      <child type="title">
+                        <object class="GtdOmniArea" id="omni_area">
+                        </object>
+                      </child>
+
+
+                      <child type="end">
+                        <object class="GtkMenuButton">
+                          <property name="menu-model">app-menu</property>
+                          <property name="direction">none</property>
+                        </object>
+                      </child>
+
+                      <!-- Fullscreen Button -->
+                      <child type="end">
+                        <object class="GtkToggleButton">
+                          <property name="action-name">win.toggle-fullscreen</property>
+                          <property name="icon-name">view-fullscreen-symbolic</property>
+                        </object>
+                      </child>
+
+                      <child type="end">
+                        <object class="GtkBox" id="workspace_box_end">
+                          <property name="spacing">6</property>
+                        </object>
+                      </child>
+                    </object>
+                  </child>
+                </object>
+              </child>
+
+              <child>
+                <object class="GtkOverlay" id="overlay">
+                  <child type="overlay">
+                    <object class="GtdNotificationWidget" id="notification_widget">
+                      <property name="can_focus">False</property>
+                      <property name="halign">center</property>
+                      <property name="valign">start</property>
+                    </object>
+                  </child>
+
+                  <child type="overlay">
+                    <object class="GtkRevealer" id="headerbar_overlay_revealer">
+                      <property name="transition-type">slide-down</property>
+                      <property name="transition-duration">750</property>
+                      <property name="can_focus">False</property>
+                      <property name="valign">start</property>
+                    </object>
+                  </child>
+
+                  <child>
+                    <object class="GtkEventControllerMotion" id="overlay_motion_controller">
+                      <property name="propagation-phase">none</property>
+                      <signal name="motion" handler="on_overlay_motion_controller_motion_cb" 
object="GtdWindow" swapped="no" />
+                    </object>
+                  </child>
+
+                  <!-- Main Stack -->
+                  <child>
+                    <object class="GtkStack" id="stack">
+                      <property name="hexpand">true</property>
+                      <property name="vexpand">true</property>
+                      <property name="transition_duration">250</property>
+                      <property name="transition_type">crossfade</property>
+                      <signal name="notify::visible-child" handler="on_stack_visible_child_cb" 
object="GtdWindow" swapped="no"/>
+                      <style>
+                        <class name="background"/>
+                      </style>
+                    </object>
+                  </child>
+
+                </object>
+              </child>
+
+            </object>
+          </child>
+
+        </object>
+      </child>
+
 
-        <!-- Main Stack -->
-        <child>
-          <object class="GtkStack" id="stack">
-            <property name="hexpand">true</property>
-            <property name="vexpand">true</property>
-            <property name="transition_duration">250</property>
-            <property name="transition_type">crossfade</property>
-            <signal name="notify::visible-child" handler="on_stack_visible_child_cb" object="GtdWindow" 
swapped="no"/>
-            <style>
-              <class name="background"/>
-            </style>
-          </object>
-        </child>
 
-      </object>
-    </child>
-    <child type="titlebar">
-      <object class="GtkBox" id="headerbar_box">
-        <child>
-          <object class="GtkHeaderBar" id="headerbar">
-            <property name="hexpand">1</property>
-            <property name="show-title-buttons">1</property>
-
-            <!-- Workspace Button -->
-            <child>
-              <object class="GtdMenuButton" id="workspaces_menu_button">
-                <property name="visible">false</property>
-                <property name="can_focus">1</property>
-                <property name="popover">workspaces_popover</property>
-              </object>
-            </child>
-
-            <child>
-              <object class="GtkBox" id="workspace_box_start">
-                <property name="spacing">6</property>
-              </object>
-            </child>
-
-            <!-- Omni Area -->
-            <child type="title">
-              <object class="GtdOmniArea" id="omni_area">
-              </object>
-            </child>
-
-
-            <child type="end">
-              <object class="GtkMenuButton">
-                <property name="menu-model">app-menu</property>
-                <property name="direction">none</property>
-              </object>
-            </child>
-
-            <!-- Fullscreen Button -->
-            <child type="end">
-              <object class="GtkToggleButton">
-                <property name="action-name">win.toggle-fullscreen</property>
-                <property name="icon-name">view-fullscreen-symbolic</property>
-              </object>
-            </child>
-
-            <child type="end">
-              <object class="GtkBox" id="workspace_box_end">
-                <property name="spacing">6</property>
-              </object>
-            </child>
-          </object>
-        </child>
-      </object>
-    </child>
   </template>
 
   <!-- Workspaces Popover -->


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