mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-06 11:00:41 +02:00
Qt: implemented TQtTabBar.TabBarOffset for themes where tabs doesn't start at 0,0 (eg. macosx).
git-svn-id: trunk@34158 -
This commit is contained in:
parent
e85441db12
commit
4b834dcd73
@ -201,9 +201,13 @@ var
|
||||
TabWidget: TQtTabWidget;
|
||||
NewPos: TPoint;
|
||||
R: TRect;
|
||||
TabOffset: TPoint;
|
||||
begin
|
||||
TabWidget := TQtTabWidget(ATabControl.Handle);
|
||||
NewPos := AClientPos;
|
||||
TabOffset := TabWidget.TabBar.TabBarOffset;
|
||||
Dec(NewPos.X, TabOffset.X);
|
||||
Dec(NewPos.Y, TabOffset.Y);
|
||||
R := TabWidget.TabBar.getGeometry;
|
||||
case ATabControl.TabPosition of
|
||||
tpTop: if NewPos.Y < 0 then NewPos.Y := R.Bottom + NewPos.Y;
|
||||
|
@ -820,6 +820,8 @@ type
|
||||
procedure AttachEvents; override;
|
||||
procedure DetachEvents; override;
|
||||
function GetTabRect(const AIndex: integer): TRect;
|
||||
// under some themes tabs doesn't start at 0,0 (eg. MacOSX)
|
||||
function TabBarOffset: TPoint;
|
||||
procedure SignalTabBarCurrentChanged(Index: Integer); cdecl;
|
||||
function SlotTabBarMouse(Sender: QObjectH; Event: QEventH): Boolean; cdecl;
|
||||
function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override;
|
||||
@ -7815,8 +7817,42 @@ begin
|
||||
end;
|
||||
|
||||
function TQtTabBar.GetTabRect(const AIndex: integer): TRect;
|
||||
var
|
||||
Pt: TPoint;
|
||||
begin
|
||||
QTabBar_tabRect(QTabBarH(Widget), @Result, AIndex);
|
||||
if Assigned(FOwner) then
|
||||
begin
|
||||
Pt := TabBarOffset;
|
||||
OffsetRect(Result, Pt.X, Pt.Y);
|
||||
end;
|
||||
end;
|
||||
|
||||
function TQtTabBar.TabBarOffset: TPoint;
|
||||
var
|
||||
R: TRect;
|
||||
begin
|
||||
Result := Point(0, 0);
|
||||
if Assigned(FOwner) then
|
||||
begin
|
||||
QWidget_geometry(Widget, @R);
|
||||
case TQtTabWidget(FOwner).getTabPosition of
|
||||
QTabWidgetNorth,
|
||||
QTabWidgetSouth:
|
||||
begin
|
||||
if R.Left < 0 then
|
||||
R.Left := 0;
|
||||
Result.X := R.Left;
|
||||
end;
|
||||
QTabWidgetEast,
|
||||
QTabWidgetWest:
|
||||
begin
|
||||
if R.Top < 0 then
|
||||
R.Top := 0;
|
||||
Result.Y := R.Top;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TQtTabBar.SignalTabBarCurrentChanged(Index: Integer); cdecl;
|
||||
|
Loading…
Reference in New Issue
Block a user