# HG changeset patch
# User Olaf Wintermann <olaf.wintermann@gmail.com>
# Date 1740318923 -3600
# Node ID 5fde0356b66a6dd3180a1aecf306119a11c8641c
# Parent  9ec14d31158a30e7589727411320d6f898410dea
fix wrong selection in list onactivate event, when the item was pre-selected

diff -r 9ec14d31158a -r 5fde0356b66a ui/gtk/list.c
--- 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);
 }