[libadwaita/wip/exalm/leaflet-selection] leaflet: Implement select_item() for AdwLeafletPages




commit 1ba9c6ed834bdaffa502b896fcda52f18309e8d5
Author: Alexander Mikhaylenko <alexm gnome org>
Date:   Wed Apr 28 13:01:19 2021 +0500

    leaflet: Implement select_item() for AdwLeafletPages
    
    That code was adapted from AdwSqueezer, which doesn't allow changing
    selection as it's automatically managed. This isn't the case with leaflet,
    we should have allow it.
    
    Fixed https://gitlab.gnome.org/GNOME/libadwaita/-/issues/66

 src/adw-leaflet.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
---
diff --git a/src/adw-leaflet.c b/src/adw-leaflet.c
index fa03770..e60dae8 100644
--- a/src/adw-leaflet.c
+++ b/src/adw-leaflet.c
@@ -378,10 +378,26 @@ adw_leaflet_pages_is_selected (GtkSelectionModel *model,
   return page && page == self->leaflet->visible_child;
 }
 
+static gboolean
+adw_leaflet_pages_select_item (GtkSelectionModel *model,
+                               guint              position,
+                               gboolean           exclusive)
+{
+  AdwLeafletPages *self = ADW_LEAFLET_PAGES (model);
+  AdwLeafletPage *page;
+
+  page = g_list_nth_data (self->leaflet->children, position);
+
+  adw_leaflet_set_visible_child (self->leaflet, page->widget);
+
+  return TRUE;
+}
+
 static void
 adw_leaflet_pages_selection_model_init (GtkSelectionModelInterface *iface)
 {
   iface->is_selected = adw_leaflet_pages_is_selected;
+  iface->select_item = adw_leaflet_pages_select_item;
 }
 
 G_DEFINE_TYPE_WITH_CODE (AdwLeafletPages, adw_leaflet_pages, G_TYPE_OBJECT,


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