ui/winui/table.cpp

branch
newapi
changeset 224
88bc21b19213
parent 223
8d7ca1b320e2
child 227
04b317bc6f13
--- 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);
 						}
 					}));
 			}

mercurial