mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-07 07:38:28 +02:00
Cocoa/ListView: get accurate visibleItems
NSCollectionView.visibleItems() returns the items that have been displayed.
This commit is contained in:
parent
6715cb64ed
commit
b6561e4316
@ -95,6 +95,7 @@ type
|
||||
|
||||
function AllocCocoaCollectionView: TCocoaCollectionView;
|
||||
function indexPathsWithOneIndex( cv: NSCollectionView; AIndex: Integer ): NSSet;
|
||||
function realVisibleItems( cv: NSCollectionView ): NSArray;
|
||||
|
||||
implementation
|
||||
|
||||
@ -131,6 +132,22 @@ begin
|
||||
Result:= NSSet.setWithObject( indexPath );
|
||||
end;
|
||||
|
||||
// get the Real Visible Items.
|
||||
// NSCollectionView returns the items that have been displayed.
|
||||
function realVisibleItems( cv: NSCollectionView ): NSArray;
|
||||
var
|
||||
visibleRect: NSRect;
|
||||
item: NSCollectionViewItem;
|
||||
items: NSMutableArray Absolute Result;
|
||||
begin
|
||||
Result:= NSMutableArray.new;
|
||||
visibleRect:= cv.visibleRect;
|
||||
for item in cv.visibleItems do begin
|
||||
if NSIntersectsRect( item.view.frame, visibleRect ) then
|
||||
items.addObject( item );
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TCocoaCollectionItem }
|
||||
|
||||
procedure TCocoaCollectionItem.loadView;
|
||||
@ -247,7 +264,7 @@ procedure TCocoaCollectionView.redrawVisibleItems;
|
||||
var
|
||||
item: NSCollectionViewItem;
|
||||
begin
|
||||
for item in self.visibleItems do begin
|
||||
for item in realVisibleItems(self) do begin
|
||||
item.view.setNeedsDisplay_( True );
|
||||
end;
|
||||
end;
|
||||
|
@ -1200,7 +1200,7 @@ var
|
||||
item: NSCollectionViewItem;
|
||||
begin
|
||||
Result:= -1;
|
||||
items:= _collectionView.visibleItems;
|
||||
items:= CocoaCollectionView.realVisibleItems( _collectionView );
|
||||
if items.count > 0 then begin
|
||||
item:= NSCollectionViewItem(items.firstObject);
|
||||
Result:= _collectionView.indexPathForItem(item).item;
|
||||
@ -1209,7 +1209,7 @@ end;
|
||||
|
||||
function TCocoaWSListView_CollectionViewHandler.GetVisibleRowCount: Integer;
|
||||
begin
|
||||
Result:= _collectionView.visibleItems.count;
|
||||
Result:= CocoaCollectionView.realVisibleItems(_collectionView).count;
|
||||
end;
|
||||
|
||||
procedure TCocoaWSListView_CollectionViewHandler.SelectAll(const AIsSet: Boolean
|
||||
|
Loading…
Reference in New Issue
Block a user