Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Commit 346116e

Browse files
Fix for #205
1 parent 5e68417 commit 346116e

File tree

2 files changed

+93
-6
lines changed

2 files changed

+93
-6
lines changed

src/ui-layout.js

+12-6
Original file line numberDiff line numberDiff line change
@@ -171,14 +171,20 @@ angular.module('ui.layout', [])
171171
return event;
172172
};
173173

174+
ctrl.getMousePosition = function(mouseEvent){
175+
return ctrl.sizeProperties.mouseProperty in mouseEvent ? mouseEvent[ctrl.sizeProperties.mouseProperty]
176+
: mouseEvent.originalEvent && ctrl.sizeProperties.mouseProperty in mouseEvent.originalEvent ? mouseEvent.originalEvent[ctrl.sizeProperties.mouseProperty]
177+
: mouseEvent.targetTouches ? mouseEvent.targetTouches[0][ctrl.sizeProperties.mouseProperty]
178+
: mouseEvent.originalEvent && mouseEvent.originalEvent.targetTouches ? mouseEvent.originalEvent.targetTouches[0][ctrl.sizeProperties.mouseProperty]
179+
: null;
180+
};
181+
174182
ctrl.mouseMoveHandler = function(mouseEvent) {
175-
var mousePos = mouseEvent[ctrl.sizeProperties.mouseProperty] ||
176-
(mouseEvent.originalEvent && mouseEvent.originalEvent[ctrl.sizeProperties.mouseProperty]) ||
177-
// jQuery does touches weird, see #82
178-
($window.jQuery ?
179-
(mouseEvent.originalEvent ? mouseEvent.originalEvent.targetTouches[0][ctrl.sizeProperties.mouseProperty] : 0) :
180-
(mouseEvent.targetTouches ? mouseEvent.targetTouches[0][ctrl.sizeProperties.mouseProperty] : 0));
181183

184+
var mousePos = ctrl.getMousePosition(mouseEvent);
185+
186+
if(mousePos === null) return;
187+
182188
lastPos = mousePos - offset($element)[ctrl.sizeProperties.offsetPos];
183189

184190
//Cancel previous rAF call

test/uiLayoutCtrl.spec.js

+81
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,86 @@ describe('Controller: uiLayoutCtrl', function () {
3636
expect(uic.isLayoutElement(tagContainer)).toEqual(true);
3737
expect(uic.isLayoutElement(notUiEl)).toEqual(false);
3838
});
39+
40+
describe('getMousePosition', function(){
41+
42+
var controller;
43+
44+
beforeEach(function(){
45+
controller = $controller('uiLayoutCtrl', {
46+
$scope: scope,
47+
$attrs: {},
48+
$element: angular.element('<div></div>')});
49+
});
50+
51+
it('should handle standard mouse event', function(){
52+
var mockMouseEvent = {};
53+
mockMouseEvent[controller.sizeProperties.mouseProperty] = 0;
54+
55+
var result = controller.getMousePosition(mockMouseEvent);
56+
57+
expect(result).toEqual(0);
58+
});
59+
60+
it('should handle jQuery mouse event', function(){
61+
62+
var mockMouseEvent = {
63+
originalEvent: {}
64+
};
65+
mockMouseEvent.originalEvent[controller.sizeProperties.mouseProperty] = 0;
66+
67+
var result = controller.getMousePosition(mockMouseEvent);
68+
69+
expect(result).toEqual(0);
70+
});
71+
72+
it('should handle standard touch event', function(){
73+
74+
var mockMouseEvent = {
75+
targetTouches: []
76+
};
77+
mockMouseEvent.targetTouches[0] = {};
78+
mockMouseEvent.targetTouches[0][controller.sizeProperties.mouseProperty] = 0;
79+
80+
var result = controller.getMousePosition(mockMouseEvent);
81+
82+
expect(result).toEqual(0);
83+
});
84+
85+
it('should handle unrecognised standard event', function(){
86+
var mockMouseEvent = {};
87+
88+
var result = controller.getMousePosition(mockMouseEvent);
89+
90+
expect(result).toEqual(null);
91+
});
92+
93+
it('should handle jQuery touch event', function(){
94+
95+
var mockMouseEvent = {
96+
originalEvent: {
97+
targetTouches: []
98+
}
99+
};
100+
101+
mockMouseEvent.originalEvent.targetTouches[0] = {};
102+
mockMouseEvent.originalEvent.targetTouches[0][controller.sizeProperties.mouseProperty] = 0;
103+
104+
var result = controller.getMousePosition(mockMouseEvent);
105+
106+
expect(result).toEqual(0);
107+
});
108+
109+
it('should handle unrecognised jQuery event', function(){
110+
111+
var mockMouseEvent = {
112+
originalEvent: {}
113+
};
114+
115+
var result = controller.getMousePosition(mockMouseEvent);
116+
117+
expect(result).toEqual(null);
118+
});
119+
});
39120
});
40121
});

0 commit comments

Comments
 (0)