mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-25 23:28:14 +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 AllocCocoaCollectionView: TCocoaCollectionView;
|
||||||
function indexPathsWithOneIndex( cv: NSCollectionView; AIndex: Integer ): NSSet;
|
function indexPathsWithOneIndex( cv: NSCollectionView; AIndex: Integer ): NSSet;
|
||||||
|
function realVisibleItems( cv: NSCollectionView ): NSArray;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
@ -131,6 +132,22 @@ begin
|
|||||||
Result:= NSSet.setWithObject( indexPath );
|
Result:= NSSet.setWithObject( indexPath );
|
||||||
end;
|
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 }
|
{ TCocoaCollectionItem }
|
||||||
|
|
||||||
procedure TCocoaCollectionItem.loadView;
|
procedure TCocoaCollectionItem.loadView;
|
||||||
@ -247,7 +264,7 @@ procedure TCocoaCollectionView.redrawVisibleItems;
|
|||||||
var
|
var
|
||||||
item: NSCollectionViewItem;
|
item: NSCollectionViewItem;
|
||||||
begin
|
begin
|
||||||
for item in self.visibleItems do begin
|
for item in realVisibleItems(self) do begin
|
||||||
item.view.setNeedsDisplay_( True );
|
item.view.setNeedsDisplay_( True );
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -1200,7 +1200,7 @@ var
|
|||||||
item: NSCollectionViewItem;
|
item: NSCollectionViewItem;
|
||||||
begin
|
begin
|
||||||
Result:= -1;
|
Result:= -1;
|
||||||
items:= _collectionView.visibleItems;
|
items:= CocoaCollectionView.realVisibleItems( _collectionView );
|
||||||
if items.count > 0 then begin
|
if items.count > 0 then begin
|
||||||
item:= NSCollectionViewItem(items.firstObject);
|
item:= NSCollectionViewItem(items.firstObject);
|
||||||
Result:= _collectionView.indexPathForItem(item).item;
|
Result:= _collectionView.indexPathForItem(item).item;
|
||||||
@ -1209,7 +1209,7 @@ end;
|
|||||||
|
|
||||||
function TCocoaWSListView_CollectionViewHandler.GetVisibleRowCount: Integer;
|
function TCocoaWSListView_CollectionViewHandler.GetVisibleRowCount: Integer;
|
||||||
begin
|
begin
|
||||||
Result:= _collectionView.visibleItems.count;
|
Result:= CocoaCollectionView.realVisibleItems(_collectionView).count;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCocoaWSListView_CollectionViewHandler.SelectAll(const AIsSet: Boolean
|
procedure TCocoaWSListView_CollectionViewHandler.SelectAll(const AIsSet: Boolean
|
||||||
|
Loading…
Reference in New Issue
Block a user