@@ -38,6 +38,7 @@ define(function(require, exports, module) {
38
38
}
39
39
40
40
var downX , downY ;
41
+ var editorRect ;
41
42
var MOUSE_HAS_DOWN = 0 ;
42
43
var MOUSE_HAS_UP = 1 ;
43
44
var flag = MOUSE_HAS_UP ;
@@ -82,44 +83,43 @@ define(function(require, exports, module) {
82
83
downY = e . originEvent . clientY ;
83
84
maxX = minder . getPaper ( ) . container . clientWidth ;
84
85
maxY = minder . getPaper ( ) . container . clientHeight ;
86
+ editorRect = minder . getPaper ( ) . container . getBoundingClientRect ( ) ;
85
87
} ) ;
86
88
87
89
minder . on ( 'mousemove' , function ( e ) {
88
- if ( fsm . state ( ) === 'drag' && flag == MOUSE_HAS_DOWN && minder . getSelectedNode ( )
90
+ if ( flag == MOUSE_HAS_DOWN
91
+ && minder . getSelectedNode ( )
89
92
&& ( Math . abs ( downX - e . originEvent . clientX ) > 10
90
93
|| Math . abs ( downY - e . originEvent . clientY ) > 10 ) ) {
91
- osx = e . originEvent . offsetX ;
92
- osy = e . originEvent . offsetY ;
93
- if ( osx < 10 ) {
94
- move ( 'right' , 10 - osx ) ;
95
- } else if ( osx > maxX - 10 ) {
96
- move ( 'left' , 10 + osx - maxX ) ;
97
- } else {
98
- freeHorizen = true ;
99
- }
100
- if ( osy < 10 ) {
101
- move ( 'bottom' , osy ) ;
102
- } else if ( osy > maxY - 10 ) {
103
- move ( 'top' , 10 + osy - maxY ) ;
94
+ if ( fsm . state ( ) === 'drag' ) {
95
+ osx = e . originEvent . clientX ;
96
+ osy = e . originEvent . clientY - editorRect . top ;
97
+
98
+ if ( osx < 10 ) {
99
+ move ( 'right' , 10 - osx ) ;
100
+ } else if ( osx > maxX - 10 ) {
101
+ move ( 'left' , 10 + osx - maxX ) ;
102
+ } else {
103
+ freeHorizen = true ;
104
+ }
105
+ if ( osy < 10 ) {
106
+ move ( 'bottom' , osy ) ;
107
+ } else if ( osy > maxY - 10 ) {
108
+ move ( 'top' , 10 + osy - maxY ) ;
109
+ } else {
110
+ freeVirtical = true ;
111
+ }
112
+ if ( freeHorizen && freeVirtical ) {
113
+ freeHorizen = freeVirtical = false ;
114
+ move ( false ) ;
115
+ }
104
116
} else {
105
- freeVirtical = true ;
106
- }
107
- if ( freeHorizen && freeVirtical ) {
108
- freeHorizen = freeVirtical = false ;
109
- move ( false ) ;
110
- }
111
- }
112
- if ( fsm . state ( ) != 'drag'
113
- && flag == MOUSE_HAS_DOWN
114
- && minder . getSelectedNode ( )
115
- && ( Math . abs ( downX - e . originEvent . clientX ) > 10
116
- || Math . abs ( downY - e . originEvent . clientY ) > 10 ) ) {
117
+ if ( fsm . state ( ) == 'hotbox' ) {
118
+ hotbox . active ( Hotbox . STATE_IDLE ) ;
119
+ }
117
120
118
- if ( fsm . state ( ) == 'hotbox' ) {
119
- hotbox . active ( Hotbox . STATE_IDLE ) ;
121
+ return fsm . jump ( 'drag' , 'user-drag' ) ;
120
122
}
121
-
122
- return fsm . jump ( 'drag' , 'user-drag' ) ;
123
123
}
124
124
} ) ;
125
125
0 commit comments