mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-10-03 00:19:25 +02:00
Qt: fixed wrong TQtTreeWidget.getClientBounds when header is visible, removed headerOffset from TQtWSCustomListView.getItemAt() since needed offset is wrong because of wrong getClientBounds which should take into account embedded header control.
git-svn-id: trunk@27749 -
This commit is contained in:
parent
e8d188bf55
commit
115f4ce243
@ -1232,7 +1232,7 @@ type
|
||||
function takeTopLevelItem(AIndex: Integer): QTreeWidgetItemH;
|
||||
function topLevelItem(AIndex: Integer): QTreeWidgetItemH;
|
||||
function visualItemRect(AItem: QTreeWidgetItemH): TRect;
|
||||
function getHeaderHeight: Integer;
|
||||
function getHeaderHeight(out AOrientation: QtOrientation): Integer;
|
||||
function getItemVisible(AItem: QTreeWidgetItemH): Boolean;
|
||||
function getTopItem: integer; override;
|
||||
function getVisibleRowCount(const AFirstVisibleOnly: boolean = false): integer; override;
|
||||
@ -1248,6 +1248,7 @@ type
|
||||
public
|
||||
procedure AttachEvents; override;
|
||||
procedure DetachEvents; override;
|
||||
function getClientBounds: TRect; override;
|
||||
|
||||
procedure SignalItemClicked(item: QTreeWidgetItemH; column: Integer); cdecl;
|
||||
procedure SignalItemDoubleClicked(item: QTreeWidgetItemH; column: Integer); cdecl;
|
||||
@ -9855,15 +9856,17 @@ begin
|
||||
Result := ItemRect;
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.getHeaderHeight: Integer;
|
||||
function TQtTreeWidget.getHeaderHeight(out AOrientation: QtOrientation): Integer;
|
||||
var
|
||||
W: QHeaderViewH;
|
||||
begin
|
||||
Result := 0;
|
||||
AOrientation := QtHorizontal;
|
||||
W := QTreeView_header(QTreeViewH(Widget));
|
||||
if QWidget_isVisible(W) and QWidget_isVisibleTo(W, Widget) then
|
||||
begin
|
||||
if QHeaderView_orientation(W) = QtHorizontal then
|
||||
AOrientation := QHeaderView_orientation(W);
|
||||
if AOrientation = QtHorizontal then
|
||||
Result := QWidget_height(W)
|
||||
else
|
||||
Result := QWidget_width(W);
|
||||
@ -10061,6 +10064,23 @@ begin
|
||||
inherited DetachEvents;
|
||||
end;
|
||||
|
||||
function TQtTreeWidget.getClientBounds: TRect;
|
||||
var
|
||||
H: QHeaderViewH;
|
||||
Offset: Integer;
|
||||
AOrientation: QtOrientation;
|
||||
begin
|
||||
Result := inherited getClientBounds;
|
||||
Offset := getHeaderHeight(AOrientation);
|
||||
if Offset > 0 then
|
||||
begin
|
||||
if AOrientation = QtHorizontal then
|
||||
Inc(Result.Top, Offset)
|
||||
else
|
||||
Inc(Result.Left, Offset);
|
||||
end;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Function: TQtTreeWidget.SignalItemClicked
|
||||
Params: Integer
|
||||
|
@ -1458,7 +1458,6 @@ var
|
||||
LWI: QListWidgetItemH;
|
||||
QtTreeWidget: TQtTreeWidget;
|
||||
TWI: QTreeWidgetItemH;
|
||||
HeaderOffset: Integer;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(ALV, 'GetItemAt') then
|
||||
Exit;
|
||||
@ -1469,10 +1468,8 @@ begin
|
||||
Result := QtListWidget.getRow(LWI);
|
||||
end else
|
||||
begin
|
||||
|
||||
QtTreeWidget := TQtTreeWidget(ALV.Handle);
|
||||
HeaderOffset := QtTreeWidget.GetHeaderHeight;
|
||||
TWI := QtTreeWidget.itemAt(x, y - HeaderOffset);
|
||||
TWI := QtTreeWidget.itemAt(x, y);
|
||||
Result := QtTreeWidget.getRow(TWI);
|
||||
end;
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user