[libadwaita/wip/exalm/pref-window: 18/19] preferences-window: Get the number of pages manually




commit 5056371a6a096b02d869343de987c9bb25fc58b5
Author: Alexander Mikhaylenko <alexm gnome org>
Date:   Mon Mar 29 14:27:23 2021 +0500

    preferences-window: Get the number of pages manually
    
    Don't rely on adw_view_switcher_get_title_visible(), for example it will
    have a false positive when the window is narrow.

 src/adw-preferences-window.c | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)
---
diff --git a/src/adw-preferences-window.c b/src/adw-preferences-window.c
index af9d5bc..778d22a 100644
--- a/src/adw-preferences-window.c
+++ b/src/adw-preferences-window.c
@@ -147,11 +147,29 @@ filter_search_results (AdwPreferencesRow    *row,
   return FALSE;
 }
 
+static int
+get_n_pages (AdwPreferencesWindow *self)
+{
+  AdwPreferencesWindowPrivate *priv = adw_preferences_window_get_instance_private (self);
+  int count = 0;
+  GtkWidget *child;
+
+  for (child = gtk_widget_get_first_child (GTK_WIDGET (priv->pages_stack));
+       child;
+       child = gtk_widget_get_next_sibling (child)) {
+    GtkStackPage *page = gtk_stack_get_page (priv->pages_stack, child);
+
+    if (gtk_stack_page_get_visible (page))
+      count++;
+  }
+
+  return count;
+}
+
 static gchar *
 create_search_row_subtitle (AdwPreferencesWindow *self,
                             GtkWidget            *row)
 {
-  AdwPreferencesWindowPrivate *priv = adw_preferences_window_get_instance_private (self);
   GtkWidget *group, *page;
   const char *group_title = NULL;
   g_autofree char *page_title = NULL;
@@ -180,7 +198,7 @@ create_search_row_subtitle (AdwPreferencesWindow *self,
   }
 
   if (group_title) {
-    if (!adw_view_switcher_title_get_title_visible (priv->view_switcher_title))
+    if (get_n_pages (self) > 1)
       return g_strdup_printf ("%s → %s", page_title ? page_title : _("Untitled page"), group_title);
 
     return g_strdup (group_title);


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