81 uitable->ondragstart = args.ondragstart; |
81 uitable->ondragstart = args.ondragstart; |
82 uitable->ondragstartdata = args.ondragstartdata; |
82 uitable->ondragstartdata = args.ondragstartdata; |
83 uitable->ondragcomplete = args.ondragcomplete; |
83 uitable->ondragcomplete = args.ondragcomplete; |
84 uitable->ondrop = args.ondrop; |
84 uitable->ondrop = args.ondrop; |
85 uitable->ondropdata = args.ondropsdata; |
85 uitable->ondropdata = args.ondropsdata; |
86 uitable->enabledrag = args.enabledrag; |
|
87 uitable->enabledrop = args.enabledrop; |
|
88 |
86 |
89 // grid styling |
87 // grid styling |
90 winrt::Windows::UI::Color bg = { 255, 255, 255, 255 }; // test color |
88 winrt::Windows::UI::Color bg = { 255, 255, 255, 255 }; // test color |
91 SolidColorBrush brush = SolidColorBrush(bg); |
89 SolidColorBrush brush = SolidColorBrush(bg); |
92 grid.Background(brush); |
90 grid.Background(brush); |
270 |
268 |
271 // dnd |
269 // dnd |
272 if (ondragstart) { |
270 if (ondragstart) { |
273 cellBorder.CanDrag(true); |
271 cellBorder.CanDrag(true); |
274 cellBorder.DragStarting([this](IInspectable const& sender, DragStartingEventArgs args) { |
272 cellBorder.DragStarting([this](IInspectable const& sender, DragStartingEventArgs args) { |
275 UiWinuiTableDnd dndevt; |
273 UiDnD dnd; |
276 dndevt.evtobj.selection = uiselection(); |
274 dnd.evttype = 0; |
277 dndevt.evtobj.dnd = &dndevt; |
275 dnd.dndstartargs = args; |
278 dndevt.evttype = 0; |
276 dnd.dndcompletedargs = { nullptr }; |
279 dndevt.dndstartargs = args; |
277 dnd.drageventargs = { nullptr }; |
|
278 dnd.data = args.Data(); |
|
279 |
|
280 UiListDnd dndevt; |
|
281 dndevt.selection = uiselection(); |
|
282 dndevt.dnd = &dnd; |
280 |
283 |
281 UiEvent evt; |
284 UiEvent evt; |
282 evt.obj = this->obj; |
285 evt.obj = this->obj; |
283 evt.window = evt.obj->window; |
286 evt.window = evt.obj->window; |
284 evt.document = obj->ctx->document; |
287 evt.document = obj->ctx->document; |
285 evt.eventdata = &dndevt; |
288 evt.eventdata = &dndevt; |
286 evt.intval = 0; |
289 evt.intval = 0; |
287 |
290 |
288 this->ondragstart(&evt, this->ondragstartdata); |
291 this->ondragstart(&evt, this->ondragstartdata); |
289 |
292 |
290 if (dndevt.evtobj.selection.rows) { |
293 if (dndevt.selection.rows) { |
291 free(dndevt.evtobj.selection.rows); |
294 free(dndevt.selection.rows); |
292 } |
295 } |
293 }); |
296 }); |
294 cellBorder.DropCompleted([this](IInspectable const& sender, DropCompletedEventArgs args) { |
297 cellBorder.DropCompleted([this](IInspectable const& sender, DropCompletedEventArgs args) { |
295 UiWinuiTableDnd dndevt; |
298 UiDnD dnd; |
296 dndevt.evtobj.selection = uiselection(); |
299 dnd.evttype = 1; |
297 dndevt.evtobj.dnd = &dndevt; |
300 dnd.dndstartargs = { nullptr }; |
298 dndevt.evttype = 1; |
301 dnd.dndcompletedargs = args; |
299 dndevt.dndcompletedargs = args; |
302 dnd.drageventargs = { nullptr }; |
|
303 dnd.data = { nullptr }; |
|
304 |
|
305 UiListDnd dndevt; |
|
306 dndevt.selection = uiselection(); |
|
307 dndevt.dnd = &dnd; |
300 |
308 |
301 UiEvent evt; |
309 UiEvent evt; |
302 evt.obj = this->obj; |
310 evt.obj = this->obj; |
303 evt.window = evt.obj->window; |
311 evt.window = evt.obj->window; |
304 evt.document = obj->ctx->document; |
312 evt.document = obj->ctx->document; |
306 evt.intval = 0; |
314 evt.intval = 0; |
307 |
315 |
308 if (this->ondragcomplete) { |
316 if (this->ondragcomplete) { |
309 this->ondragcomplete(&evt, this->ondragcompletedata); |
317 this->ondragcomplete(&evt, this->ondragcompletedata); |
310 } |
318 } |
311 if (dndevt.evtobj.selection.rows) { |
319 if (dndevt.selection.rows) { |
312 free(dndevt.evtobj.selection.rows); |
320 free(dndevt.selection.rows); |
313 } |
321 } |
314 }); |
322 }); |
315 } |
323 } |
316 if (ondrop) { |
324 if (ondrop) { |
317 cellBorder.AllowDrop(enabledrop); |
325 cellBorder.AllowDrop(true); |
318 cellBorder.Drop(DragEventHandler([this](winrt::Windows::Foundation::IInspectable const& sender, DragEventArgs const& args){ |
326 cellBorder.Drop(DragEventHandler([this](winrt::Windows::Foundation::IInspectable const& sender, DragEventArgs const& args){ |
319 UiWinuiTableDnd dndevt; |
327 UiDnD dnd; |
320 dndevt.evtobj.selection = uiselection(); |
328 dnd.evttype = 2; |
321 dndevt.evtobj.dnd = &dndevt; |
329 dnd.dndstartargs = { nullptr }; |
322 dndevt.evttype = 2; |
330 dnd.dndcompletedargs = { nullptr }; |
323 dndevt.drageventargs = args; |
331 dnd.drageventargs = args; |
|
332 dnd.data = args.Data(); |
|
333 |
|
334 UiListDnd dndevt; |
|
335 dndevt.selection = uiselection(); |
|
336 dndevt.dnd = &dnd; |
324 |
337 |
325 UiEvent evt; |
338 UiEvent evt; |
326 evt.obj = this->obj; |
339 evt.obj = this->obj; |
327 evt.window = evt.obj->window; |
340 evt.window = evt.obj->window; |
328 evt.document = obj->ctx->document; |
341 evt.document = obj->ctx->document; |
329 evt.eventdata = &dndevt; |
342 evt.eventdata = &dndevt; |
330 evt.intval = 0; |
343 evt.intval = 0; |
331 |
344 |
332 this->ondrop(&evt, this->ondropdata); |
345 this->ondrop(&evt, this->ondropdata); |
333 |
346 |
334 if (dndevt.evtobj.selection.rows) { |
347 if (dndevt.selection.rows) { |
335 free(dndevt.evtobj.selection.rows); |
348 free(dndevt.selection.rows); |
336 } |
349 } |
337 })); |
350 })); |
338 } |
351 } |
339 |
352 |
340 // set the cell value |
353 // set the cell value |