[libadwaita/wip/exalm/adaptive-states: 4/7] preferences-window: Port to adaptive states




commit 472a32c62a72cbcbee4c86be45f92eeae814a7b7
Author: Alexander Mikhaylenko <alexm gnome org>
Date:   Tue Oct 4 14:39:24 2022 +0400

    preferences-window: Port to adaptive states

 src/adw-preferences-window.c  | 14 +++++---------
 src/adw-preferences-window.ui | 28 ++++++++++++++++++++++++----
 2 files changed, 29 insertions(+), 13 deletions(-)
---
diff --git a/src/adw-preferences-window.c b/src/adw-preferences-window.c
index f192a5e0..d03cbaf2 100644
--- a/src/adw-preferences-window.c
+++ b/src/adw-preferences-window.c
@@ -16,9 +16,7 @@
 #include "adw-preferences-group-private.h"
 #include "adw-preferences-page-private.h"
 #include "adw-toast-overlay.h"
-#include "adw-view-switcher.h"
-#include "adw-view-switcher-bar.h"
-#include "adw-view-switcher-title.h"
+#include "adw-view-stack.h"
 
 /**
  * AdwPreferencesWindow:
@@ -53,8 +51,7 @@ typedef struct
   GtkListBox *search_results;
   GtkStack *search_stack;
   GtkStack *title_stack;
-  AdwViewSwitcherBar *view_switcher_bar;
-  AdwViewSwitcherTitle *view_switcher_title;
+  GtkWidget *view_switcher_stack;
 
   gboolean search_enabled;
   gboolean can_navigate_back;
@@ -363,7 +360,7 @@ title_stack_notify_transition_running_cb (AdwPreferencesWindow *self)
   AdwPreferencesWindowPrivate *priv = adw_preferences_window_get_instance_private (self);
 
   if (gtk_stack_get_transition_running (priv->title_stack) ||
-      gtk_stack_get_visible_child (priv->title_stack) != GTK_WIDGET (priv->view_switcher_title))
+      gtk_stack_get_visible_child (priv->title_stack) != priv->view_switcher_stack)
     return;
 
   gtk_editable_set_text (GTK_EDITABLE (priv->search_entry), "");
@@ -375,7 +372,7 @@ title_stack_notify_visible_child_cb (AdwPreferencesWindow *self)
   AdwPreferencesWindowPrivate *priv = adw_preferences_window_get_instance_private (self);
 
   if (adw_get_enable_animations (GTK_WIDGET (priv->title_stack)) ||
-      gtk_stack_get_visible_child (priv->title_stack) != GTK_WIDGET (priv->view_switcher_title))
+      gtk_stack_get_visible_child (priv->title_stack) != priv->view_switcher_stack)
     return;
 
   gtk_editable_set_text (GTK_EDITABLE (priv->search_entry), "");
@@ -630,8 +627,7 @@ adw_preferences_window_class_init (AdwPreferencesWindowClass *klass)
   gtk_widget_class_bind_template_child_private (widget_class, AdwPreferencesWindow, search_results);
   gtk_widget_class_bind_template_child_private (widget_class, AdwPreferencesWindow, search_stack);
   gtk_widget_class_bind_template_child_private (widget_class, AdwPreferencesWindow, title_stack);
-  gtk_widget_class_bind_template_child_private (widget_class, AdwPreferencesWindow, view_switcher_bar);
-  gtk_widget_class_bind_template_child_private (widget_class, AdwPreferencesWindow, view_switcher_title);
+  gtk_widget_class_bind_template_child_private (widget_class, AdwPreferencesWindow, view_switcher_stack);
   gtk_widget_class_bind_template_callback (widget_class, subpages_leaflet_child_transition_running_cb);
   gtk_widget_class_bind_template_callback (widget_class, subpages_leaflet_visible_child_cb);
   gtk_widget_class_bind_template_callback (widget_class, title_stack_notify_transition_running_cb);
diff --git a/src/adw-preferences-window.ui b/src/adw-preferences-window.ui
index 7f7bd661..1a3f3a22 100644
--- a/src/adw-preferences-window.ui
+++ b/src/adw-preferences-window.ui
@@ -8,6 +8,8 @@
     <property name="title" translatable="yes">Preferences</property>
     <property name="default-width">640</property>
     <property name="default-height">576</property>
+    <property name="width-request">360</property>
+    <property name="height-request">150</property>
     <style>
       <class name="preferences"/>
     </style>
@@ -36,9 +38,19 @@
                           <object class="GtkStackPage">
                             <property name="name">pages</property>
                             <property name="child">
-                              <object class="AdwViewSwitcherTitle" id="view_switcher_title">
-                                <property name="stack">pages_stack</property>
-                                <property name="title" bind-source="AdwPreferencesWindow" 
bind-property="title" bind-flags="sync-create"/>
+                              <object class="GtkStack" id="view_switcher_stack">
+                                <child>
+                                  <object class="AdwViewSwitcher" id="view_switcher">
+                                    <property name="stack">pages_stack</property>
+                                    <property name="policy">wide</property>
+                                    <property name="halign">center</property>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="AdwWindowTitle" id="title">
+                                    <property name="title" bind-source="AdwPreferencesWindow" 
bind-property="title" bind-flags="sync-create"/>
+                                  </object>
+                                </child>
                               </object>
                             </property>
                           </object>
@@ -93,7 +105,6 @@
                             <child>
                               <object class="AdwViewSwitcherBar" id="view_switcher_bar">
                                 <property name="stack">pages_stack</property>
-                                <property name="reveal" bind-source="view_switcher_title" 
bind-property="title-visible" bind-flags="sync-create"/>
                               </object>
                             </child>
                           </object>
@@ -154,5 +165,14 @@
         </property>
       </object>
     </property>
+    <child>
+      <object class="AdwAdaptiveState">
+        <conditions>
+          <condition type="max-width">600</condition>
+        </conditions>
+        <setter object="view_switcher_stack" property="visible-child">title</setter>
+        <setter object="view_switcher_bar" property="reveal">True</setter>
+      </object>
+    </child>
   </template>
 </interface>


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