Skip to content

Commit 9eab28e

Browse files
committed
feat: upgrade DPI awareness to Per-Monitor v2, add TMainForm.FormChangeBounds as a replacement for the missing OnAfter/OnBeforeMonitorDpiChanged events
1 parent eb4a0b4 commit 9eab28e

File tree

3 files changed

+17
-19
lines changed

3 files changed

+17
-19
lines changed

heidisql.lpi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<ResourceType Value="res"/>
1212
<UseXPManifest Value="True"/>
1313
<XPManifest>
14-
<DpiAware Value="True"/>
14+
<DpiAware Value="True/PM_V2"/>
1515
<AnsiUTF8 Value="True"/>
1616
<TextName Value="HeidiSQL"/>
1717
<TextDesc Value="A lightweight, fast and flexible interface to MySQL"/>

source/main.lfm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ object MainForm: TMainForm
1010
Menu = MainMenu1
1111
Position = poMainFormCenter
1212
OnActivate = FormActivate
13+
OnChangeBounds = FormChangeBounds
1314
OnCloseQuery = FormCloseQuery
1415
OnCreate = FormCreate
1516
OnDestroy = FormDestroy

source/main.pas

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1192,11 +1192,8 @@ TMainForm = class(TExtForm)
11921192
procedure actSynMoveUpExecute(Sender: TObject);
11931193
procedure actCopyTabsToSpacesExecute(Sender: TObject);
11941194
procedure actCopyUpdate(Sender: TObject);
1195-
//procedure FormBeforeMonitorDpiChanged(Sender: TObject; OldDPI,
1196-
// NewDPI: Integer);
1195+
procedure FormChangeBounds(Sender: TObject);
11971196
procedure menuToggleAllClick(Sender: TObject);
1198-
//procedure FormAfterMonitorDpiChanged(Sender: TObject; OldDPI,
1199-
// NewDPI: Integer);
12001197
procedure menuCloseTabOnDblClickClick(Sender: TObject);
12011198
procedure TimerRefreshTimer(Sender: TObject);
12021199
procedure SynCompletionProposalChange(Sender: TObject);
@@ -1278,6 +1275,7 @@ TMainForm = class(TExtForm)
12781275
FMatchingBraceBackgroundColor: TColor;
12791276
//FHelpData: TSimpleKeyValuePairs;
12801277
FMainWinMaximized: Boolean;
1278+
FCurrentPixelsPerInch: Integer;
12811279

12821280
// Host subtabs backend structures
12831281
FHostListResults: TDBQueryList;
@@ -1697,23 +1695,21 @@ procedure TMainForm.StoreLastSessions;
16971695
end;
16981696

16991697

1700-
{procedure TMainForm.FormAfterMonitorDpiChanged(Sender: TObject; OldDPI,
1701-
NewDPI: Integer);
1702-
begin
1703-
// DPI settings change finished
1704-
FormResize(Sender);
1705-
end;}
1706-
1707-
{procedure TMainForm.FormBeforeMonitorDpiChanged(Sender: TObject; OldDPI,
1708-
NewDPI: Integer);
1698+
procedure TMainForm.FormChangeBounds(Sender: TObject);
17091699
var
17101700
Factor: Extended;
1701+
NewDPI, OldDPI: Integer;
17111702
begin
1712-
// Moving window to different screen or user changed DPI setting for current screen
1713-
Factor := 100 / PixelsPerInchDesigned * NewDPI;
1714-
LogSQL(f_('Scaling controls to screen DPI: %d%%', [Round(Factor)]));
1715-
//LogSQL('PixelsPerInchDesigned:'+PixelsPerInchDesigned.ToString+' OldDPI:'+OldDPI.ToString+' NewDPI:'+NewDPI.ToString);
1716-
end;}
1703+
NewDPI := Monitor.PixelsPerInch;
1704+
OldDPI := FCurrentPixelsPerInch;
1705+
if NewDPI <> OldDPI then begin
1706+
// Moving window to different screen or user changed DPI setting for current screen
1707+
FCurrentPixelsPerInch := NewDPI;
1708+
Factor := 100 / 96 * NewDPI;
1709+
LogSQL(f_('Scaling controls to screen DPI: %d%%', [Round(Factor)]));
1710+
//LogSQL('PixelsPerInchDesigned:'+PixelsPerInchDesigned.ToString+' OldDPI:'+OldDPI.ToString+' NewDPI:'+NewDPI.ToString);
1711+
end;
1712+
end;
17171713

17181714

17191715
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
@@ -2093,6 +2089,7 @@ procedure TMainForm.FormCreate(Sender: TObject);
20932089

20942090
FLastMouseButtonUpOnGrid := mbLeft;
20952091
FLastCaptionChange := 0;
2092+
FCurrentPixelsPerInch := 0;
20962093
FFormatSettings := DefaultFormatSettings;
20972094
FFormatSettings.DecimalSeparator := '.';
20982095
FFormatSettings.ThousandSeparator := ' ';;

0 commit comments

Comments
 (0)