diff --git a/core/utils.cpp b/core/utils.cpp index 7f1a7eac897c46a85f597404c539e080c310f8d7..a3558b066b11196a62910a6ec4a8b9d9196531a7 100644 --- a/core/utils.cpp +++ b/core/utils.cpp @@ -150,7 +150,11 @@ QSizeF Utils::realDpi(QWidget* widgetOnScreen) kDebug() << "Output is vertical, transposing DPI rect"; res.transpose(); } - return res; + if (qAbs(res.width() - res.height()) / qMin(res.height(), res.width()) < 0.05) { + return res; + } else { + kDebug() << "KScreen calculation returned a non square dpi." << res << ". Falling back"; + } } } else @@ -166,7 +170,22 @@ QSizeF Utils::realDpi(QWidget* widgetOnScreen) } // this is also fallback for LibKScreen branch if KScreen::Output // for particular widget was not found - return QSizeF(realDpiX(), realDpiY()); + QSizeF res = QSizeF(realDpiX(), realDpiY()); + if (qAbs(res.width() - res.height()) / qMin(res.height(), res.width()) < 0.05) { + return res; + } else { + kDebug() << "QDesktopWidget calculation returned a non square dpi." << res << ". Falling back"; + } + + res = QSizeF(dpiX(), dpiY()); + if (qAbs(res.width() - res.height()) / qMin(res.height(), res.width()) < 0.05) { + return res; + } else { + kDebug() << "QX11Info returned a non square dpi." << res << ". Falling back"; + } + + res = QSizeF(72, 72); + return res; } #elif defined(Q_WS_MAC)