From bf6d81c33d8698c8e22b44dd2a8b2e45bbffa29a Mon Sep 17 00:00:00 2001 From: rich2014 Date: Mon, 22 May 2023 19:00:24 +0800 Subject: [PATCH] Lcl/Cocoa/TabControl: Tabs dragdrop supported --- lcl/interfaces/cocoa/cocoatabcontrols.pas | 5 +++++ lcl/interfaces/cocoa/cocoawscomctrls.pas | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/lcl/interfaces/cocoa/cocoatabcontrols.pas b/lcl/interfaces/cocoa/cocoatabcontrols.pas index e42184bbe5..aaa1ec8826 100644 --- a/lcl/interfaces/cocoa/cocoatabcontrols.pas +++ b/lcl/interfaces/cocoa/cocoatabcontrols.pas @@ -33,6 +33,7 @@ uses type ITabControlCallback = interface(ICommonCallback) + function shouldSelectTabViewItem(aTabIndex: Integer): Boolean; procedure willSelectTabViewItem(aTabIndex: Integer); procedure didSelectTabViewItem(aTabIndex: Integer); end; @@ -529,6 +530,10 @@ function TCocoaTabControl.tabView_shouldSelectTabViewItem(tabView: NSTabView; tabViewItem: NSTabViewItem): Boolean; begin Result := True; + if Assigned(callback) then + begin + Result:= callback.shouldSelectTabViewItem( IndexOfTab( self, tabViewItem) ); + end; end; procedure TCocoaTabControl.tabView_willSelectTabViewItem(tabView: NSTabView; diff --git a/lcl/interfaces/cocoa/cocoawscomctrls.pas b/lcl/interfaces/cocoa/cocoawscomctrls.pas index 9379a98b6c..762ed098e0 100644 --- a/lcl/interfaces/cocoa/cocoawscomctrls.pas +++ b/lcl/interfaces/cocoa/cocoawscomctrls.pas @@ -52,6 +52,7 @@ type { TLCLTabControlCallback } TLCLTabControlCallback = class(TLCLCommonCallback, ITabControlCallback) + function shouldSelectTabViewItem(aTabIndex: Integer): Boolean; procedure willSelectTabViewItem(aTabIndex: Integer); procedure didSelectTabViewItem(aTabIndex: Integer); end; @@ -439,6 +440,11 @@ end; { TLCLTabControlCallback } +function TLCLTabControlCallback.shouldSelectTabViewItem(aTabIndex: Integer): Boolean; +begin + Result:= NOT TTabControl(Target).Dragging; +end; + procedure TLCLTabControlCallback.willSelectTabViewItem(aTabIndex: Integer); var Msg: TLMNotify;