@@ -85,7 +85,6 @@ MM.App = {
85
85
86
86
case "mousedown" :
87
87
e . preventDefault ( ) ;
88
- this . _port . style . cursor = "move" ;
89
88
this . _port . addEventListener ( "mousemove" , this ) ;
90
89
this . _port . addEventListener ( "mouseup" , this ) ;
91
90
this . _drag . mouse [ 0 ] = e . clientX ;
@@ -94,14 +93,8 @@ MM.App = {
94
93
var item = this . map . getItemFor ( e . target ) ;
95
94
if ( item && ! item . isRoot ( ) ) {
96
95
this . _drag . item = item ;
97
- var content = item . getDOM ( ) . content ;
98
- this . _drag . ghost = content . cloneNode ( true ) ;
99
- this . _drag . ghost . classList . add ( "ghost" ) ;
100
- this . _drag . pos [ 0 ] = content . offsetLeft ;
101
- this . _drag . pos [ 1 ] = content . offsetTop ;
102
- this . _drag . ghost . style . left = this . _drag . pos [ 0 ] + "px" ;
103
- this . _drag . ghost . style . top = this . _drag . pos [ 1 ] + "px" ;
104
- content . parentNode . appendChild ( this . _drag . ghost ) ;
96
+ } else {
97
+ this . _port . style . cursor = "move" ;
105
98
}
106
99
break ;
107
100
@@ -111,10 +104,22 @@ MM.App = {
111
104
this . _drag . mouse [ 0 ] = e . clientX ;
112
105
this . _drag . mouse [ 1 ] = e . clientY ;
113
106
if ( this . _drag . item ) {
114
- this . _drag . pos [ 0 ] += dx ;
115
- this . _drag . pos [ 1 ] += dy ;
116
- this . _drag . ghost . style . left = this . _drag . pos [ 0 ] + "px" ;
117
- this . _drag . ghost . style . top = this . _drag . pos [ 1 ] + "px" ;
107
+ if ( this . _drag . ghost ) {
108
+ this . _drag . pos [ 0 ] += dx ;
109
+ this . _drag . pos [ 1 ] += dy ;
110
+ this . _drag . ghost . style . left = this . _drag . pos [ 0 ] + "px" ;
111
+ this . _drag . ghost . style . top = this . _drag . pos [ 1 ] + "px" ;
112
+ } else {
113
+ var content = this . _drag . item . getDOM ( ) . content ;
114
+ this . _drag . ghost = content . cloneNode ( true ) ;
115
+ this . _drag . ghost . classList . add ( "ghost" ) ;
116
+ this . _drag . pos [ 0 ] = content . offsetLeft + dx ;
117
+ this . _drag . pos [ 1 ] = content . offsetTop + dy ;
118
+ this . _drag . ghost . style . left = this . _drag . pos [ 0 ] + "px" ;
119
+ this . _drag . ghost . style . top = this . _drag . pos [ 1 ] + "px" ;
120
+ content . parentNode . appendChild ( this . _drag . ghost ) ;
121
+ this . _port . style . cursor = "move" ;
122
+ }
118
123
} else {
119
124
this . map . moveBy ( dx , dy ) ;
120
125
}
@@ -125,16 +130,16 @@ MM.App = {
125
130
this . _port . removeEventListener ( "mousemove" , this ) ;
126
131
this . _port . removeEventListener ( "mouseup" , this ) ;
127
132
128
- if ( this . _drag . item ) {
133
+ if ( this . _drag . ghost ) {
129
134
var rect = this . _drag . ghost . getBoundingClientRect ( ) ;
130
135
this . _drag . ghost . parentNode . removeChild ( this . _drag . ghost ) ;
131
136
132
137
var nearest = this . map . getClosestItem ( rect . left + rect . width / 2 , rect . top + rect . height / 2 ) ;
133
138
this . _finishDragDrop ( this . _drag . item , nearest ) ;
134
-
135
- this . _drag . item = null ;
136
- this . _drag . ghost = null ;
137
139
}
140
+
141
+ this . _drag . item = null ;
142
+ this . _drag . ghost = null ;
138
143
break ;
139
144
} /* switch */
140
145
} ,
@@ -177,7 +182,7 @@ MM.App = {
177
182
tmp = tmp . getParent ( ) ;
178
183
}
179
184
180
- var w1 = item . getDOM ( ) . content . offsetWidth ;
185
+ var w1 = item . getDOM ( ) . content . offsetWidth ;
181
186
var w2 = target . getDOM ( ) . content . offsetWidth ;
182
187
var w = Math . max ( w1 , w2 ) ;
183
188
var h1 = item . getDOM ( ) . content . offsetHeight ;
@@ -188,15 +193,12 @@ MM.App = {
188
193
} else if ( Math . abs ( nearest . dx ) < w && Math . abs ( nearest . dy ) < h ) { /* append here */
189
194
var action = new MM . Action . MoveItem ( item , target ) ;
190
195
} else {
191
- // debugger;
192
196
var dir = target . getParent ( ) . getLayout ( ) . getChildDirection ( target ) ;
193
197
var diff = - 1 * ( dir == "top" || dir == "bottom" ? nearest . dx : nearest . dy ) ;
194
198
195
199
var index = target . getParent ( ) . getChildren ( ) . indexOf ( target ) ;
196
200
var targetIndex = index + ( diff > 0 ? 1 : 0 ) ;
197
- var action = new MM . Action . MoveItem ( item , target . getParent ( ) , targetIndex ) ;
198
- /* FIXME side + side in action */
199
-
201
+ var action = new MM . Action . MoveItem ( item , target . getParent ( ) , targetIndex , target . getSide ( ) ) ;
200
202
}
201
203
this . action ( action ) ;
202
204
0 commit comments