Skip to content

Commit b5c7445

Browse files
authored
Merge pull request #73 from stephenfewer/master
[bugfix] Scale the tab, add, close and scroll controls as expected on…
2 parents 3a21882 + 1fa7d0f commit b5c7445

File tree

2 files changed

+81
-82
lines changed

2 files changed

+81
-82
lines changed

Lib/ChromeTabs.pas

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -4086,48 +4086,48 @@ procedure TCustomChromeTabs.DrawBackGroundTo(Targets: Array of TGPGraphics);
40864086

40874087
procedure TCustomChromeTabs.SetDefaultOptions;
40884088
begin
4089-
FOptions.Display.CloseButton.Offsets.Vertical := 6;
4090-
FOptions.Display.CloseButton.Offsets.Horizontal := 2;
4091-
FOptions.Display.CloseButton.Height := 14;
4092-
FOptions.Display.CloseButton.Width := 14;
4089+
FOptions.Display.CloseButton.Offsets.Vertical := MulDiv( 6, Screen.PixelsPerInch, 96 );
4090+
FOptions.Display.CloseButton.Offsets.Horizontal := MulDiv( 2, Screen.PixelsPerInch, 96 );
4091+
FOptions.Display.CloseButton.Height := MulDiv( 14, Screen.PixelsPerInch, 96 );
4092+
FOptions.Display.CloseButton.Width := MulDiv( 14, Screen.PixelsPerInch, 96 );
40934093
FOptions.Display.CloseButton.AutoHide := True;
40944094
FOptions.Display.CloseButton.Visibility := bvAll;
4095-
FOptions.Display.CloseButton.AutoHideWidth := 20;
4096-
FOptions.Display.CloseButton.CrossRadialOffset := 4;
4097-
FOptions.Display.AddButton.Offsets.Vertical := 10;
4098-
FOptions.Display.AddButton.Offsets.Horizontal := 2;
4099-
FOptions.Display.AddButton.HorizontalOffsetFloating := -3;
4100-
FOptions.Display.AddButton.Height := 14;
4101-
FOptions.Display.AddButton.Width := 31;
4095+
FOptions.Display.CloseButton.AutoHideWidth := MulDiv( 20, Screen.PixelsPerInch, 96 );
4096+
FOptions.Display.CloseButton.CrossRadialOffset := MulDiv( 4, Screen.PixelsPerInch, 96 );
4097+
FOptions.Display.AddButton.Offsets.Vertical := MulDiv( 10, Screen.PixelsPerInch, 96 );
4098+
FOptions.Display.AddButton.Offsets.Horizontal := MulDiv( 2, Screen.PixelsPerInch, 96 );
4099+
FOptions.Display.AddButton.HorizontalOffsetFloating := MulDiv( -3, Screen.PixelsPerInch, 96 );
4100+
FOptions.Display.AddButton.Height := MulDiv( 14, Screen.PixelsPerInch, 96 );
4101+
FOptions.Display.AddButton.Width := MulDiv( 31, Screen.PixelsPerInch, 96 );
41024102
FOptions.Display.AddButton.ShowPlusSign := False;
41034103
FOptions.Display.AddButton.Visibility := avRightFloating;
4104-
FOptions.Display.ScrollButtonLeft.Offsets.Vertical := 10;
4105-
FOptions.Display.ScrollButtonLeft.Offsets.Horizontal := 1;
4106-
FOptions.Display.ScrollButtonLeft.Height := 15;
4107-
FOptions.Display.ScrollButtonLeft.Width := 15;
4108-
FOptions.Display.ScrollButtonRight.Offsets.Vertical := 10;
4109-
FOptions.Display.ScrollButtonRight.Offsets.Horizontal := 1;
4110-
FOptions.Display.ScrollButtonRight.Height := 15;
4111-
FOptions.Display.ScrollButtonRight.Width := 15;
4104+
FOptions.Display.ScrollButtonLeft.Offsets.Vertical := MulDiv( 10, Screen.PixelsPerInch, 96 );
4105+
FOptions.Display.ScrollButtonLeft.Offsets.Horizontal := MulDiv( 1, Screen.PixelsPerInch, 96 );
4106+
FOptions.Display.ScrollButtonLeft.Height := MulDiv( 15, Screen.PixelsPerInch, 96 );
4107+
FOptions.Display.ScrollButtonLeft.Width := MulDiv( 15, Screen.PixelsPerInch, 96 );
4108+
FOptions.Display.ScrollButtonRight.Offsets.Vertical := MulDiv( 10, Screen.PixelsPerInch, 96 );
4109+
FOptions.Display.ScrollButtonRight.Offsets.Horizontal := MulDiv( 1, Screen.PixelsPerInch, 96 );
4110+
FOptions.Display.ScrollButtonRight.Height := MulDiv( 15, Screen.PixelsPerInch, 96 );
4111+
FOptions.Display.ScrollButtonRight.Width := MulDiv( 15, Screen.PixelsPerInch, 96 );
41124112
FOptions.Display.TabModifiedGlow.Style := msRightToLeft;
4113-
FOptions.Display.TabModifiedGlow.VerticalOffset := -6;
4114-
FOptions.Display.TabModifiedGlow.Height := 30;
4115-
FOptions.Display.TabModifiedGlow.Width := 100;
4113+
FOptions.Display.TabModifiedGlow.VerticalOffset := MulDiv( -6, Screen.PixelsPerInch, 96 );
4114+
FOptions.Display.TabModifiedGlow.Height := MulDiv( 30, Screen.PixelsPerInch, 96 );
4115+
FOptions.Display.TabModifiedGlow.Width := MulDiv( 100, Screen.PixelsPerInch, 96 );
41164116
FOptions.Display.TabModifiedGlow.AnimationPeriodMS := 4000;
41174117
FOptions.Display.TabModifiedGlow.EaseType := ttEaseInOutQuad;
41184118
FOptions.Display.TabModifiedGlow.AnimationUpdateMS := 50;
41194119
FOptions.Display.Tabs.SeeThroughTabs := False;
4120-
FOptions.Display.Tabs.TabOverlap := 15;
4121-
FOptions.Display.Tabs.ContentOffsetLeft := 18;
4122-
FOptions.Display.Tabs.ContentOffsetRight := 16;
4120+
FOptions.Display.Tabs.TabOverlap := MulDiv( 15, Screen.PixelsPerInch, 96 );
4121+
FOptions.Display.Tabs.ContentOffsetLeft := MulDiv( 18, Screen.PixelsPerInch, 96 );
4122+
FOptions.Display.Tabs.ContentOffsetRight := MulDiv( 16, Screen.PixelsPerInch, 96 );
41234123
FOptions.Display.Tabs.OffsetLeft := 0;
4124-
FOptions.Display.Tabs.OffsetTop := 4;
4124+
FOptions.Display.Tabs.OffsetTop := MulDiv( 4, Screen.PixelsPerInch, 96 );
41254125
FOptions.Display.Tabs.OffsetRight := 0;
41264126
FOptions.Display.Tabs.OffsetBottom := 0;
4127-
FOptions.Display.Tabs.MinWidth := 25;
4128-
FOptions.Display.Tabs.MaxWidth := 200;
4129-
FOptions.Display.Tabs.PinnedWidth := 39;
4130-
FOptions.Display.Tabs.ImageOffsetLeft := 13;
4127+
FOptions.Display.Tabs.MinWidth := MulDiv( 25, Screen.PixelsPerInch, 96 );
4128+
FOptions.Display.Tabs.MaxWidth := MulDiv( 200, Screen.PixelsPerInch, 96 );
4129+
FOptions.Display.Tabs.PinnedWidth := MulDiv( 39, Screen.PixelsPerInch, 96 );
4130+
FOptions.Display.Tabs.ImageOffsetLeft := MulDiv( 13, Screen.PixelsPerInch, 96 );
41314131
FOptions.Display.Tabs.TextTrimType := tttFade;
41324132
FOptions.Display.Tabs.Orientation := toTop;
41334133
FOptions.Display.Tabs.BaseLineTabRegionOnly := False;
@@ -4141,22 +4141,22 @@ procedure TCustomChromeTabs.SetDefaultOptions;
41414141
FOptions.Display.TabContainer.PaddingRight := 0;
41424142
FOptions.Display.TabMouseGlow.Offsets.Vertical := 0;
41434143
FOptions.Display.TabMouseGlow.Offsets.Horizontal := 0;
4144-
FOptions.Display.TabMouseGlow.Height := 200;
4145-
FOptions.Display.TabMouseGlow.Width := 200;
4144+
FOptions.Display.TabMouseGlow.Height := MulDiv( 200, Screen.PixelsPerInch, 96 );
4145+
FOptions.Display.TabMouseGlow.Width := MulDiv( 200, Screen.PixelsPerInch, 96 );
41464146
FOptions.Display.TabMouseGlow.Visible := True;
41474147
FOptions.DragDrop.DragType := dtBetweenContainers;
41484148
FOptions.DragDrop.DragOutsideImageAlpha := 220;
4149-
FOptions.DragDrop.DragOutsideDistancePixels := 30;
4150-
FOptions.DragDrop.DragStartPixels := 2;
4149+
FOptions.DragDrop.DragOutsideDistancePixels := MulDiv( 30, Screen.PixelsPerInch, 96 );
4150+
FOptions.DragDrop.DragStartPixels := MulDiv( 20, Screen.PixelsPerInch, 96 );
41514151
FOptions.DragDrop.DragControlImageResizeFactor := 0.5;
41524152
FOptions.DragDrop.DragCursor := crDefault;
41534153
FOptions.DragDrop.DragDisplay := ddTabAndControl;
4154-
FOptions.DragDrop.DragFormBorderWidth := 2;
4154+
FOptions.DragDrop.DragFormBorderWidth := MulDiv( 2, Screen.PixelsPerInch, 96 );
41554155
FOptions.DragDrop.DragFormBorderColor := 8421504;
41564156
FOptions.Animation.DefaultMovementAnimationTimeMS := 100;
41574157
FOptions.Animation.DefaultStyleAnimationTimeMS := 300;
41584158
FOptions.Animation.AnimationTimerInterval := 15;
4159-
FOptions.Animation.MinimumTabAnimationWidth := 40;
4159+
FOptions.Animation.MinimumTabAnimationWidth := MulDiv( 40, Screen.PixelsPerInch, 96 );
41604160
FOptions.Animation.DefaultMovementEaseType := ttLinearTween;
41614161
FOptions.Animation.DefaultStyleEaseType := ttLinearTween;
41624162
FOptions.Animation.MovementAnimations.TabAdd.UseDefaultEaseType := True;
@@ -4182,11 +4182,11 @@ procedure TCustomChromeTabs.SetDefaultOptions;
41824182
FOptions.Behaviour.IgnoreDoubleClicksWhileAnimatingMovement := True;
41834183
FOptions.Scrolling.Enabled := True;
41844184
FOptions.Scrolling.ScrollButtons := csbRight;
4185-
FOptions.Scrolling.ScrollStep := 20;
4185+
FOptions.Scrolling.ScrollStep := MulDiv( 20, Screen.PixelsPerInch, 96 );
41864186
FOptions.Scrolling.ScrollRepeatDelay := 20;
41874187
FOptions.Scrolling.AutoHideButtons := False;
41884188
FOptions.Scrolling.DragScroll := True;
4189-
FOptions.Scrolling.DragScrollOffset := 50;
4189+
FOptions.Scrolling.DragScrollOffset := MulDiv( 50, Screen.PixelsPerInch, 96 );
41904190
FOptions.Scrolling.MouseWheelScroll := True;
41914191
end;
41924192

Lib/ChromeTabsControls.pas

Lines changed: 43 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -491,41 +491,41 @@ function TAddButtonControl.GetPolygons: IChromeTabPolygons;
491491
Result := TChromeTabPolygons.Create;
492492

493493
Result.AddPolygon(BidiPolygon(
494-
NewPolygon(BidiControlRect, [Point(7, RectHeight(BidiControlRect)),
495-
Point(4, RectHeight(BidiControlRect) - 2),
496-
Point(0, 2),
497-
Point(1, 0),
498-
Point(RectWidth(BidiControlRect) - 7, 0),
499-
Point(RectWidth(BidiControlRect) - 4, 2),
500-
Point(RectWidth(BidiControlRect), RectHeight(BidiControlRect) - 2),
494+
NewPolygon(BidiControlRect, [Point(MulDiv(7,Screen.PixelsPerInch,96), RectHeight(BidiControlRect)),
495+
Point(MulDiv(4,Screen.PixelsPerInch,96), RectHeight(BidiControlRect) - MulDiv(2,Screen.PixelsPerInch,96)),
496+
Point(0, MulDiv(2,Screen.PixelsPerInch,96)),
497+
Point(MulDiv(1,Screen.PixelsPerInch,96), 0),
498+
Point(RectWidth(BidiControlRect) - MulDiv(7,Screen.PixelsPerInch,96), 0),
499+
Point(RectWidth(BidiControlRect) - MulDiv(4,Screen.PixelsPerInch,96), MulDiv(2,Screen.PixelsPerInch,96)),
500+
Point(RectWidth(BidiControlRect), RectHeight(BidiControlRect) - MulDiv(2,Screen.PixelsPerInch,96)),
501501
Point(RectWidth(BidiControlRect), RectHeight(BidiControlRect))],
502502
ChromeTabs.GetOptions.Display.Tabs.Orientation)),
503503
GetButtonBrush,
504504
GetButtonPen);
505505

506506
if ChromeTabs.GetOptions.Display.AddButton.ShowPlusSign then
507507
begin
508-
LeftOffset := (ChromeTabs.GetOptions.Display.AddButton.Width div 2) - 4;
509-
TopOffset := (ChromeTabs.GetOptions.Display.AddButton.Height div 2) - 4;
508+
LeftOffset := (ChromeTabs.GetOptions.Display.AddButton.Width div 2) - MulDiv(4,Screen.PixelsPerInch,96);
509+
TopOffset := (ChromeTabs.GetOptions.Display.AddButton.Height div 2) - MulDiv(4,Screen.PixelsPerInch,96);
510510

511511
Result.AddPolygon(BidiPolygon(
512512
NewPolygon(Rect(BidiControlRect.Left + LeftOffset,
513513
BidiControlRect.Top + TopOffset,
514514
BidiControlRect.Right - LeftOffset,
515515
BidiControlRect.Bottom - TopOffset),
516-
[Point(0, 3),
517-
Point(3, 3),
518-
Point(3, 0),
519-
Point(6, 0),
520-
Point(6, 3),
521-
Point(9, 3),
522-
Point(9, 6),
523-
Point(6, 6),
524-
Point(6, 9),
525-
Point(3, 9),
526-
Point(3, 6),
527-
Point(0, 6),
528-
Point(0, 3)],
516+
[Point(0, MulDiv(3,Screen.PixelsPerInch,96)),
517+
Point(MulDiv(3,Screen.PixelsPerInch,96), MulDiv(3,Screen.PixelsPerInch,96)),
518+
Point(MulDiv(3,Screen.PixelsPerInch,96), 0),
519+
Point(MulDiv(6,Screen.PixelsPerInch,96), 0),
520+
Point(MulDiv(6,Screen.PixelsPerInch,96), MulDiv(3,Screen.PixelsPerInch,96)),
521+
Point(MulDiv(9,Screen.PixelsPerInch,96), MulDiv(3,Screen.PixelsPerInch,96)),
522+
Point(MulDiv(9,Screen.PixelsPerInch,96), MulDiv(6,Screen.PixelsPerInch,96)),
523+
Point(MulDiv(6,Screen.PixelsPerInch,96), MulDiv(6,Screen.PixelsPerInch,96)),
524+
Point(MulDiv(6,Screen.PixelsPerInch,96), MulDiv(9,Screen.PixelsPerInch,96)),
525+
Point(MulDiv(3,Screen.PixelsPerInch,96), MulDiv(9,Screen.PixelsPerInch,96)),
526+
Point(MulDiv(3,Screen.PixelsPerInch,96), MulDiv(6,Screen.PixelsPerInch,96)),
527+
Point(0, MulDiv(6,Screen.PixelsPerInch,96)),
528+
Point(0, MulDiv(3,Screen.PixelsPerInch,96))],
529529
ChromeTabs.GetOptions.Display.Tabs.Orientation)),
530530
GetSymbolBrush,
531531
GetSymbolPen);
@@ -558,7 +558,6 @@ procedure TAddButtonControl.SetStylePropertyClasses;
558558
constructor TAddButtonControl.Create(ChromeTabs: IChromeTabs);
559559
begin
560560
inherited Create(ChromeTabs);
561-
562561
FControlType := itAddButton;
563562

564563
FButtonStyle := ChromeTabs.GetLookAndFeel.AddButton.Button.Normal;
@@ -813,16 +812,16 @@ function TChromeTabControl.GetPolygons: IChromeTabPolygons;
813812
Result := TChromeTabPolygons.Create;
814813

815814
Result.AddPolygon(NewPolygon(BidiControlRect, [Point(0, RectHeight(ControlRect)),
816-
Point(4, RectHeight(ControlRect) - 3),
817-
Point(12, 3),
818-
Point(13, 2),
819-
Point(14, 1),
820-
Point(16, 0),
821-
Point(RectWidth(ControlRect) - 16, 0),
822-
Point(RectWidth(ControlRect) - 14, 1),
823-
Point(RectWidth(ControlRect) - 13, 2),
824-
Point(RectWidth(ControlRect) - 12, 3),
825-
Point(RectWidth(ControlRect) - 4, RectHeight(ControlRect) - 3),
815+
Point(MulDiv( 4, Screen.PixelsPerInch, 96 ), RectHeight(ControlRect) - MulDiv( 3, Screen.PixelsPerInch, 96 )),
816+
Point(MulDiv( 12, Screen.PixelsPerInch, 96 ), MulDiv( 3, Screen.PixelsPerInch, 96 )),
817+
Point(MulDiv( 13, Screen.PixelsPerInch, 96 ), MulDiv( 2, Screen.PixelsPerInch, 96 )),
818+
Point(MulDiv( 14, Screen.PixelsPerInch, 96 ), MulDiv( 1, Screen.PixelsPerInch, 96 )),
819+
Point(MulDiv( 16, Screen.PixelsPerInch, 96 ), 0),
820+
Point(RectWidth(ControlRect) - MulDiv( 16, Screen.PixelsPerInch, 96 ), 0),
821+
Point(RectWidth(ControlRect) - MulDiv( 14, Screen.PixelsPerInch, 96 ), MulDiv( 1, Screen.PixelsPerInch, 96 )),
822+
Point(RectWidth(ControlRect) - MulDiv( 13, Screen.PixelsPerInch, 96 ), MulDiv( 2, Screen.PixelsPerInch, 96 )),
823+
Point(RectWidth(ControlRect) - MulDiv( 12, Screen.PixelsPerInch, 96 ), MulDiv( 3, Screen.PixelsPerInch, 96 )),
824+
Point(RectWidth(ControlRect) - MulDiv( 4, Screen.PixelsPerInch, 96 ), RectHeight(ControlRect) - MulDiv( 3, Screen.PixelsPerInch, 96 )),
826825
Point(RectWidth(ControlRect), RectHeight(ControlRect))],
827826
ChromeTabs.GetOptions.Display.Tabs.Orientation),
828827
GetTabBrush,
@@ -958,7 +957,7 @@ procedure TChromeTabControl.CalculateRects(var ImageRect, TextRect,
958957

959958
if CloseButtonVisible then
960959
begin
961-
RightOffset := CloseButtonRect.Left - 1
960+
RightOffset := CloseButtonRect.Left - MulDiv(1,Screen.PixelsPerInch,96)
962961
end
963962
else
964963
begin
@@ -1034,14 +1033,14 @@ procedure TChromeTabControl.CalculateRects(var ImageRect, TextRect,
10341033
LeftOffset + ImageWidth,
10351034
(ControlRect.Top + (RectHeight(ControlRect) div 2) - (ImageHeight div 2)) + ImageHeight);
10361035

1037-
LeftOffset := LeftOffset + ImageWidth + 1;
1036+
LeftOffset := LeftOffset + ImageWidth + MulDiv(1,Screen.PixelsPerInch,96);
10381037
end;
10391038
end;
10401039

10411040
// Does the Text fit?
10421041
TextVisible := ((not ChromeTab.GetPinned) or
10431042
(ChromeTabs.GetOptions.Display.Tabs.ShowPinnedTabText)) and
1044-
(RightOffset - LeftOffset >= 5);
1043+
(RightOffset - LeftOffset >= MulDiv(5,Screen.PixelsPerInch,96));
10451044

10461045
if TextVisible then
10471046
begin
@@ -1619,10 +1618,10 @@ function TScrollButtonControl.GetArrowPolygons(
16191618
drLeft:
16201619
begin
16211620
Result.AddPolygon(BidiPolygon(
1622-
NewPolygon(BidiControlRect, [Point(3, RectHeight(ControlRect) div 2),
1623-
Point(RectWidth(ControlRect) - 3, 2),
1624-
Point(RectWidth(ControlRect) - 3, RectHeight(ControlRect) - 2),
1625-
Point(3, RectHeight(ControlRect) div 2)],
1621+
NewPolygon(BidiControlRect, [Point(MulDiv(3,Screen.PixelsPerInch,96), RectHeight(ControlRect) div 2),
1622+
Point(RectWidth(ControlRect) - MulDiv(3,Screen.PixelsPerInch,96), MulDiv(2,Screen.PixelsPerInch,96)),
1623+
Point(RectWidth(ControlRect) - MulDiv(3,Screen.PixelsPerInch,96), RectHeight(ControlRect) - MulDiv(2,Screen.PixelsPerInch,96)),
1624+
Point(MulDiv(3,Screen.PixelsPerInch,96), RectHeight(ControlRect) div 2)],
16261625
ChromeTabs.GetOptions.Display.Tabs.Orientation)),
16271626
GetSymbolBrush,
16281627
GetSymbolPen);
@@ -1631,10 +1630,10 @@ function TScrollButtonControl.GetArrowPolygons(
16311630
drRight:
16321631
begin
16331632
Result.AddPolygon(BidiPolygon(
1634-
NewPolygon(BidiControlRect, [Point(RectWidth(ControlRect) - 3, RectHeight(ControlRect) div 2),
1635-
Point(3, 2),
1636-
Point(3, RectHeight(ControlRect) - 2),
1637-
Point(RectWidth(ControlRect) - 3, RectHeight(ControlRect) div 2)],
1633+
NewPolygon(BidiControlRect, [Point(RectWidth(ControlRect) - MulDiv(3,Screen.PixelsPerInch,96), RectHeight(ControlRect) div 2),
1634+
Point(MulDiv(3,Screen.PixelsPerInch,96), MulDiv(2,Screen.PixelsPerInch,96)),
1635+
Point(MulDiv(3,Screen.PixelsPerInch,96), RectHeight(ControlRect) - MulDiv(2,Screen.PixelsPerInch,96)),
1636+
Point(RectWidth(ControlRect) - MulDiv(3,Screen.PixelsPerInch,96), RectHeight(ControlRect) div 2)],
16381637
ChromeTabs.GetOptions.Display.Tabs.Orientation)),
16391638
GetSymbolBrush,
16401639
GetSymbolPen);

0 commit comments

Comments
 (0)