mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-06 18:24:26 +08:00
Issue #1503: reduce flicker when DPI setting for current screen is modified, or window gets moved to another screen
This commit is contained in:
@ -16,6 +16,8 @@ type
|
||||
procedure SetHasSizeGrip(Value: Boolean);
|
||||
protected
|
||||
procedure DoShow; override;
|
||||
procedure DoBeforeMonitorDpiChanged(OldDPI, NewDPI: Integer); override;
|
||||
procedure DoAfterMonitorDpiChanged(OldDPI, NewDPI: Integer); override;
|
||||
procedure FilterNodesByEdit(Edit: TButtonedEdit; Tree: TVirtualStringTree);
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
@ -71,6 +73,21 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TExtForm.DoBeforeMonitorDpiChanged(OldDPI, NewDPI: Integer);
|
||||
begin
|
||||
// Reduce flicker
|
||||
inherited;
|
||||
LockWindowUpdate(Handle);
|
||||
end;
|
||||
|
||||
procedure TExtForm.DoAfterMonitorDpiChanged(OldDPI, NewDPI: Integer);
|
||||
begin
|
||||
// Release window updates
|
||||
LockWindowUpdate(0);
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
||||
class procedure TExtForm.FixControls(ParentComp: TComponent);
|
||||
var
|
||||
i: Integer;
|
||||
|
@ -13,6 +13,7 @@ object MainForm: TMainForm
|
||||
OldCreateOrder = True
|
||||
Position = poDesigned
|
||||
ShowHint = True
|
||||
OnBeforeMonitorDpiChanged = FormBeforeMonitorDpiChanged
|
||||
OnCloseQuery = FormCloseQuery
|
||||
OnCreate = FormCreate
|
||||
OnDestroy = FormDestroy
|
||||
|
@ -1155,6 +1155,8 @@ type
|
||||
procedure actSynMoveUpExecute(Sender: TObject);
|
||||
procedure actCopyTabsToSpacesExecute(Sender: TObject);
|
||||
procedure actCopyUpdate(Sender: TObject);
|
||||
procedure FormBeforeMonitorDpiChanged(Sender: TObject; OldDPI,
|
||||
NewDPI: Integer);
|
||||
private
|
||||
// Executable file details
|
||||
FAppVerMajor: Integer;
|
||||
@ -1702,6 +1704,17 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.FormBeforeMonitorDpiChanged(Sender: TObject; OldDPI,
|
||||
NewDPI: Integer);
|
||||
var
|
||||
Factor: Extended;
|
||||
begin
|
||||
// Moving window to different screen or user changed DPI setting for current screen
|
||||
Factor := 100 / PixelsPerInch * NewDPI;
|
||||
LogSQL(f_('Scaling controls to screen DPI: %d%%', [Round(Factor)]));
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
||||
var
|
||||
i: Integer;
|
||||
|
Reference in New Issue
Block a user