diff --git a/lcl/interfaces/qt5/qtwscontrols.pp b/lcl/interfaces/qt5/qtwscontrols.pp index 07616e913b..45d216cb61 100644 --- a/lcl/interfaces/qt5/qtwscontrols.pp +++ b/lcl/interfaces/qt5/qtwscontrols.pp @@ -73,6 +73,7 @@ type class procedure DestroyHandle(const AWinControl: TWinControl); override; class procedure Invalidate(const AWinControl: TWinControl); override; class procedure AddControl(const AControl: TControl); override; + class function GetCanvasScaleFactor(const AControl: TControl): Double; override; class function GetClientBounds(const AWincontrol: TWinControl; var ARect: TRect): Boolean; override; class function GetClientRect(const AWincontrol: TWinControl; var ARect: TRect): Boolean; override; class function GetDesignInteractive(const AWinControl: TWinControl; AClientPos: TPoint): Boolean; override; @@ -292,6 +293,15 @@ begin end; end; +class function TQtWSWinControl.GetCanvasScaleFactor(const AControl: TControl + ): Double; +begin + Result := 1; + if not WSCheckHandleAllocated(TWinControl(AControl), 'GetCanvasScaleFactor') then + Exit; + Result := QPaintDevice_devicePixelRatioF(QWidget_to_QPaintDevice(TQtWidget(TWinControl(AControl).Handle).Widget)); +end; + class function TQtWSWinControl.GetClientBounds(const AWincontrol: TWinControl; var ARect: TRect): Boolean; begin diff --git a/lcl/interfaces/qt6/qtwscontrols.pp b/lcl/interfaces/qt6/qtwscontrols.pp index 48786aeae9..51a92726ea 100644 --- a/lcl/interfaces/qt6/qtwscontrols.pp +++ b/lcl/interfaces/qt6/qtwscontrols.pp @@ -71,6 +71,7 @@ type class procedure DestroyHandle(const AWinControl: TWinControl); override; class procedure Invalidate(const AWinControl: TWinControl); override; class procedure AddControl(const AControl: TControl); override; + class function GetCanvasScaleFactor(const AControl: TControl): Double; override; class function GetClientBounds(const AWincontrol: TWinControl; var ARect: TRect): Boolean; override; class function GetClientRect(const AWincontrol: TWinControl; var ARect: TRect): Boolean; override; class function GetDesignInteractive(const AWinControl: TWinControl; AClientPos: TPoint): Boolean; override; @@ -290,6 +291,15 @@ begin end; end; +class function TQtWSWinControl.GetCanvasScaleFactor(const AControl: TControl + ): Double; +begin + Result := 1; + if not WSCheckHandleAllocated(TWinControl(AControl), 'GetCanvasScaleFactor') then + Exit; + Result := QPaintDevice_devicePixelRatioF(QWidget_to_QPaintDevice(TQtWidget(TWinControl(AControl).Handle).Widget)); +end; + class function TQtWSWinControl.GetClientBounds(const AWincontrol: TWinControl; var ARect: TRect): Boolean; begin