mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-13 10:59:06 +02:00
cocoa: Implements key up/pressed/down for TEdit, but only keyDown is not ideal due to cocoa limitations
git-svn-id: trunk@49817 -
This commit is contained in:
parent
ff1747c1eb
commit
0d1f9bd856
@ -50,7 +50,7 @@ type
|
||||
function MouseUpDownEvent(Event: NSEvent): Boolean;
|
||||
procedure MouseClick;
|
||||
function MouseMove(Event: NSEvent): Boolean;
|
||||
function KeyEvent(Event: NSEvent): Boolean;
|
||||
function KeyEvent(Event: NSEvent; AForceAsKeyDown: Boolean = False): Boolean;
|
||||
function scrollWheel(Event: NSEvent): Boolean;
|
||||
// size, pos events
|
||||
procedure frameDidChange;
|
||||
@ -247,6 +247,9 @@ type
|
||||
procedure lclClearCallback; override;
|
||||
procedure resetCursorRects; override;
|
||||
function lclIsHandle: Boolean; override;
|
||||
// key
|
||||
//procedure keyDown(event: NSEvent); override; -> keyDown doesn't work in NSTextField
|
||||
procedure keyUp(event: NSEvent); override;
|
||||
end;
|
||||
|
||||
{ TCocoaSecureTextField }
|
||||
@ -262,6 +265,9 @@ type
|
||||
function resignFirstResponder: Boolean; override;
|
||||
procedure resetCursorRects; override;
|
||||
function lclIsHandle: Boolean; override;
|
||||
// key
|
||||
//procedure keyDown(event: NSEvent); override; -> keyDown doesn't work in NSTextField
|
||||
procedure keyUp(event: NSEvent); override;
|
||||
end;
|
||||
|
||||
|
||||
@ -1862,6 +1868,18 @@ begin
|
||||
inherited resetCursorRects;
|
||||
end;
|
||||
|
||||
procedure TCocoaTextField.keyUp(event: NSEvent);
|
||||
begin
|
||||
if Assigned(callback) then
|
||||
begin
|
||||
// NSTextField doesn't provide keyDown, so emulate it here
|
||||
callback.KeyEvent(event, True);
|
||||
// keyUp now
|
||||
callback.KeyEvent(event);
|
||||
end;
|
||||
inherited keyUp(event);
|
||||
end;
|
||||
|
||||
{ TCocoaTextView }
|
||||
|
||||
function TCocoaTextView.lclIsHandle: Boolean;
|
||||
@ -1990,6 +2008,18 @@ begin
|
||||
inherited resetCursorRects;
|
||||
end;
|
||||
|
||||
procedure TCocoaSecureTextField.keyUp(event: NSEvent);
|
||||
begin
|
||||
if Assigned(callback) then
|
||||
begin
|
||||
// NSTextField doesn't provide keyDown, so emulate it here
|
||||
callback.KeyEvent(event, True);
|
||||
// keyUp now
|
||||
callback.KeyEvent(event);
|
||||
end;
|
||||
inherited keyUp(event);
|
||||
end;
|
||||
|
||||
{ TCocoaCustomControl }
|
||||
|
||||
function TCocoaCustomControl.lclIsHandle: Boolean;
|
||||
|
@ -51,7 +51,7 @@ type
|
||||
function GetTarget: TObject;
|
||||
function GetCallbackObject: TObject;
|
||||
function MouseUpDownEvent(Event: NSEvent): Boolean; virtual;
|
||||
function KeyEvent(Event: NSEvent): Boolean; virtual;
|
||||
function KeyEvent(Event: NSEvent; AForceAsKeyDown: Boolean = False): Boolean; virtual;
|
||||
procedure MouseClick; virtual;
|
||||
function MouseMove(Event: NSEvent): Boolean; virtual;
|
||||
function scrollWheel(Event: NSEvent): Boolean; virtual;
|
||||
@ -280,7 +280,7 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function TLCLCommonCallback.KeyEvent(Event: NSEvent): Boolean;
|
||||
function TLCLCommonCallback.KeyEvent(Event: NSEvent; AForceAsKeyDown: Boolean): Boolean;
|
||||
var
|
||||
UTF8VKCharacter: TUTF8Char; // char without modifiers, used for VK_ key value
|
||||
UTF8Character: TUTF8Char; // char to send via IntfUtf8KeyPress
|
||||
@ -290,7 +290,7 @@ var
|
||||
VKKeyCode: word; // VK_ code
|
||||
IsSysKey: Boolean; // Is alt (option) key down?
|
||||
KeyData: PtrInt; // Modifiers (ctrl, alt, mouse buttons...)
|
||||
|
||||
eventType: NSEventType;
|
||||
|
||||
(*
|
||||
Mac keycodes handling is not so straight. For an explanation, see
|
||||
@ -631,7 +631,11 @@ var
|
||||
end;
|
||||
|
||||
begin
|
||||
case Event.type_ of
|
||||
eventType := Event.type_;
|
||||
if AForceAsKeyDown then
|
||||
eventType := NSKeyDown;
|
||||
|
||||
case eventType of
|
||||
NSKeyDown:
|
||||
begin
|
||||
if not TranslateMacKeyCode then
|
||||
|
Loading…
Reference in New Issue
Block a user