From dfa3fe0ea4f265e0e2ff3de70fc6ec5ed6c97dc3 Mon Sep 17 00:00:00 2001 From: martin Date: Fri, 29 Jan 2021 18:53:47 +0000 Subject: [PATCH] TTabControl: reverted/replaced r64424 #ed6e087523: "fix ClientOrigin, Issue #38403 - Need the origin of the child TabControl". Modifying the ClientOrigin affects child-controls of the TTabControl. Also fixes issue #38422, endless recursion if no handle was allocated. git-svn-id: trunk@64436 - --- lcl/comctrls.pp | 1 - lcl/include/tabcontrol.inc | 13 ++++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/lcl/comctrls.pp b/lcl/comctrls.pp index e7da9ccfe2..a28b185abc 100644 --- a/lcl/comctrls.pp +++ b/lcl/comctrls.pp @@ -839,7 +839,6 @@ type procedure AdjustDisplayRectWithBorder(var ARect: TRect); virtual; procedure AdjustClientRect(var ARect: TRect); override; function CreateTabNoteBookStrings: TTabControlNoteBookStrings; virtual; - function GetClientOrigin: TPoint; override; public constructor Create(TheOwner: TComponent); override; destructor Destroy; override; diff --git a/lcl/include/tabcontrol.inc b/lcl/include/tabcontrol.inc index c75a8ab64e..dde6cd41b9 100644 --- a/lcl/include/tabcontrol.inc +++ b/lcl/include/tabcontrol.inc @@ -758,11 +758,6 @@ begin Result := TTabControlNoteBookStrings.Create(Self); end; -function TTabControl.GetClientOrigin: TPoint; -begin - Result := TTabControlNoteBookStrings(FTabs).FNoteBook.ClientOrigin; -end; - constructor TTabControl.Create(TheOwner: TComponent); begin FTabControlCreating:=true; @@ -794,13 +789,17 @@ begin end; function TTabControl.IndexOfTabAt(X, Y: Integer): Integer; +var + Offs: TPoint; begin - Result:=TTabControlStrings(FTabs).IndexOfTabAt(X,Y); + Offs := TTabControlNoteBookStrings(FTabs).FNoteBook.ClientOrigin; + Offs := Offs.Subtract(ClientOrigin); + Result:=TTabControlStrings(FTabs).IndexOfTabAt(X-Offs.X, Y-Offs.Y); end; function TTabControl.IndexOfTabAt(P: TPoint): Integer; begin - Result:=TTabControlStrings(FTabs).IndexOfTabAt(P.x, P.y); + Result:=IndexOfTabAt(P.x, P.y); end; function TTabControl.GetHitTestInfoAt(X, Y: Integer): THitTests;