From 473723b24a04bfa37eb00292cad4e8acb067b93b Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Mon, 31 May 2021 16:20:43 +0200 Subject: Fix hidpi, fixes #167, fixes #275, fixes #425 --- 3rdparty/qtimgui/QtImGui.cpp | 4 ++++ gui/fpgaviewwidget.cc | 9 ++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/3rdparty/qtimgui/QtImGui.cpp b/3rdparty/qtimgui/QtImGui.cpp index 6f5b0480..2c0df89f 100644 --- a/3rdparty/qtimgui/QtImGui.cpp +++ b/3rdparty/qtimgui/QtImGui.cpp @@ -21,7 +21,11 @@ public: return w->size(); } qreal devicePixelRatio() const override { +#if defined(__APPLE__) return w->devicePixelRatio(); +#else + return w->devicePixelRatioF(); +#endif } bool isActive() const override { return w->isActiveWindow(); diff --git a/gui/fpgaviewwidget.cc b/gui/fpgaviewwidget.cc index 9c90e2c5..5d37a138 100644 --- a/gui/fpgaviewwidget.cc +++ b/gui/fpgaviewwidget.cc @@ -27,6 +27,7 @@ #include #include #include +#include #include "QtImGui.h" #include "imgui.h" @@ -287,7 +288,11 @@ QMatrix4x4 FPGAViewWidget::getProjection(void) void FPGAViewWidget::paintGL() { auto gl = QOpenGLContext::currentContext()->functions(); +#if defined(__APPLE__) const qreal retinaScale = devicePixelRatio(); +#else + const qreal retinaScale = devicePixelRatioF(); +#endif gl->glViewport(0, 0, width() * retinaScale, height() * retinaScale); gl->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -807,12 +812,10 @@ void FPGAViewWidget::mouseMoveEvent(QMouseEvent *event) // coordinates. QVector4D FPGAViewWidget::mouseToWorldCoordinates(int x, int y) { - const qreal retinaScale = devicePixelRatio(); - auto projection = getProjection(); QMatrix4x4 vp; - vp.viewport(0, 0, width() * retinaScale, height() * retinaScale); + vp.viewport(0, 0, width(), height()); QVector4D vec(x, y, 1, 1); vec = vp.inverted() * vec; -- cgit v1.2.3