cocoa: redo LM_MOUSEMOVE message

git-svn-id: trunk@34626 -
This commit is contained in:
paul 2012-01-06 16:43:07 +00:00
parent e31d2b8fa1
commit 7b147d1d99
2 changed files with 26 additions and 16 deletions

View File

@ -42,7 +42,7 @@ type
// mouse events
function MouseUpDownEvent(Event: NSEvent): Boolean;
procedure MouseClick;
procedure MouseMove(x,y: Integer);
function MouseMove(Event: NSEvent): Boolean;
function KeyEvent(Event: NSEvent): Boolean;
// size,pos events
procedure frameDidChange;
@ -778,23 +778,15 @@ begin
end;
procedure TCocoaWindow.mouseDragged(event: NSEvent);
var
mp: NSPoint;
begin
mp := event.locationInWindow;
mp.y := NSView(event.window.contentView).bounds.size.height - mp.y;
callback.MouseMove(round(mp.x), round(mp.y));
inherited mouseMoved(event);
if not callback.MouseMove(event) then
inherited mouseDragged(event);
end;
procedure TCocoaWindow.mouseMoved(event: NSEvent);
var
mp: NSPoint;
begin
mp := event.locationInWindow;
mp.y := NSView(event.window.contentView).bounds.size.height - mp.y;
callback.MouseMove(round(mp.x), round(mp.y));
inherited mouseMoved(event);
if not callback.MouseMove(event) then
inherited mouseMoved(event);
end;
procedure TCocoaWindow.sendEvent(event: NSEvent);

View File

@ -44,7 +44,7 @@ type
function MouseUpDownEvent(Event: NSEvent): Boolean; virtual;
function KeyEvent(Event: NSEvent): Boolean; virtual;
procedure MouseClick; virtual;
procedure MouseMove(x,y: Integer); virtual;
function MouseMove(Event: NSEvent): Boolean; virtual;
procedure frameDidChange; virtual;
procedure boundsDidChange; virtual;
procedure BecomeFirstResponder; virtual;
@ -694,9 +694,27 @@ begin
LCLSendClickedMsg(Target);
end;
procedure TLCLCommonCallback.MouseMove(x, y: Integer);
function TLCLCommonCallback.MouseMove(Event: NSEvent): Boolean;
var
Msg: TLMMouseMove;
MousePos: NSPoint;
begin
LCLSendMouseMoveMsg(Target, x,y, []);
Result := False; // allow cocoa to handle message
if Assigned(Target) and (not (csDesigning in Target.ComponentState) and not Owner.lclIsEnabled) then
Exit;
MousePos := Event.locationInWindow;
OffsetMousePos(MousePos);
FillChar(Msg, SizeOf(Msg), #0);
Msg.Msg := LM_MOUSEMOVE;
Msg.Keys := CocoaModifiersToKeyState(Event.modifierFlags) or CocoaPressedMouseButtonsToKeyState(Event.pressedMouseButtons);
Msg.XPos := Round(MousePos.X);
Msg.YPos := Round(MousePos.Y);
NotifyApplicationUserInput(Msg.Msg);
Result := DeliverMessage(Msg) <> 0;
end;
procedure TLCLCommonCallback.frameDidChange;