ui/winui/table.cpp

branch
newapi
changeset 224
88bc21b19213
parent 223
8d7ca1b320e2
child 227
04b317bc6f13
equal deleted inserted replaced
223:8d7ca1b320e2 224:88bc21b19213
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

mercurial