@@ -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;
16971695end;
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);
17091699var
17101700 Factor: Extended;
1701+ NewDPI, OldDPI: Integer;
17111702begin
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
17191715procedure 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