Cocoa/TabControl: SetPageIndex() improved

This commit is contained in:
rich2014 2023-10-10 22:27:07 +08:00
parent 0fff5f41d0
commit 70423dd372

View File

@ -529,18 +529,20 @@ procedure TCocoaTabControl.extselectTabViewItemAtIndex( index:NSInteger );
var var
itm: NSTabViewItem; itm: NSTabViewItem;
visibleIndex: NSInteger; visibleIndex: NSInteger;
oldKeepAmount: Integer;
begin begin
if (index<0) or (index>=fulltabs.count) then Exit; if (index<0) or (index>=fulltabs.count) then Exit;
currentIndex := index;
itm := NSTabViewItem( fulltabs.objectAtIndex(index) ); itm:= NSTabViewItem( fulltabs.objectAtIndex(index) );
visibleIndex := indexOfTabViewItem( itm ); visibleIndex:= indexOfTabViewItem( itm );
if visibleIndex <> NSNotFound then begin if visibleIndex <> NSNotFound then begin
inherited selectTabViewItemAtIndex( visibleIndex ); inherited selectTabViewItemAtIndex( visibleIndex );
end else begin end else begin
oldKeepAmount:= leftKeepAmount;
attachAllTabs;
inherited selectTabViewItemAtIndex( index );
leftKeepAmount:= oldKeepAmount;
UpdateTabAndArrowVisibility( self ); UpdateTabAndArrowVisibility( self );
visibleIndex:= indexOfTabViewItem( itm );
inherited selectTabViewItemAtIndex( visibleIndex );
end; end;
end; end;
@ -632,6 +634,7 @@ begin
//it's called together with "willSelect" //it's called together with "willSelect"
currentIndex:= IndexOfTab( self, tabViewItem ); currentIndex:= IndexOfTab( self, tabViewItem );
leftKeepAmount:= currentIndex - visibleLeftIndex;
if Assigned(callback) then if Assigned(callback) then
begin begin