From 71fe0dfcdfeda926d7c5901794ae4e8f21a60fef Mon Sep 17 00:00:00 2001 From: rich2014 Date: Sat, 10 Aug 2024 22:09:34 +0800 Subject: [PATCH] Cocoa/ListView: in vsReport, adapt ItemDisplayRect() to ViewBase --- lcl/interfaces/cocoa/cocoatables.pas | 54 ++++++++++++---------------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/lcl/interfaces/cocoa/cocoatables.pas b/lcl/interfaces/cocoa/cocoatables.pas index 4028367396..e2822c693d 100644 --- a/lcl/interfaces/cocoa/cocoatables.pas +++ b/lcl/interfaces/cocoa/cocoatables.pas @@ -143,12 +143,6 @@ type function lclGetSmallImage(idx: INteger): NSImage; message 'lclGetSmallImage:'; function lclGetItemImageAt(ARow, ACol: Integer): NSImage; message 'lclGetItemImageAt::'; - // BoundsRect - is the rectangle of the cell, speciifed of aRow, acol. - // so the function lclGetLabelRect, lclGetIconRect should only adjust "BoundsRect" - // and return the adjusted rectangle - function lclGetLabelRect(ARow, ACol: Integer; const BoundsRect: TRect): TRect; message 'lclGetLabelRect:::'; - function lclGetIconRect(ARow, ACol: Integer; const BoundsRect: TRect): TRect; message 'lclGetIconRect:::'; - procedure lclInsDelRow(Arow: Integer; inserted: Boolean); message 'lclInsDelRow::'; procedure lclSetColumnAlign(acolumn: NSTableColumn; aalignment: NSTextAlignment); message 'lclSetColumn:Align:'; @@ -408,28 +402,6 @@ begin Result := img; end; -function TCocoaTableListView.lclGetLabelRect(ARow, ACol: Integer; - const BoundsRect: TRect): TRect; -begin - Result:= BoundsRect; - Result.Top:= Result.Top - 2; - Result.Height:= Result.Height + 4; - if self.isImagesInCell then begin - Result.Left:= Result.Left + BoundsRect.Height; - end; -end; - -function TCocoaTableListView.lclGetIconRect(ARow, ACol: Integer; - const BoundsRect: TRect): TRect; -begin - if self.isImagesInCell then begin - Result:= BoundsRect; - Result.Width:= Result.Height; - end else begin - Result:= TRect.Empty; - end; -end; - procedure TCocoaTableListView.lclInsDelRow(Arow: Integer; inserted: Boolean); begin // a row has been inserted or removed @@ -1498,12 +1470,32 @@ end; function TCocoaWSListView_TableViewHandler.ItemDisplayRect(const AIndex, ASubItem: Integer; ACode: TDisplayCode): TRect; +var + item: TCocoaTableListItem; + frame: NSRect; begin - LCLGetItemRect(_tableView, AIndex, ASubItem, Result); + Result:= Bounds(0,0,0,0); + item:= _tableView.viewAtColumn_row_makeIfNecessary( ASubItem, AIndex, True ); + if NOT Assigned(item) then + Exit; + case ACode of - drLabel: Result:= _tableView.lclGetLabelRect(AIndex, ASubItem, Result); - drIcon: Result:= _tableView.lclGetIconRect(AIndex, ASubItem, Result); + drLabel: + begin + frame:= item.textField.frame; + frame.origin.y:= frame.origin.y + 2; + frame:= item.convertRect_toView( frame, _tableView ); + end; + drIcon: + begin + frame:= item.imageView.frame; + frame:= item.convertRect_toView( frame, _tableView ); + end + else + frame:= item.frame; end; + + Result:= NSRectToRect( frame ); end; function TCocoaWSListView_TableViewHandler.ItemGetPosition(