implement event->set for list events (GTK, Motif)

3 days ago

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Mon, 17 Mar 2025 12:22:43 +0100 (3 days ago)
changeset 501
c0f108b1b709
parent 500
95ab1710993f
child 502
390c737daf08

implement event->set for list events (GTK, Motif)

ui/gtk/list.c file | annotate | diff | comparison | revisions
ui/motif/list.c file | annotate | diff | comparison | revisions
--- a/ui/gtk/list.c	Sun Mar 16 13:53:30 2025 +0100
+++ b/ui/gtk/list.c	Mon Mar 17 12:22:43 2025 +0100
@@ -474,6 +474,7 @@
     event.window = event.obj->window;
     event.intval = view->selection.count;
     event.eventdata = &view->selection;
+    event.set = ui_get_setop();
     if(cb) {
         cb(&event, cbdata);
     }
@@ -516,6 +517,7 @@
         event.window = event.obj->window;
         event.intval = index;
         event.eventdata = eventdata->data;
+        event.set = ui_get_setop();
         view->onactivate(&event, view->onactivatedata);
     }
 }
@@ -552,6 +554,7 @@
         event.window = event.obj->window;
         event.intval = view->selection.count;
         event.eventdata = &view->selection;
+        event.set = ui_get_setop();
         view->onactivate(&event, view->onactivatedata);
     }
 }
@@ -589,6 +592,7 @@
 }
 
 void ui_listview_setselection2(UiList *list, UiListSelection selection) {
+    ui_setop_enable(TRUE);
     UiListView *view = list->obj;
     UiListSelection newselection;
     newselection.count = view->selection.count;
@@ -607,6 +611,7 @@
             gtk_selection_model_select_item(view->selectionmodel, selection.rows[i], FALSE);
         }
     }
+    ui_setop_enable(FALSE);
 }
 
 UiListSelection ui_combobox_getselection(UiList *list) {
@@ -622,12 +627,14 @@
 }
 
 void ui_combobox_setselection(UiList *list, UiListSelection selection) {
+    ui_setop_enable(TRUE);
     UiListView *view = list->obj;
     if(selection.count > 0) {
         gtk_drop_down_set_selected(GTK_DROP_DOWN(view->widget), selection.rows[0]);
     } else {
         gtk_drop_down_set_selected(GTK_DROP_DOWN(view->widget), GTK_INVALID_LIST_POSITION);
     }
+    ui_setop_enable(FALSE);
 }
 
 #else
@@ -1046,11 +1053,13 @@
 }
 
 void ui_listview_setselection(UiList *list, UiListSelection selection) {
+    ui_setop_enable(TRUE);
     UiListView *view = list->obj;
     GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(view->widget));
     GtkTreePath *path = gtk_tree_path_new_from_indicesv(selection.rows, selection.count);
     gtk_tree_selection_select_path(sel, path);
     //g_object_unref(path);
+    ui_setop_enable(FALSE);
 }
 
 
@@ -1137,6 +1146,7 @@
         event->callback = f;
         event->value = 0;
         event->customdata = uicbox;
+        event.set = ui_get_setop();
 
         g_signal_connect(
                 combobox,
@@ -1165,6 +1175,7 @@
     event.document = event.obj->ctx->document;
     event.eventdata = eventdata;
     event.intval = index;
+    event.set = ui_get_setop();
     e->callback(&event, e->userdata);
 }
 
@@ -1185,10 +1196,12 @@
 }
 
 void ui_combobox_setselection(UiList *list, UiListSelection selection) {
+    ui_setop_enable(TRUE);
     UiListView *combobox = list->obj;
     if(selection.count > 0) {
         gtk_combo_box_set_active(GTK_COMBO_BOX(combobox->widget), selection.rows[0]);
     }
+    ui_setop_enable(FALSE);
 }
 
 
@@ -1210,6 +1223,7 @@
     e.document = event->obj->ctx->document;
     e.eventdata = &selection;
     e.intval = selection.count > 0 ? selection.rows[0] : -1;
+    e.set = ui_get_setop();
     event->activate(&e, event->activatedata);
     
     if(selection.count > 0) {
@@ -1229,6 +1243,7 @@
     e.document = event->obj->ctx->document;
     e.eventdata = &selection;
     e.intval = selection.count > 0 ? selection.rows[0] : -1;
+    e.set = ui_get_setop();
     event->selection(&e, event->selectiondata);
     
     if(selection.count > 0) {
@@ -1287,6 +1302,7 @@
         event.document = event.obj->ctx->document;
         event.eventdata = dnd;
         event.intval = 0;
+        event.set = ui_get_setop();
         listview->ondragstart(&event, listview->ondragstartdata);
     }
     
@@ -1322,6 +1338,7 @@
         event.document = event.obj->ctx->document;
         event.eventdata = &dnd;
         event.intval = 0;
+        event.set = ui_get_setop();
         listview->ondragcomplete(&event, listview->ondragcompletedata);
     }
 }
@@ -1350,6 +1367,7 @@
         event.document = event.obj->ctx->document;
         event.eventdata = &dnd;
         event.intval = 0;
+        event.set = ui_get_setop();
         listview->ondrop(&event, listview->ondropdata);
     }
     
@@ -1412,6 +1430,7 @@
         event.document = event.obj->ctx->document;
         event.eventdata = &dnd;
         event.intval = 0;
+        event.set = ui_get_setop();
         listview->ondragstart(&event, listview->ondragstartdata);
     }
 }
@@ -1436,6 +1455,7 @@
         event.document = event.obj->ctx->document;
         event.eventdata = &dnd;
         event.intval = 0;
+        event.set = ui_get_setop();
         listview->ondragcomplete(&event, listview->ondragcompletedata);
     }
 }
@@ -1481,6 +1501,7 @@
         event.document = event.obj->ctx->document;
         event.eventdata = &dnd;
         event.intval = 0;
+        event.set = ui_get_setop();
         listview->ondrop(&event, listview->ondropdata);
     }
 }
@@ -1953,6 +1974,7 @@
     event.document = event.obj->ctx->document;
     event.eventdata = &eventdata;
     event.intval = data->value0;
+    event.set = ui_get_setop();
     
     if(data->callback) {
         data->callback(&event, data->userdata);
--- a/ui/motif/list.c	Sun Mar 16 13:53:30 2025 +0100
+++ b/ui/motif/list.c	Mon Mar 17 12:22:43 2025 +0100
@@ -186,11 +186,13 @@
 }
 
 void ui_listview_setselection(UiList *list, UiListSelection selection) {
+    ui_setop_enable(TRUE);
     UiListView *listview = list->obj;
     XmListDeselectAllItems(listview->widget);
     for(int i=0;i<selection.count;i++) {
         XmListSelectPos(listview->widget, selection.rows[i]+1, False);
     }
+    ui_setop_enable(FALSE);
 }
 
 void* ui_strmodel_getvalue(void *elm, int column) {

mercurial