fix wrong selection in list onactivate event, when the item was pre-selected

3 weeks ago

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sun, 23 Feb 2025 14:55:23 +0100 (3 weeks ago)
changeset 473
5fde0356b66a
parent 472
9ec14d31158a
child 474
971dd0f3a117

fix wrong selection in list onactivate event, when the item was pre-selected

ui/gtk/list.c file | annotate | diff | comparison | revisions
--- a/ui/gtk/list.c	Sun Feb 23 14:38:27 2025 +0100
+++ b/ui/gtk/list.c	Sun Feb 23 14:55:23 2025 +0100
@@ -454,13 +454,7 @@
     }
 }
 
-void ui_columnview_activate(void *ignore, guint position, gpointer userdata) {
-    UiListView *view = userdata;
-    listview_event(view->onactivate, view->onactivatedata, view);
-}
-
-void ui_listview_selection_changed(GtkSelectionModel* self, guint position, guint n_items, gpointer userdata) {
-    UiListView *view = userdata;
+static void listview_update_selection(UiListView *view) {
     free(view->selection.rows);
     view->selection.count = 0;
     view->selection.rows = NULL;
@@ -483,7 +477,19 @@
     } else {
         free(newselection);
     }
+}
     
+void ui_columnview_activate(void *ignore, guint position, gpointer userdata) {
+    UiListView *view = userdata;
+    if(view->selection.count == 0) {
+        listview_update_selection(view);
+    }
+    listview_event(view->onactivate, view->onactivatedata, view);
+}
+
+void ui_listview_selection_changed(GtkSelectionModel* self, guint position, guint n_items, gpointer userdata) {
+    UiListView *view = userdata;
+    listview_update_selection(view);
     listview_event(view->onselection, view->onselectiondata, view);
 }
 

mercurial