[gnome-builder/wip/gtk4-port: 998/1774] libide/gtk: add listview movement helpers
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/gtk4-port: 998/1774] libide/gtk: add listview movement helpers
- Date: Mon, 11 Jul 2022 22:31:31 +0000 (UTC)
commit 5b8103aa7c20a797d35b64aede80eea65bbfc07f
Author: Christian Hergert <chergert redhat com>
Date: Fri May 13 08:14:14 2022 -0700
libide/gtk: add listview movement helpers
src/libide/gtk/ide-gtk.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
src/libide/gtk/ide-gtk.h | 4 ++++
2 files changed, 50 insertions(+)
---
diff --git a/src/libide/gtk/ide-gtk.c b/src/libide/gtk/ide-gtk.c
index 5c7039ea7..5f8447ff6 100644
--- a/src/libide/gtk/ide-gtk.c
+++ b/src/libide/gtk/ide-gtk.c
@@ -466,3 +466,49 @@ ide_g_date_time_format_for_display (GDateTime *self)
return g_strdup_printf (ngettext ("About %u year ago", "About %u years ago", years), years);
}
+
+void
+ide_gtk_list_view_move_next (GtkListView *view)
+{
+ GtkSelectionModel *model;
+ GtkBitset *bitset;
+ guint pos = 0;
+
+ g_return_if_fail (GTK_IS_LIST_VIEW (view));
+
+ if (!(model = gtk_list_view_get_model (view)))
+ return;
+
+ bitset = gtk_selection_model_get_selection (model);
+ if (!gtk_bitset_is_empty (bitset))
+ pos = gtk_bitset_get_minimum (bitset) + 1;
+
+ if (pos < g_list_model_get_n_items (G_LIST_MODEL (model)))
+ {
+ gtk_selection_model_select_item (model, pos, TRUE);
+ gtk_widget_activate_action (GTK_WIDGET (view), "list.scroll-to-item", "u", pos);
+ }
+}
+
+void
+ide_gtk_list_view_move_previous (GtkListView *view)
+{
+ GtkSelectionModel *model;
+ GtkBitset *bitset;
+ guint pos = 0;
+
+ g_return_if_fail (GTK_IS_LIST_VIEW (view));
+
+ if (!(model = gtk_list_view_get_model (view)))
+ return;
+
+ bitset = gtk_selection_model_get_selection (model);
+ if (!gtk_bitset_is_empty (bitset))
+ pos = gtk_bitset_get_minimum (bitset);
+
+ if (pos > 0)
+ {
+ gtk_selection_model_select_item (model, pos-1, TRUE);
+ gtk_widget_activate_action (GTK_WIDGET (view), "list.scroll-to-item", "u", pos-1);
+ }
+}
diff --git a/src/libide/gtk/ide-gtk.h b/src/libide/gtk/ide-gtk.h
index e2a6b8d0a..bdc6a44c7 100644
--- a/src/libide/gtk/ide-gtk.h
+++ b/src/libide/gtk/ide-gtk.h
@@ -59,5 +59,9 @@ IDE_AVAILABLE_IN_ALL
char *ide_g_time_span_to_label (GTimeSpan span);
IDE_AVAILABLE_IN_ALL
char *ide_g_date_time_format_for_display (GDateTime *self);
+IDE_AVAILABLE_IN_ALL
+void ide_gtk_list_view_move_next (GtkListView *view);
+IDE_AVAILABLE_IN_ALL
+void ide_gtk_list_view_move_previous (GtkListView *view);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]