From eb66b0d64098fe86785ea2c52b9e8e728b4252f6 Mon Sep 17 00:00:00 2001 From: Oleg Shparber Date: Mon, 6 Apr 2026 02:01:51 +0300 Subject: [PATCH] fix(browser): skip DPI zoom on Qt 6 (#1808) --- src/libs/browser/webview.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/libs/browser/webview.cpp b/src/libs/browser/webview.cpp index 91033117..35810ab5 100644 --- a/src/libs/browser/webview.cpp +++ b/src/libs/browser/webview.cpp @@ -28,8 +28,6 @@ #include #endif -#include - namespace Zeal::Browser { WebView::WebView(QWidget *parent) @@ -53,20 +51,22 @@ int WebView::zoomLevel() const void WebView::setZoomLevel(int level) { + level = qBound(0, level, static_cast(availableZoomLevels().size()) - 1); + if (level == m_zoomLevel) { return; } - level = qMax(0, level); - level = qMin(level, availableZoomLevels().size() - 1); - m_zoomLevel = level; - // Scale the webview relative to the DPI of the screen. - // Only scale up for HiDPI displays (>96 DPI), never scale down. - const double dpiZoomFactor = std::max(1.0, logicalDpiY() / 96.0); - +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + // Qt 5: setZoomFactor operates on physical pixels, so scale up for font DPI. + // See https://github.com/zealdocs/zeal/pull/1080. + const double dpiZoomFactor = qMax(1.0, logicalDpiY() / 96.0); setZoomFactor(availableZoomLevels().at(level) / 100.0 * dpiZoomFactor); +#else + setZoomFactor(availableZoomLevels().at(level) / 100.0); +#endif emit zoomLevelChanged(); }