|
334 | 334 | actions = {
|
335 | 335 | drag: {
|
336 | 336 | cursor : 'move',
|
337 |
| - moveListener: dragMove |
| 337 | + start: dragStart, |
| 338 | + move: dragMove |
338 | 339 | },
|
339 | 340 | resizex: {
|
340 | 341 | cursor : 'e-resize',
|
341 |
| - moveListener: resizeMove |
| 342 | + start: resizeStart, |
| 343 | + move: resizeMove |
342 | 344 | },
|
343 | 345 | resizey: {
|
344 | 346 | cursor : 's-resize',
|
345 |
| - moveListener: resizeMove |
| 347 | + start: resizeStart, |
| 348 | + move: resizeMove |
346 | 349 | },
|
347 | 350 | resizexy: {
|
348 | 351 | cursor : 'se-resize',
|
349 |
| - moveListener: resizeMove |
| 352 | + start: resizeStart, |
| 353 | + move: resizeMove |
350 | 354 | },
|
351 | 355 | gesture: {
|
352 | 356 | cursor : '',
|
353 |
| - moveListener: gestureMove |
| 357 | + start: gestureStart, |
| 358 | + move: gestureMove |
354 | 359 | }
|
355 | 360 | },
|
356 | 361 |
|
|
1202 | 1207 | return index;
|
1203 | 1208 | }
|
1204 | 1209 |
|
1205 |
| - function getDrop (event, dragElement, setActive) { |
1206 |
| - var validDrops = []; |
| 1210 | + // Collect a new set of possible drops and save them in activeDrops. |
| 1211 | + // setActiveDrops should always be called when a drag has just started or a |
| 1212 | + // drag event happens while dynamicDrop is true |
| 1213 | + function setActiveDrops (dragElement) { |
| 1214 | + // get dropzones and their elements that could recieve the draggable |
| 1215 | + var possibleDrops = collectDrops(event, dragElement, true); |
1207 | 1216 |
|
1208 |
| - // If setActive is true a new set of possible drops will be |
1209 |
| - // collected and saved in activeDrops. setActive should always be |
1210 |
| - // true when a drag has just started or dynamicDrop is true |
1211 |
| - if ((setActive = setActive || dynamicDrop)) { |
1212 |
| - // get dropzones and their elements that could recieve the draggable |
1213 |
| - var possibleDrops = collectDrops(event, dragElement, setActive); |
| 1217 | + activeDrops.dropzones = possibleDrops.dropzones; |
| 1218 | + activeDrops.elements = possibleDrops.elements; |
| 1219 | + activeDrops.rects = []; |
1214 | 1220 |
|
1215 |
| - activeDrops.dropzones = possibleDrops.dropzones; |
1216 |
| - activeDrops.elements = possibleDrops.elements; |
1217 |
| - activeDrops.rects = []; |
| 1221 | + for (var i = 0; i < activeDrops.dropzones.length; i++) { |
| 1222 | + activeDrops.rects[i] = activeDrops.dropzones[i].getRect(activeDrops.elements[i]); |
| 1223 | + } |
| 1224 | + } |
1218 | 1225 |
|
1219 |
| - for (var i = 0; i < activeDrops.dropzones.length; i++) { |
1220 |
| - activeDrops.rects[i] = activeDrops.dropzones[i].getRect(activeDrops.elements[i]); |
1221 |
| - } |
| 1226 | + function getDrop (event, dragElement) { |
| 1227 | + var validDrops = []; |
| 1228 | + |
| 1229 | + if (dynamicDrop) { |
| 1230 | + setActiveDrops(dragElement); |
1222 | 1231 | }
|
1223 | 1232 |
|
1224 | 1233 | // collect all dropzones and their elements which qualify for a drop
|
|
2281 | 2290 | setRestriction(event);
|
2282 | 2291 | }
|
2283 | 2292 |
|
2284 |
| - actions[prepared].moveListener(event); |
| 2293 | + if (starting) { |
| 2294 | + actions[prepared].start(event); |
| 2295 | + } |
| 2296 | + |
| 2297 | + actions[prepared].move(event); |
2285 | 2298 | }
|
2286 | 2299 | }
|
2287 | 2300 | // if no snap, always move
|
|
2290 | 2303 | setRestriction(event);
|
2291 | 2304 | }
|
2292 | 2305 |
|
2293 |
| - actions[prepared].moveListener(event); |
| 2306 | + if (starting) { |
| 2307 | + actions[prepared].start(event); |
| 2308 | + } |
| 2309 | + |
| 2310 | + actions[prepared].move(event); |
2294 | 2311 | }
|
2295 | 2312 | }
|
2296 | 2313 | }
|
|
2391 | 2408 | return;
|
2392 | 2409 | }
|
2393 | 2410 |
|
| 2411 | + function dragStart (event) { |
| 2412 | + var dragEvent = new InteractEvent(downEvent, 'drag', 'start'); |
2394 | 2413 |
|
2395 |
| - function dragMove (event) { |
2396 |
| - checkAndPreventDefault(event, target); |
2397 |
| - |
2398 |
| - var starting = !dragging, |
2399 |
| - dragEvent; |
| 2414 | + dragging = true; |
2400 | 2415 |
|
2401 |
| - if (starting) { |
2402 |
| - dragEvent = new InteractEvent(downEvent, 'drag', 'start'); |
2403 |
| - dragging = true; |
| 2416 | + target.fire(dragEvent); |
2404 | 2417 |
|
2405 |
| - target.fire(dragEvent); |
| 2418 | + // reset active dropzones |
| 2419 | + activeDrops.dropzones = []; |
| 2420 | + activeDrops.elements = []; |
| 2421 | + activeDrops.rects = []; |
2406 | 2422 |
|
2407 |
| - // reset active dropzones |
2408 |
| - activeDrops.dropzones = []; |
2409 |
| - activeDrops.elements = []; |
2410 |
| - activeDrops.rects = []; |
| 2423 | + prevEvent = dragEvent; |
2411 | 2424 |
|
2412 |
| - prevEvent = dragEvent; |
| 2425 | + if (!dynamicDrop) { |
| 2426 | + setActiveDrops(target._element); |
| 2427 | + } |
2413 | 2428 |
|
2414 |
| - // set snapping for the next move event |
2415 |
| - if (target.options.snapEnabled && !target.options.snap.endOnly) { |
2416 |
| - setSnapping(event); |
2417 |
| - } |
| 2429 | + // set snapping for the next move event |
| 2430 | + if (target.options.snapEnabled && !target.options.snap.endOnly) { |
| 2431 | + setSnapping(event); |
2418 | 2432 | }
|
| 2433 | + } |
2419 | 2434 |
|
2420 |
| - dragEvent = new InteractEvent(event, 'drag', 'move'); |
| 2435 | + function dragMove (event) { |
| 2436 | + checkAndPreventDefault(event, target); |
2421 | 2437 |
|
2422 |
| - var draggableElement = target._element, |
2423 |
| - drop = getDrop(dragEvent, draggableElement, starting); |
| 2438 | + var dragEvent = new InteractEvent(event, 'drag', 'move'), |
| 2439 | + draggableElement = target._element, |
| 2440 | + drop = getDrop(dragEvent, draggableElement); |
2424 | 2441 |
|
2425 | 2442 | dropTarget = drop.dropzone;
|
2426 | 2443 | dropElement = drop.element;
|
|
2429 | 2446 | // restored after dropChecks
|
2430 | 2447 | target._element = draggableElement;
|
2431 | 2448 |
|
2432 |
| - var dropEvents = getDropEvents(event, dragEvent, starting); |
| 2449 | + var dropEvents = getDropEvents(event, dragEvent); |
2433 | 2450 |
|
2434 | 2451 | target.fire(dragEvent);
|
2435 | 2452 |
|
|
2445 | 2462 | prevEvent = dragEvent;
|
2446 | 2463 | }
|
2447 | 2464 |
|
2448 |
| - function resizeMove (event) { |
2449 |
| - checkAndPreventDefault(event, target); |
2450 |
| - |
2451 |
| - var resizeEvent; |
| 2465 | + function resizeStart (event) { |
| 2466 | + var resizeEvent = new InteractEvent(downEvent, 'resize', 'start'); |
2452 | 2467 |
|
2453 |
| - if (!resizing) { |
2454 |
| - resizeEvent = new InteractEvent(downEvent, 'resize', 'start'); |
2455 |
| - target.fire(resizeEvent); |
| 2468 | + target.fire(resizeEvent); |
2456 | 2469 |
|
2457 |
| - target.fire(resizeEvent); |
2458 |
| - resizing = true; |
| 2470 | + target.fire(resizeEvent); |
| 2471 | + resizing = true; |
2459 | 2472 |
|
2460 |
| - prevEvent = resizeEvent; |
| 2473 | + prevEvent = resizeEvent; |
2461 | 2474 |
|
2462 |
| - // set snapping for the next move event |
2463 |
| - if (target.options.snapEnabled && !target.options.snap.endOnly) { |
2464 |
| - setSnapping(event); |
2465 |
| - } |
| 2475 | + // set snapping for the next move event |
| 2476 | + if (target.options.snapEnabled && !target.options.snap.endOnly) { |
| 2477 | + setSnapping(event); |
2466 | 2478 | }
|
| 2479 | + } |
| 2480 | + |
| 2481 | + function resizeMove (event) { |
| 2482 | + checkAndPreventDefault(event, target); |
| 2483 | + |
| 2484 | + var resizeEvent; |
2467 | 2485 |
|
2468 | 2486 | resizeEvent = new InteractEvent(event, 'resize', 'move');
|
2469 | 2487 | target.fire(resizeEvent);
|
2470 | 2488 |
|
2471 | 2489 | prevEvent = resizeEvent;
|
2472 | 2490 | }
|
2473 | 2491 |
|
2474 |
| - function gestureMove (event) { |
2475 |
| - if ((!event.touches || event.touches.length < 2) && !PointerEvent) { |
2476 |
| - return; |
2477 |
| - } |
2478 |
| - |
2479 |
| - checkAndPreventDefault(event, target); |
| 2492 | + function gestureStart (event) { |
| 2493 | + var gestureEvent = new InteractEvent(downEvent, 'gesture', 'start'); |
2480 | 2494 |
|
2481 |
| - var gestureEvent; |
| 2495 | + gestureEvent.ds = 0; |
2482 | 2496 |
|
2483 |
| - if (!gesturing) { |
2484 |
| - gestureEvent = new InteractEvent(downEvent, 'gesture', 'start'); |
2485 |
| - gestureEvent.ds = 0; |
| 2497 | + gesture.startDistance = gesture.prevDistance = gestureEvent.distance; |
| 2498 | + gesture.startAngle = gesture.prevAngle = gestureEvent.angle; |
| 2499 | + gesture.scale = 1; |
2486 | 2500 |
|
2487 |
| - gesture.startDistance = gesture.prevDistance = gestureEvent.distance; |
2488 |
| - gesture.startAngle = gesture.prevAngle = gestureEvent.angle; |
2489 |
| - gesture.scale = 1; |
| 2501 | + gesturing = true; |
2490 | 2502 |
|
2491 |
| - gesturing = true; |
| 2503 | + target.fire(gestureEvent); |
2492 | 2504 |
|
2493 |
| - target.fire(gestureEvent); |
| 2505 | + prevEvent = gestureEvent; |
2494 | 2506 |
|
2495 |
| - prevEvent = gestureEvent; |
| 2507 | + // set snapping for the next move event |
| 2508 | + if (target.options.snapEnabled && !target.options.snap.endOnly) { |
| 2509 | + setSnapping(event); |
| 2510 | + } |
| 2511 | + } |
2496 | 2512 |
|
2497 |
| - // set snapping for the next move event |
2498 |
| - if (target.options.snapEnabled && !target.options.snap.endOnly) { |
2499 |
| - setSnapping(event); |
2500 |
| - } |
| 2513 | + function gestureMove (event) { |
| 2514 | + if ((!event.touches || event.touches.length < 2) && !PointerEvent) { |
| 2515 | + return; |
2501 | 2516 | }
|
2502 | 2517 |
|
| 2518 | + checkAndPreventDefault(event, target); |
| 2519 | + |
| 2520 | + var gestureEvent; |
| 2521 | + |
2503 | 2522 | gestureEvent = new InteractEvent(event, 'gesture', 'move');
|
2504 | 2523 | gestureEvent.ds = gestureEvent.scale - gesture.scale;
|
2505 | 2524 |
|
|
0 commit comments