--- a/ui/winui/table.cpp Thu Oct 19 21:19:19 2023 +0200 +++ b/ui/winui/table.cpp Fri Oct 20 16:34:33 2023 +0200 @@ -83,8 +83,6 @@ uitable->ondragcomplete = args.ondragcomplete; uitable->ondrop = args.ondrop; uitable->ondropdata = args.ondropsdata; - uitable->enabledrag = args.enabledrag; - uitable->enabledrop = args.enabledrop; // grid styling winrt::Windows::UI::Color bg = { 255, 255, 255, 255 }; // test color @@ -272,11 +270,16 @@ if (ondragstart) { cellBorder.CanDrag(true); cellBorder.DragStarting([this](IInspectable const& sender, DragStartingEventArgs args) { - UiWinuiTableDnd dndevt; - dndevt.evtobj.selection = uiselection(); - dndevt.evtobj.dnd = &dndevt; - dndevt.evttype = 0; - dndevt.dndstartargs = args; + UiDnD dnd; + dnd.evttype = 0; + dnd.dndstartargs = args; + dnd.dndcompletedargs = { nullptr }; + dnd.drageventargs = { nullptr }; + dnd.data = args.Data(); + + UiListDnd dndevt; + dndevt.selection = uiselection(); + dndevt.dnd = &dnd; UiEvent evt; evt.obj = this->obj; @@ -287,16 +290,21 @@ this->ondragstart(&evt, this->ondragstartdata); - if (dndevt.evtobj.selection.rows) { - free(dndevt.evtobj.selection.rows); + if (dndevt.selection.rows) { + free(dndevt.selection.rows); } }); cellBorder.DropCompleted([this](IInspectable const& sender, DropCompletedEventArgs args) { - UiWinuiTableDnd dndevt; - dndevt.evtobj.selection = uiselection(); - dndevt.evtobj.dnd = &dndevt; - dndevt.evttype = 1; - dndevt.dndcompletedargs = args; + UiDnD dnd; + dnd.evttype = 1; + dnd.dndstartargs = { nullptr }; + dnd.dndcompletedargs = args; + dnd.drageventargs = { nullptr }; + dnd.data = { nullptr }; + + UiListDnd dndevt; + dndevt.selection = uiselection(); + dndevt.dnd = &dnd; UiEvent evt; evt.obj = this->obj; @@ -308,19 +316,24 @@ if (this->ondragcomplete) { this->ondragcomplete(&evt, this->ondragcompletedata); } - if (dndevt.evtobj.selection.rows) { - free(dndevt.evtobj.selection.rows); + if (dndevt.selection.rows) { + free(dndevt.selection.rows); } }); } if (ondrop) { - cellBorder.AllowDrop(enabledrop); + cellBorder.AllowDrop(true); cellBorder.Drop(DragEventHandler([this](winrt::Windows::Foundation::IInspectable const& sender, DragEventArgs const& args){ - UiWinuiTableDnd dndevt; - dndevt.evtobj.selection = uiselection(); - dndevt.evtobj.dnd = &dndevt; - dndevt.evttype = 2; - dndevt.drageventargs = args; + UiDnD dnd; + dnd.evttype = 2; + dnd.dndstartargs = { nullptr }; + dnd.dndcompletedargs = { nullptr }; + dnd.drageventargs = args; + dnd.data = args.Data(); + + UiListDnd dndevt; + dndevt.selection = uiselection(); + dndevt.dnd = &dnd; UiEvent evt; evt.obj = this->obj; @@ -331,8 +344,8 @@ this->ondrop(&evt, this->ondropdata); - if (dndevt.evtobj.selection.rows) { - free(dndevt.evtobj.selection.rows); + if (dndevt.selection.rows) { + free(dndevt.selection.rows); } })); }