| 1 |
Index: dragdrop.js |
|---|
| 2 |
=================================================================== |
|---|
| 3 |
--- dragdrop.js (revision 5831) |
|---|
| 4 |
+++ dragdrop.js (working copy) |
|---|
| 5 |
@@ -172,6 +172,9 @@ |
|---|
| 6 |
this._lastPointer = pointer; |
|---|
| 7 |
|
|---|
| 8 |
this.activeDraggable.updateDrag(event, pointer); |
|---|
| 9 |
+ Event.shiftPressed=event.shiftKey; |
|---|
| 10 |
+ Event.altPressed =event.altKey; |
|---|
| 11 |
+ Event.ctrlPressed =event.ctrlKey; |
|---|
| 12 |
}, |
|---|
| 13 |
|
|---|
| 14 |
endDrag: function(event) { |
|---|
| 15 |
@@ -719,9 +722,19 @@ |
|---|
| 16 |
|
|---|
| 17 |
onHover: function(element, dropon, overlap) { |
|---|
| 18 |
if(Element.isParent(dropon, element)) return; |
|---|
| 19 |
- |
|---|
| 20 |
- if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) { |
|---|
| 21 |
- return; |
|---|
| 22 |
+ if(Sortable.options(dropon).tree && Event.ctrlPressed && overlap > .05 && overlap < .8) { |
|---|
| 23 |
+ var oldParentNode = element.parentNode; |
|---|
| 24 |
+ var droponOptions = Sortable.options(dropon); |
|---|
| 25 |
+ var children = Sortable.findElements(dropon, {tag: droponOptions.treeTag, only: droponOptions.only}); |
|---|
| 26 |
+ if(dropon.tagName.toUpperCase() == Sortable.options(dropon).tag.toUpperCase() && children.length==1){ |
|---|
| 27 |
+ children[0].insertBefore(element, null); |
|---|
| 28 |
+ Sortable.options(oldParentNode).onChange(element); |
|---|
| 29 |
+ droponOptions.onChange(element); |
|---|
| 30 |
+ } |
|---|
| 31 |
+ } else if(overlap > .33 && overlap < .66) { |
|---|
| 32 |
+ return; |
|---|
| 33 |
+ } else if(Event.shiftPressed && element.parentNode != dropon.parentNode) { |
|---|
| 34 |
+ return; |
|---|
| 35 |
} else if(overlap>0.5) { |
|---|
| 36 |
Sortable.mark(dropon, 'before'); |
|---|
| 37 |
if(dropon.previousSibling != element) { |
|---|
| 38 |
@@ -749,14 +762,13 @@ |
|---|
| 39 |
onEmptyHover: function(element, dropon, overlap) { |
|---|
| 40 |
var oldParentNode = element.parentNode; |
|---|
| 41 |
var droponOptions = Sortable.options(dropon); |
|---|
| 42 |
- |
|---|
| 43 |
if(!Element.isParent(dropon, element)) { |
|---|
| 44 |
var index; |
|---|
| 45 |
- |
|---|
| 46 |
+ |
|---|
| 47 |
var children = Sortable.findElements(dropon, {tag: droponOptions.tag, only: droponOptions.only}); |
|---|
| 48 |
var child = null; |
|---|
| 49 |
|
|---|
| 50 |
- if(children) { |
|---|
| 51 |
+ if(children.length) { |
|---|
| 52 |
var offset = Element.offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap); |
|---|
| 53 |
|
|---|
| 54 |
for (index = 0; index < children.length; index += 1) { |
|---|
| 55 |
@@ -771,7 +783,7 @@ |
|---|
| 56 |
} |
|---|
| 57 |
} |
|---|
| 58 |
} |
|---|
| 59 |
- |
|---|
| 60 |
+ |
|---|
| 61 |
dropon.insertBefore(element, child); |
|---|
| 62 |
|
|---|
| 63 |
Sortable.options(oldParentNode).onChange(element); |
|---|