3 days ago
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) {