ui/gtk/list.c

changeset 1249
6bb45d356481
parent 1248
8a428e2f8ae7
--- a/ui/gtk/list.c	Sat Sep 12 10:06:47 2026 +0200
+++ b/ui/gtk/list.c	Sat Sep 12 11:42:52 2026 +0200
@@ -2802,6 +2802,7 @@
 static void listbox_row_on_enter(GtkWidget *row) {
     GtkWidget *button = g_object_get_data(G_OBJECT(row), "ui-listbox-row-button");
     if(button) {
+        //gtk_widget_set_opacity(button, 1.0);
         gtk_widget_set_visible(button, TRUE);
     }
 }
@@ -2810,6 +2811,7 @@
     GtkWidget *button = g_object_get_data(G_OBJECT(row), "ui-listbox-row-button");
     if(button) {  
         if(!g_object_get_data(G_OBJECT(button), "ui-button-popup")) {
+            //gtk_widget_set_opacity(button, 0.0);
             gtk_widget_set_visible(button, FALSE);
         } else {
             g_object_set_data(G_OBJECT(button), "ui-button-invisible", (void*)1);
@@ -2836,9 +2838,12 @@
 #else
 static gboolean listbox_row_enter(
         GtkWidget *row,
-        GdkEventCrossing event,
+        GdkEventCrossing *event,
         gpointer user_data)
-{
+{ 
+    if(event->detail == GDK_NOTIFY_INFERIOR) {
+        return FALSE;
+    }
     listbox_row_on_enter(row);
     return FALSE;
 }
@@ -2849,6 +2854,9 @@
         GdkEventCrossing *event,
         gpointer user_data)
 {
+    if(event->detail == GDK_NOTIFY_INFERIOR) {
+        return FALSE;
+    }    
     listbox_row_on_leave(row);
     return FALSE;
 }
@@ -2914,18 +2922,21 @@
         
         // create listbox item
         GtkWidget *row = gtk_list_box_row_new();
+        GtkWidget *row0 = row;
 #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);
+        row0 = gtk_event_box_new();
+        LISTBOX_ROW_SET_CHILD(row, row0);
+        gtk_widget_set_events(GTK_WIDGET(row0), GDK_POINTER_MOTION_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK);
+        g_signal_connect(row0, "enter-notify-event", G_CALLBACK(listbox_row_enter), NULL);
+        g_signal_connect(row0, "leave-notify-event", G_CALLBACK(listbox_row_leave), NULL);
 #endif
         
-        listbox_fill_row(listbox, row, sublist, &item, index);
+        listbox_fill_row(listbox, row0, sublist, &item, index);
         LISTBOX_ROW_SHOW(row);
         if(index == first_index) {
             // first row in the sublist, set ui_listbox data to the row
@@ -3305,15 +3316,18 @@
         }
         
         GtkWidget *row = gtk_list_box_row_new();
+        GtkWidget *row0 = row;
 #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);
+        row0 = gtk_event_box_new();
+        LISTBOX_ROW_SET_CHILD(row, row0);
+        gtk_widget_set_events(row0, GDK_POINTER_MOTION_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK);
+        g_signal_connect(row0, "enter-notify-event", G_CALLBACK(listbox_row_enter), NULL);
+        g_signal_connect(row0, "leave-notify-event", G_CALLBACK(listbox_row_leave), NULL);
 #endif
         
         gtk_list_box_insert(listbox->listbox, row, -1);
@@ -3324,7 +3338,7 @@
         row_data.depth = item.depth;
         cxListAdd(listbox->rows, &row_data);
         UiListBox2Row *row_data_ptr = cxListLast(listbox->rows);
-        listbox2_update_item(row_data_ptr, row, &item, item.depth - (item.depth > 0 ? heading : 0));
+        listbox2_update_item(row_data_ptr, row0, &item, item.depth - (item.depth > 0 ? heading : 0));
         
         if(item.depth >= stack_size) {
             stack_size += 8;

mercurial