Issue #1503: reduce flicker when DPI setting for current screen is modified, or window gets moved to another screen

This commit is contained in:
Ansgar Becker
2021-12-29 11:31:18 +01:00
parent 149d16dceb
commit e8e264fa2a
3 changed files with 31 additions and 0 deletions

View File

@ -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;