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:
zeljko 2011-12-13 18:20:07 +00:00
parent e85441db12
commit 4b834dcd73
2 changed files with 40 additions and 0 deletions

View File

@ -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;

View File

@ -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;