Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #6919: dragdrop.js.diff.1

File dragdrop.js.diff.1, 2.2 kB (added by Riki_tiki_tavi, 2 years ago)

last dragdrop.js diff

Line 
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);