From 875dbaa78f7085b0c3677ee596b6c51bd2e9179d Mon Sep 17 00:00:00 2001 From: Nathaniel Martin Date: Wed, 6 Apr 2011 23:16:13 -0700 Subject: [PATCH] Fix for issue 1210 --- AppKit/Platform/CPPlatformWindow.j | 1 + AppKit/Platform/DOM/CPPlatformWindow+DOM.j | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/AppKit/Platform/CPPlatformWindow.j b/AppKit/Platform/CPPlatformWindow.j index fb4864128..f7a7e71a8 100644 --- a/AppKit/Platform/CPPlatformWindow.j +++ b/AppKit/Platform/CPPlatformWindow.j @@ -47,6 +47,7 @@ var PrimaryPlatformWindow = NULL; BOOL _mouseIsDown; BOOL _mouseDownIsRightClick; + CGPoint _mouseDragStart; CPWindow _mouseDownWindow; CPTimeInterval _lastMouseUp; CPTimeInterval _lastMouseDown; diff --git a/AppKit/Platform/DOM/CPPlatformWindow+DOM.j b/AppKit/Platform/DOM/CPPlatformWindow+DOM.j index 5a2c4b4ec..f365d7527 100644 --- a/AppKit/Platform/DOM/CPPlatformWindow+DOM.j +++ b/AppKit/Platform/DOM/CPPlatformWindow+DOM.j @@ -204,6 +204,7 @@ var ModifierKeyCodes = [ _windowLevels = []; _windowLayers = [CPDictionary dictionary]; + [self registerDOMWindow]; [self updateFromNativeContentRect]; @@ -1202,7 +1203,7 @@ var ModifierKeyCodes = [ { if (_mouseIsDown) { - event = _CPEventFromNativeMouseEvent(aDOMEvent, _mouseDownIsRightClick ? CPRightMouseUp : CPLeftMouseUp, location, modifierFlags, timestamp, windowNumber, nil, -1, CPDOMEventGetClickCount(_lastMouseUp, timestamp, location), 0); + event = _CPEventFromNativeMouseEvent(aDOMEvent, _mouseDownIsRightClick ? CPRightMouseUp : CPLeftMouseUp, location, modifierFlags, timestamp, windowNumber, nil, -1, CPDOMEventGetClickCount(_lastMouseUp, timestamp, location), 0, nil); _mouseIsDown = NO; _lastMouseUp = event; @@ -1220,6 +1221,7 @@ var ModifierKeyCodes = [ else if (type === "mousedown") { var button = aDOMEvent.button; + _mouseDragStart = location; _mouseDownIsRightClick = button == 2 || (CPBrowserIsOperatingSystem(CPMacOperatingSystem) && button == 0 && modifierFlags & CPControlKeyMask); if (sourceElement.tagName === "INPUT" && sourceElement != _DOMFocusElement) @@ -1252,7 +1254,7 @@ var ModifierKeyCodes = [ StopContextMenuDOMEventPropagation = YES; - event = _CPEventFromNativeMouseEvent(aDOMEvent, _mouseDownIsRightClick ? CPRightMouseDown : CPLeftMouseDown, location, modifierFlags, timestamp, windowNumber, nil, -1, CPDOMEventGetClickCount(_lastMouseDown, timestamp, location), 0); + event = _CPEventFromNativeMouseEvent(aDOMEvent, _mouseDownIsRightClick ? CPRightMouseDown : CPLeftMouseDown, location, modifierFlags, timestamp, windowNumber, nil, -1, CPDOMEventGetClickCount(_lastMouseDown, timestamp, location), 0, nil); _mouseIsDown = YES; _lastMouseDown = event; @@ -1263,7 +1265,8 @@ var ModifierKeyCodes = [ if (_DOMEventMode) return; - event = _CPEventFromNativeMouseEvent(aDOMEvent, _mouseIsDown ? (_mouseDownIsRightClick ? CPRightMouseDragged : CPLeftMouseDragged) : CPMouseMoved, location, modifierFlags, timestamp, windowNumber, nil, -1, 1, 0); + event = _CPEventFromNativeMouseEvent(aDOMEvent, _mouseIsDown ? (_mouseDownIsRightClick ? CPRightMouseDragged : CPLeftMouseDragged) : CPMouseMoved, location, modifierFlags, timestamp, windowNumber, nil, -1, 1, 0, _mouseDragStart); + _mouseDragStart = location; } var isDragging = [[CPDragServer sharedDragServer] isDragging]; @@ -1545,7 +1548,7 @@ var ModifierKeyCodes = [ var CPEventClass = [CPEvent class]; -var _CPEventFromNativeMouseEvent = function(aNativeEvent, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, anEventNumber, aClickCount, aPressure) +var _CPEventFromNativeMouseEvent = function(aNativeEvent, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, anEventNumber, aClickCount, aPressure, aMouseDragStart) { aNativeEvent.isa = CPEventClass; @@ -1559,6 +1562,12 @@ var _CPEventFromNativeMouseEvent = function(aNativeEvent, anEventType, aPoint, m aNativeEvent._eventNumber = anEventNumber; aNativeEvent._clickCount = aClickCount; aNativeEvent._pressure = aPressure; + if((anEventType == CPLeftMouseDragged) || (anEventType == CPRightMouseDragged)) + { + aNativeEvent._deltaX = aPoint.x - aMouseDragStart.x; + aNativeEvent._deltaY = aPoint.y - aMouseDragStart.y; + } + return aNativeEvent; }