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);
|
procedure SetHasSizeGrip(Value: Boolean);
|
||||||
protected
|
protected
|
||||||
procedure DoShow; override;
|
procedure DoShow; override;
|
||||||
|
procedure DoBeforeMonitorDpiChanged(OldDPI, NewDPI: Integer); override;
|
||||||
|
procedure DoAfterMonitorDpiChanged(OldDPI, NewDPI: Integer); override;
|
||||||
procedure FilterNodesByEdit(Edit: TButtonedEdit; Tree: TVirtualStringTree);
|
procedure FilterNodesByEdit(Edit: TButtonedEdit; Tree: TVirtualStringTree);
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
@ -71,6 +73,21 @@ begin
|
|||||||
end;
|
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);
|
class procedure TExtForm.FixControls(ParentComp: TComponent);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
|
@ -13,6 +13,7 @@ object MainForm: TMainForm
|
|||||||
OldCreateOrder = True
|
OldCreateOrder = True
|
||||||
Position = poDesigned
|
Position = poDesigned
|
||||||
ShowHint = True
|
ShowHint = True
|
||||||
|
OnBeforeMonitorDpiChanged = FormBeforeMonitorDpiChanged
|
||||||
OnCloseQuery = FormCloseQuery
|
OnCloseQuery = FormCloseQuery
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
OnDestroy = FormDestroy
|
OnDestroy = FormDestroy
|
||||||
|
@ -1155,6 +1155,8 @@ type
|
|||||||
procedure actSynMoveUpExecute(Sender: TObject);
|
procedure actSynMoveUpExecute(Sender: TObject);
|
||||||
procedure actCopyTabsToSpacesExecute(Sender: TObject);
|
procedure actCopyTabsToSpacesExecute(Sender: TObject);
|
||||||
procedure actCopyUpdate(Sender: TObject);
|
procedure actCopyUpdate(Sender: TObject);
|
||||||
|
procedure FormBeforeMonitorDpiChanged(Sender: TObject; OldDPI,
|
||||||
|
NewDPI: Integer);
|
||||||
private
|
private
|
||||||
// Executable file details
|
// Executable file details
|
||||||
FAppVerMajor: Integer;
|
FAppVerMajor: Integer;
|
||||||
@ -1702,6 +1704,17 @@ begin
|
|||||||
end;
|
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);
|
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
|
Reference in New Issue
Block a user