mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-10 06:18:25 +02:00
cocoa: send focus messages
git-svn-id: trunk@34456 -
This commit is contained in:
parent
76ed6fbc72
commit
5aa7fcbf48
@ -65,6 +65,7 @@ type
|
|||||||
|
|
||||||
TCocoaWidgetSet = class(TWidgetSet)
|
TCocoaWidgetSet = class(TWidgetSet)
|
||||||
private
|
private
|
||||||
|
FFocusedObject: NSObject;
|
||||||
FTerminating: Boolean;
|
FTerminating: Boolean;
|
||||||
|
|
||||||
pool: NSAutoreleasePool;
|
pool: NSAutoreleasePool;
|
||||||
@ -107,8 +108,7 @@ type
|
|||||||
|
|
||||||
function CreateTimer(Interval: integer; TimerFunc: TWSTimerProc): THandle; override;
|
function CreateTimer(Interval: integer; TimerFunc: TWSTimerProc): THandle; override;
|
||||||
function DestroyTimer(TimerHandle: THandle): boolean; override;
|
function DestroyTimer(TimerHandle: THandle): boolean; override;
|
||||||
function PrepareUserEventInfo(Handle: HWND; Msg: Cardinal; wParam: WParam;
|
function PrepareUserEventInfo(Handle: HWND; Msg: Cardinal; wParam: WParam; lParam: LParam): NSMutableDictionary;
|
||||||
lParam: LParam): NSMutableDictionary;
|
|
||||||
function PrepareUserEvent(Handle: HWND; Info: NSDictionary): NSEvent;
|
function PrepareUserEvent(Handle: HWND; Info: NSDictionary): NSEvent;
|
||||||
|
|
||||||
procedure InitStockItems;
|
procedure InitStockItems;
|
||||||
|
@ -48,14 +48,17 @@ type
|
|||||||
procedure frameDidChange;
|
procedure frameDidChange;
|
||||||
procedure boundsDidChange;
|
procedure boundsDidChange;
|
||||||
// misc events
|
// misc events
|
||||||
function DeliverMessage(Msg: Cardinal; WParam: WParam; LParam: LParam): LResult;
|
|
||||||
procedure Draw(ctx: NSGraphicsContext; const bounds, dirty: NSRect);
|
procedure Draw(ctx: NSGraphicsContext; const bounds, dirty: NSRect);
|
||||||
|
function ResetCursorRects: Boolean;
|
||||||
|
procedure BecomeFirstResponder;
|
||||||
|
procedure ResignFirstResponder;
|
||||||
|
// non event methods
|
||||||
|
function DeliverMessage(Msg: Cardinal; WParam: WParam; LParam: LParam): LResult;
|
||||||
function GetPropStorage: TStringList;
|
function GetPropStorage: TStringList;
|
||||||
function GetContext: TCocoaContext;
|
function GetContext: TCocoaContext;
|
||||||
function GetTarget: TObject;
|
function GetTarget: TObject;
|
||||||
function GetHasCaret: Boolean;
|
function GetHasCaret: Boolean;
|
||||||
procedure SetHasCaret(AValue: Boolean);
|
procedure SetHasCaret(AValue: Boolean);
|
||||||
function ResetCursorRects: Boolean;
|
|
||||||
|
|
||||||
// properties
|
// properties
|
||||||
property HasCaret: Boolean read GetHasCaret write SetHasCaret;
|
property HasCaret: Boolean read GetHasCaret write SetHasCaret;
|
||||||
@ -171,6 +174,8 @@ type
|
|||||||
callback: IButtonCallback;
|
callback: IButtonCallback;
|
||||||
function initWithFrame(frameRect: NSRect): id; override;
|
function initWithFrame(frameRect: NSRect): id; override;
|
||||||
function acceptsFirstResponder: Boolean; override;
|
function acceptsFirstResponder: Boolean; override;
|
||||||
|
function becomeFirstResponder: Boolean; override;
|
||||||
|
function resignFirstResponder: Boolean; override;
|
||||||
function lclGetCallback: ICommonCallback; override;
|
function lclGetCallback: ICommonCallback; override;
|
||||||
procedure mouseDown(event: NSEvent); override;
|
procedure mouseDown(event: NSEvent); override;
|
||||||
procedure mouseDragged(event: NSEvent); override;
|
procedure mouseDragged(event: NSEvent); override;
|
||||||
@ -186,6 +191,8 @@ type
|
|||||||
TCocoaTextField = objcclass(NSTextField)
|
TCocoaTextField = objcclass(NSTextField)
|
||||||
callback: ICommonCallback;
|
callback: ICommonCallback;
|
||||||
function acceptsFirstResponder: Boolean; override;
|
function acceptsFirstResponder: Boolean; override;
|
||||||
|
function becomeFirstResponder: Boolean; override;
|
||||||
|
function resignFirstResponder: Boolean; override;
|
||||||
function lclGetCallback: ICommonCallback; override;
|
function lclGetCallback: ICommonCallback; override;
|
||||||
procedure resetCursorRects; override;
|
procedure resetCursorRects; override;
|
||||||
end;
|
end;
|
||||||
@ -193,8 +200,11 @@ type
|
|||||||
{ TCocoaSecureTextField }
|
{ TCocoaSecureTextField }
|
||||||
|
|
||||||
TCocoaSecureTextField = objcclass(NSSecureTextField)
|
TCocoaSecureTextField = objcclass(NSSecureTextField)
|
||||||
|
public
|
||||||
callback : ICommonCallback;
|
callback : ICommonCallback;
|
||||||
function acceptsFirstResponder: Boolean; override;
|
function acceptsFirstResponder: Boolean; override;
|
||||||
|
function becomeFirstResponder: Boolean; override;
|
||||||
|
function resignFirstResponder: Boolean; override;
|
||||||
procedure resetCursorRects; override;
|
procedure resetCursorRects; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -202,8 +212,11 @@ type
|
|||||||
{ TCocoaTextView }
|
{ TCocoaTextView }
|
||||||
|
|
||||||
TCocoaTextView = objcclass(NSTextView)
|
TCocoaTextView = objcclass(NSTextView)
|
||||||
|
public
|
||||||
callback: ICommonCallback;
|
callback: ICommonCallback;
|
||||||
function acceptsFirstResponder: Boolean; override;
|
function acceptsFirstResponder: Boolean; override;
|
||||||
|
function becomeFirstResponder: Boolean; override;
|
||||||
|
function resignFirstResponder: Boolean; override;
|
||||||
function lclGetCallback: ICommonCallback; override;
|
function lclGetCallback: ICommonCallback; override;
|
||||||
procedure resetCursorRects; override;
|
procedure resetCursorRects; override;
|
||||||
end;
|
end;
|
||||||
@ -221,6 +234,8 @@ type
|
|||||||
public
|
public
|
||||||
callback: IWindowCallback;
|
callback: IWindowCallback;
|
||||||
function acceptsFirstResponder: Boolean; override;
|
function acceptsFirstResponder: Boolean; override;
|
||||||
|
function becomeFirstResponder: Boolean; override;
|
||||||
|
function resignFirstResponder: Boolean; override;
|
||||||
function lclGetCallback: ICommonCallback; override;
|
function lclGetCallback: ICommonCallback; override;
|
||||||
procedure mouseUp(event: NSEvent); override;
|
procedure mouseUp(event: NSEvent); override;
|
||||||
procedure mouseDown(event: NSEvent); override;
|
procedure mouseDown(event: NSEvent); override;
|
||||||
@ -234,7 +249,11 @@ type
|
|||||||
{ TCocoaCustomControl }
|
{ TCocoaCustomControl }
|
||||||
|
|
||||||
TCocoaCustomControl = objcclass(NSControl)
|
TCocoaCustomControl = objcclass(NSControl)
|
||||||
|
public
|
||||||
callback: ICommonCallback;
|
callback: ICommonCallback;
|
||||||
|
function acceptsFirstResponder: Boolean; override;
|
||||||
|
function becomeFirstResponder: Boolean; override;
|
||||||
|
function resignFirstResponder: Boolean; override;
|
||||||
procedure drawRect(dirtyRect: NSRect); override;
|
procedure drawRect(dirtyRect: NSRect); override;
|
||||||
function lclGetCallback: ICommonCallback; override;
|
function lclGetCallback: ICommonCallback; override;
|
||||||
procedure mouseDown(event: NSEvent); override;
|
procedure mouseDown(event: NSEvent); override;
|
||||||
@ -249,7 +268,11 @@ type
|
|||||||
{ TCocoaScrollView }
|
{ TCocoaScrollView }
|
||||||
|
|
||||||
TCocoaScrollView = objcclass(NSScrollView)
|
TCocoaScrollView = objcclass(NSScrollView)
|
||||||
|
public
|
||||||
callback: ICommonCallback;
|
callback: ICommonCallback;
|
||||||
|
function acceptsFirstResponder: Boolean; override;
|
||||||
|
function becomeFirstResponder: Boolean; override;
|
||||||
|
function resignFirstResponder: Boolean; override;
|
||||||
function lclGetCallback: ICommonCallback; override;
|
function lclGetCallback: ICommonCallback; override;
|
||||||
procedure resetCursorRects; override;
|
procedure resetCursorRects; override;
|
||||||
end;
|
end;
|
||||||
@ -279,13 +302,15 @@ type
|
|||||||
{ TCocoaComboBox }
|
{ TCocoaComboBox }
|
||||||
|
|
||||||
TCocoaComboBox = objcclass(NSComboBox, NSComboBoxDataSourceProtocol, NSComboBoxDelegateProtocol)
|
TCocoaComboBox = objcclass(NSComboBox, NSComboBoxDataSourceProtocol, NSComboBoxDelegateProtocol)
|
||||||
|
public
|
||||||
callback: IComboboxCallBack;
|
callback: IComboboxCallBack;
|
||||||
list: TCocoaComboBoxList;
|
list: TCocoaComboBoxList;
|
||||||
resultNS: NSString; //use to return values to combo
|
resultNS: NSString; //use to return values to combo
|
||||||
function comboBox_objectValueForItemAtIndex_(combo: TCocoaComboBox; row: NSInteger): id;
|
function acceptsFirstResponder: Boolean; override;
|
||||||
message 'comboBox:objectValueForItemAtIndex:';
|
function becomeFirstResponder: Boolean; override;
|
||||||
function numberOfItemsInComboBox(combo: TCocoaComboBox): NSInteger;
|
function resignFirstResponder: Boolean; override;
|
||||||
message 'numberOfItemsInComboBox:';
|
function comboBox_objectValueForItemAtIndex_(combo: TCocoaComboBox; row: NSInteger): id; message 'comboBox:objectValueForItemAtIndex:';
|
||||||
|
function numberOfItemsInComboBox(combo: TCocoaComboBox): NSInteger; message 'numberOfItemsInComboBox:';
|
||||||
procedure dealloc; override;
|
procedure dealloc; override;
|
||||||
function lclGetCallback: ICommonCallback; override;
|
function lclGetCallback: ICommonCallback; override;
|
||||||
procedure resetCursorRects; override;
|
procedure resetCursorRects; override;
|
||||||
@ -298,7 +323,11 @@ type
|
|||||||
{ TCocoaScrollBar }
|
{ TCocoaScrollBar }
|
||||||
|
|
||||||
TCocoaScrollBar = objcclass(NSScroller)
|
TCocoaScrollBar = objcclass(NSScroller)
|
||||||
|
public
|
||||||
callback: ICommonCallback;
|
callback: ICommonCallback;
|
||||||
|
function acceptsFirstResponder: Boolean; override;
|
||||||
|
function becomeFirstResponder: Boolean; override;
|
||||||
|
function resignFirstResponder: Boolean; override;
|
||||||
function lclGetCallback: ICommonCallback; override;
|
function lclGetCallback: ICommonCallback; override;
|
||||||
procedure resetCursorRects; override;
|
procedure resetCursorRects; override;
|
||||||
end;
|
end;
|
||||||
@ -318,9 +347,13 @@ type
|
|||||||
{ TCocoaListView }
|
{ TCocoaListView }
|
||||||
|
|
||||||
TCocoaListView = objcclass(NSTableView, NSTableViewDataSourceProtocol)
|
TCocoaListView = objcclass(NSTableView, NSTableViewDataSourceProtocol)
|
||||||
|
public
|
||||||
callback: ICommonCallback;
|
callback: ICommonCallback;
|
||||||
list: TCocoaStringList;
|
list: TCocoaStringList;
|
||||||
resultNS: NSString; //use to return values to combo
|
resultNS: NSString; //use to return values to combo
|
||||||
|
function acceptsFirstResponder: Boolean; override;
|
||||||
|
function becomeFirstResponder: Boolean; override;
|
||||||
|
function resignFirstResponder: Boolean; override;
|
||||||
function lclGetCallback: ICommonCallback; override;
|
function lclGetCallback: ICommonCallback; override;
|
||||||
function numberOfRowsInTableView(aTableView: NSTableView): NSInteger; message 'numberOfRowsInTableView:';
|
function numberOfRowsInTableView(aTableView: NSTableView): NSInteger; message 'numberOfRowsInTableView:';
|
||||||
function tableView_objectValueForTableColumn_row(tableView: NSTableView;
|
function tableView_objectValueForTableColumn_row(tableView: NSTableView;
|
||||||
@ -333,7 +366,11 @@ type
|
|||||||
{ TCocoaGroupBox }
|
{ TCocoaGroupBox }
|
||||||
|
|
||||||
TCocoaGroupBox = objcclass(NSBox)
|
TCocoaGroupBox = objcclass(NSBox)
|
||||||
|
public
|
||||||
callback: ICommonCallback;
|
callback: ICommonCallback;
|
||||||
|
function acceptsFirstResponder: Boolean; override;
|
||||||
|
function becomeFirstResponder: Boolean; override;
|
||||||
|
function resignFirstResponder: Boolean; override;
|
||||||
function lclGetCallback: ICommonCallback; override;
|
function lclGetCallback: ICommonCallback; override;
|
||||||
procedure resetCursorRects; override;
|
procedure resetCursorRects; override;
|
||||||
end;
|
end;
|
||||||
@ -342,6 +379,23 @@ implementation
|
|||||||
|
|
||||||
{ TCocoaScrollView }
|
{ TCocoaScrollView }
|
||||||
|
|
||||||
|
function TCocoaScrollView.acceptsFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaScrollView.becomeFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited becomeFirstResponder;
|
||||||
|
callback.BecomeFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaScrollView.resignFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited resignFirstResponder;
|
||||||
|
callback.ResignFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
function TCocoaScrollView.lclGetCallback: ICommonCallback;
|
function TCocoaScrollView.lclGetCallback: ICommonCallback;
|
||||||
begin
|
begin
|
||||||
Result := callback;
|
Result := callback;
|
||||||
@ -355,6 +409,23 @@ end;
|
|||||||
|
|
||||||
{ TCocoaScrollBar }
|
{ TCocoaScrollBar }
|
||||||
|
|
||||||
|
function TCocoaScrollBar.acceptsFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaScrollBar.becomeFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited becomeFirstResponder;
|
||||||
|
callback.BecomeFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaScrollBar.resignFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited resignFirstResponder;
|
||||||
|
callback.ResignFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
function TCocoaScrollBar.lclGetCallback: ICommonCallback;
|
function TCocoaScrollBar.lclGetCallback: ICommonCallback;
|
||||||
begin
|
begin
|
||||||
Result := callback;
|
Result := callback;
|
||||||
@ -368,6 +439,23 @@ end;
|
|||||||
|
|
||||||
{ TCocoaGroupBox }
|
{ TCocoaGroupBox }
|
||||||
|
|
||||||
|
function TCocoaGroupBox.acceptsFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaGroupBox.becomeFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited becomeFirstResponder;
|
||||||
|
callback.BecomeFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaGroupBox.resignFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited resignFirstResponder;
|
||||||
|
callback.ResignFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
function TCocoaGroupBox.lclGetCallback: ICommonCallback;
|
function TCocoaGroupBox.lclGetCallback: ICommonCallback;
|
||||||
begin
|
begin
|
||||||
Result := callback;
|
Result := callback;
|
||||||
@ -416,6 +504,18 @@ begin
|
|||||||
Result := True;
|
Result := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TCocoaButton.becomeFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited becomeFirstResponder;
|
||||||
|
callback.BecomeFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaButton.resignFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited resignFirstResponder;
|
||||||
|
callback.ResignFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
function TCocoaButton.lclGetCallback: ICommonCallback;
|
function TCocoaButton.lclGetCallback: ICommonCallback;
|
||||||
begin
|
begin
|
||||||
Result := callback;
|
Result := callback;
|
||||||
@ -472,6 +572,18 @@ begin
|
|||||||
Result := True;
|
Result := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TCocoaTextField.becomeFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited becomeFirstResponder;
|
||||||
|
callback.BecomeFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaTextField.resignFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited resignFirstResponder;
|
||||||
|
callback.ResignFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
function TCocoaTextField.lclGetCallback: ICommonCallback;
|
function TCocoaTextField.lclGetCallback: ICommonCallback;
|
||||||
begin
|
begin
|
||||||
Result := callback;
|
Result := callback;
|
||||||
@ -493,6 +605,18 @@ begin
|
|||||||
Result := True;
|
Result := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TCocoaTextView.becomeFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited becomeFirstResponder;
|
||||||
|
callback.BecomeFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaTextView.resignFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited resignFirstResponder;
|
||||||
|
callback.ResignFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
function TCocoaTextView.lclGetCallback: ICommonCallback;
|
function TCocoaTextView.lclGetCallback: ICommonCallback;
|
||||||
begin
|
begin
|
||||||
Result := callback;
|
Result := callback;
|
||||||
@ -545,6 +669,18 @@ begin
|
|||||||
Result := True;
|
Result := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TCocoaWindow.becomeFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited becomeFirstResponder;
|
||||||
|
callback.BecomeFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaWindow.resignFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited resignFirstResponder;
|
||||||
|
callback.ResignFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
function TCocoaWindow.lclGetCallback: ICommonCallback;
|
function TCocoaWindow.lclGetCallback: ICommonCallback;
|
||||||
begin
|
begin
|
||||||
Result := callback;
|
Result := callback;
|
||||||
@ -637,7 +773,19 @@ end;
|
|||||||
|
|
||||||
function TCocoaSecureTextField.acceptsFirstResponder: Boolean;
|
function TCocoaSecureTextField.acceptsFirstResponder: Boolean;
|
||||||
begin
|
begin
|
||||||
Result:=True;
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaSecureTextField.becomeFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited becomeFirstResponder;
|
||||||
|
callback.BecomeFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaSecureTextField.resignFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited resignFirstResponder;
|
||||||
|
callback.ResignFirstResponder;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCocoaSecureTextField.resetCursorRects;
|
procedure TCocoaSecureTextField.resetCursorRects;
|
||||||
@ -648,6 +796,23 @@ end;
|
|||||||
|
|
||||||
{ TCocoaCustomControl }
|
{ TCocoaCustomControl }
|
||||||
|
|
||||||
|
function TCocoaCustomControl.acceptsFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaCustomControl.becomeFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited becomeFirstResponder;
|
||||||
|
callback.BecomeFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaCustomControl.resignFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited resignFirstResponder;
|
||||||
|
callback.ResignFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCocoaCustomControl.drawRect(dirtyRect:NSRect);
|
procedure TCocoaCustomControl.drawRect(dirtyRect:NSRect);
|
||||||
begin
|
begin
|
||||||
inherited drawRect(dirtyRect);
|
inherited drawRect(dirtyRect);
|
||||||
@ -1038,6 +1203,23 @@ end;
|
|||||||
|
|
||||||
{ TCocoaListView }
|
{ TCocoaListView }
|
||||||
|
|
||||||
|
function TCocoaListView.acceptsFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaListView.becomeFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited becomeFirstResponder;
|
||||||
|
callback.BecomeFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaListView.resignFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited resignFirstResponder;
|
||||||
|
callback.ResignFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
function TCocoaListView.lclGetCallback: ICommonCallback;
|
function TCocoaListView.lclGetCallback: ICommonCallback;
|
||||||
begin
|
begin
|
||||||
Result := callback;
|
Result := callback;
|
||||||
@ -1109,6 +1291,23 @@ end;
|
|||||||
|
|
||||||
{ TCocoaComboBox }
|
{ TCocoaComboBox }
|
||||||
|
|
||||||
|
function TCocoaComboBox.acceptsFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaComboBox.becomeFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited becomeFirstResponder;
|
||||||
|
callback.BecomeFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCocoaComboBox.resignFirstResponder: Boolean;
|
||||||
|
begin
|
||||||
|
Result := inherited resignFirstResponder;
|
||||||
|
callback.ResignFirstResponder;
|
||||||
|
end;
|
||||||
|
|
||||||
function TCocoaComboBox.comboBox_objectValueForItemAtIndex_(combo:TCocoaComboBox;
|
function TCocoaComboBox.comboBox_objectValueForItemAtIndex_(combo:TCocoaComboBox;
|
||||||
row: NSInteger):id;
|
row: NSInteger):id;
|
||||||
begin
|
begin
|
||||||
|
@ -44,6 +44,8 @@ type
|
|||||||
procedure MouseMove(x,y: Integer); virtual;
|
procedure MouseMove(x,y: Integer); virtual;
|
||||||
procedure frameDidChange; virtual;
|
procedure frameDidChange; virtual;
|
||||||
procedure boundsDidChange; virtual;
|
procedure boundsDidChange; virtual;
|
||||||
|
procedure BecomeFirstResponder; virtual;
|
||||||
|
procedure ResignFirstResponder; virtual;
|
||||||
function DeliverMessage(Msg: Cardinal; WParam: WParam; LParam: LParam): LResult; virtual;
|
function DeliverMessage(Msg: Cardinal; WParam: WParam; LParam: LParam): LResult; virtual;
|
||||||
procedure Draw(ControlContext: NSGraphicsContext; const bounds, dirty: NSRect); virtual;
|
procedure Draw(ControlContext: NSGraphicsContext; const bounds, dirty: NSRect); virtual;
|
||||||
function ResetCursorRects: Boolean; virtual;
|
function ResetCursorRects: Boolean; virtual;
|
||||||
@ -88,6 +90,9 @@ procedure SetViewDefaults(AView: NSView);
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
CocoaInt;
|
||||||
|
|
||||||
function AllocCustomControl(const AWinControl: TWinControl): TCocoaCustomControl;
|
function AllocCustomControl(const AWinControl: TWinControl): TCocoaCustomControl;
|
||||||
begin
|
begin
|
||||||
if not Assigned(AWinControl) then
|
if not Assigned(AWinControl) then
|
||||||
@ -251,6 +256,16 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TLCLCommonCallback.BecomeFirstResponder;
|
||||||
|
begin
|
||||||
|
LCLSendSetFocusMsg(Target);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TLCLCommonCallback.ResignFirstResponder;
|
||||||
|
begin
|
||||||
|
LCLSendKillFocusMsg(Target);
|
||||||
|
end;
|
||||||
|
|
||||||
function TLCLCommonCallback.DeliverMessage(Msg: Cardinal; WParam: WParam; LParam: LParam): LResult;
|
function TLCLCommonCallback.DeliverMessage(Msg: Cardinal; WParam: WParam; LParam: LParam): LResult;
|
||||||
var
|
var
|
||||||
Message: TLMessage;
|
Message: TLMessage;
|
||||||
@ -263,10 +278,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TLCLCommonCallback.Draw(ControlContext: NSGraphicsContext;
|
procedure TLCLCommonCallback.Draw(ControlContext: NSGraphicsContext;
|
||||||
const bounds, dirty:NSRect);
|
const bounds, dirty: NSRect);
|
||||||
var
|
var
|
||||||
struct: TPaintStruct;
|
struct: TPaintStruct;
|
||||||
begin
|
begin
|
||||||
|
// todo: think more about draw call while previous draw still active
|
||||||
|
if Assigned(FContext) then
|
||||||
|
Exit;
|
||||||
FContext := TCocoaContext.Create;
|
FContext := TCocoaContext.Create;
|
||||||
try
|
try
|
||||||
FContext.ctx := ControlContext;
|
FContext.ctx := ControlContext;
|
||||||
|
Loading…
Reference in New Issue
Block a user