implement row enter/leave events for sourcelist2 (GTK) default tip

Fri, 11 Sep 2026 19:26:51 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Fri, 11 Sep 2026 19:26:51 +0200
changeset 1247
070d0472e6af
parent 1246
43a7874a9d0e

implement row enter/leave events for sourcelist2 (GTK)

ui/gtk/list.c file | annotate | diff | comparison | revisions
--- a/ui/gtk/list.c	Fri Sep 11 17:27:12 2026 +0200
+++ b/ui/gtk/list.c	Fri Sep 11 19:26:51 2026 +0200
@@ -3233,6 +3233,8 @@
                 rowdata);
         gtk_widget_set_visible(button, FALSE);
         WIDGET_NO_SHOW_ALL(button);
+        
+        g_object_set_data(G_OBJECT(row), "ui-listbox-row-button", button);
     }
     
     // headings have the expander at the end
@@ -3271,6 +3273,17 @@
         }
         
         GtkWidget *row = gtk_list_box_row_new();
+#if GTK_CHECK_VERSION(4, 0, 0)
+        GtkEventController *motion_controller = gtk_event_controller_motion_new();
+        gtk_widget_add_controller(GTK_WIDGET(row), motion_controller);
+        g_signal_connect(motion_controller, "enter", G_CALLBACK(listbox_row_enter), row);
+        g_signal_connect(motion_controller, "leave", G_CALLBACK(listbox_row_leave), row);
+#else
+        gtk_widget_set_events(GTK_WIDGET(row), GDK_POINTER_MOTION_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK);
+        g_signal_connect(row, "enter-notify-event", G_CALLBACK(listbox_row_enter), NULL);
+        g_signal_connect(row, "leave-notify-event", G_CALLBACK(listbox_row_leave), NULL);
+#endif
+        
         gtk_list_box_append(listbox->listbox, row);
         UiListBox2Row row_data = {0};
         row_data.listbox = listbox;

mercurial