From c4eba5ff151a0e88f54116de5b38fcdf06c97fdb Mon Sep 17 00:00:00 2001 From: ondrej Date: Mon, 9 Oct 2017 07:08:51 +0000 Subject: [PATCH] IDE: designer: High-DPI: selection grabber. Issue #32397 git-svn-id: trunk@56001 - --- designer/controlselection.pp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/designer/controlselection.pp b/designer/controlselection.pp index 2c5c364f20..40dff47773 100644 --- a/designer/controlselection.pp +++ b/designer/controlselection.pp @@ -372,6 +372,7 @@ type function GetBottomGuideLine(var ALine: TRect): boolean; function GetLeftGuideLine(var ALine: TRect): boolean; function GetRightGuideLine(var ALine: TRect): boolean; + function GetRealGrabberSize: integer; function GetTopGuideLine(var ALine: TRect): boolean; procedure FindNearestBottomGuideLine(var NearestInt: TNearestInt); procedure FindNearestClientLeftRight(var NearestInt: TNearestInt); @@ -1232,23 +1233,23 @@ procedure TControlSelection.AdjustGrabbers; var g:TGrabIndex; OutPix, InPix, NewGrabberLeft, NewGrabberTop: integer; begin - OutPix:=GrabberSize div 2; - InPix:=GrabberSize-OutPix; + OutPix:=GetRealGrabberSize div 2; + InPix:=GetRealGrabberSize-OutPix; for g:=Low(TGrabIndex) to High(TGrabIndex) do begin if gpLeft in FGrabbers[g].Positions then NewGrabberLeft:=FRealLeft-OutPix else if gpRight in FGrabbers[g].Positions then NewGrabberLeft:=FRealLeft+FRealWidth-InPix else - NewGrabberLeft:=FRealLeft+((FRealWidth-GrabberSize) div 2); + NewGrabberLeft:=FRealLeft+((FRealWidth-GetRealGrabberSize) div 2); if gpTop in FGrabbers[g].Positions then NewGrabberTop:=FRealTop-OutPix else if gpBottom in FGrabbers[g].Positions then NewGrabberTop:=FRealTop+FRealHeight-InPix else - NewGrabberTop:=FRealTop+((FRealHeight-GrabberSize) div 2); - FGrabbers[g].Width:=GrabberSize; - FGrabbers[g].Height:=GrabberSize; + NewGrabberTop:=FRealTop+((FRealHeight-GetRealGrabberSize) div 2); + FGrabbers[g].Width:=GetRealGrabberSize; + FGrabbers[g].Height:=GetRealGrabberSize; FGrabbers[g].Move(NewGrabberLeft,NewGrabberTop); end; end; @@ -2160,6 +2161,13 @@ begin Result := DesignerProcs.GetParentFormRelativeBounds(AComponent); end; +function TControlSelection.GetRealGrabberSize: integer; +begin + Result := FGrabberSize; + if Assigned(FForm) and Application.Scaled then + Result := FForm.Scale96ToScreen(FGrabberSize); +end; + function TControlSelection.GetItems(Index:integer):TSelectedControl; begin Result:=TSelectedControl(FControls[Index]);