Cocoa/TabControl: TCocoaTabControl.exttabMoveTabViewItem_toIndex() improved

This commit is contained in:
rich2014 2023-10-08 23:47:15 +08:00
parent 5bfc060093
commit 51f7942433

View File

@ -103,6 +103,8 @@ type
// lcl
procedure exttabInsertTabViewItem_atIndex(lTabPage: NSTabViewItem; index: integer);
message 'exttabInsertTabViewItem:atIndex:';
procedure exttabMoveTabViewItem_toIndex(lTabPage: NSTabViewItem; NewIndex: integer);
message 'exttabMoveTabViewItem:toIndex:';
procedure exttabRemoveTabViewItem(lTabPage: NSTabViewItem);
message 'exttabRemoveTabViewItem:';
function exttabIndexOfTabViewItem(lTabPage: NSTabViewItem): NSInteger;
@ -799,6 +801,37 @@ begin
inherited mouseMoved(event);
end;
procedure TCocoaTabControl.exttabMoveTabViewItem_toIndex(
lTabPage: NSTabViewItem; NewIndex: integer);
var
isMovingCurrentPage: Boolean;
OldIndex: Integer;
begin
if fulltabs.count=0 then
Exit;
if NewIndex > fulltabs.count then
NewIndex:= fulltabs.count;
OldIndex := exttabIndexOfTabViewItem( lTabPage );
isMovingCurrentPage := (OldIndex=currentIndex);
fulltabs.removeObjectAtIndex( OldIndex );
fulltabs.insertObject_atIndex( lTabPage, NewIndex );
if isMovingCurrentPage then begin
currentIndex:= NewIndex;
leftKeepAmount:= currentIndex - visibleLeftIndex;
selectTabViewItem( lTabPage );
end else begin
if (OldIndex<currentIndex) and (NewIndex>currentIndex) then
dec( currentIndex )
else if (OldIndex>currentIndex) and (NewIndex<=currentIndex) then
inc( currentIndex );
end;
UpdateTabAndArrowVisibility( self );
end;
procedure TCocoaTabControl.exttabInsertTabViewItem_atIndex(
lTabPage:NSTabViewItem; index:integer );
begin