ui/gtk/menu.c

changeset 113
dde28a806552
parent 112
c3f2f16fa4b8
--- a/ui/gtk/menu.c	Sun Oct 19 21:20:08 2025 +0200
+++ b/ui/gtk/menu.c	Mon Nov 10 21:52:51 2025 +0100
@@ -284,6 +284,7 @@
             event->callback = list->callback;
             event->value = i - 1;
             event->customdata = elm;
+            event->customint = UI_EVENT_DATA_LIST_ELM;
 
             g_signal_connect(
                 widget,
@@ -309,9 +310,17 @@
     evt.obj = event->obj;
     evt.window = event->obj->window;
     evt.document = event->obj->ctx->document;
+    if(event->customdata) {
+        evt.eventdata = event->customdata;
+        evt.eventdatatype = event->customint;
+    } else {
+        evt.eventdata = uic_get_tmp_eventdata();
+        evt.eventdatatype = uic_get_tmp_eventdata_type();
+    }
     evt.eventdata = event->customdata;
     evt.intval = event->value;
-    event->callback(&evt, event->userdata);    
+    event->callback(&evt, event->userdata);   
+    uic_set_tmp_eventdata(NULL, 0);
 }
 
 void ui_menu_event_toggled(GtkCheckMenuItem *ci, UiEventData *event) {
@@ -747,10 +756,16 @@
     evt.obj = event->obj;
     evt.window = event->obj->window;
     evt.document = event->obj->ctx->document;
-    evt.eventdata = event->customdata;
-    evt.eventdatatype = event->customint;
+    if(event->customdata) {
+        evt.eventdata = event->customdata;
+        evt.eventdatatype = event->customint;
+    } else {
+        evt.eventdata = uic_get_tmp_eventdata();
+        evt.eventdatatype = uic_get_tmp_eventdata_type();
+    }
     evt.intval = intval;
-    event->callback(&evt, event->userdata);    
+    event->callback(&evt, event->userdata);
+    uic_set_tmp_eventdata(NULL, 0);
 }
 
 void ui_menu_list_item_activate_event_wrapper(GSimpleAction* self, GVariant* parameter, UiEventData *event) {

mercurial