From 759734beb4dd0a3d0e10ca779ede05b016edeae8 Mon Sep 17 00:00:00 2001 From: "Chris Djali (AnyOldName3)" Date: Wed, 10 Dec 2025 18:56:45 +0000 Subject: [PATCH] Improve Wayland fractional scaling --- extern/osgQt/include/osgQt/osgQOpenGLWidget.hpp | 2 ++ extern/osgQt/osgQOpenGLWidget.cpp | 14 ++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/extern/osgQt/include/osgQt/osgQOpenGLWidget.hpp b/extern/osgQt/include/osgQt/osgQOpenGLWidget.hpp index 8677b146f8..deb79469e9 100644 --- a/extern/osgQt/include/osgQt/osgQOpenGLWidget.hpp +++ b/extern/osgQt/include/osgQt/osgQOpenGLWidget.hpp @@ -63,6 +63,8 @@ protected: virtual void setDefaultDisplaySettings(); void createRenderer(); + + bool event(QEvent* e) override; }; #endif // OSGQOPENGLWIDGET_H diff --git a/extern/osgQt/osgQOpenGLWidget.cpp b/extern/osgQt/osgQOpenGLWidget.cpp index 28a510b296..a7de4b8089 100644 --- a/extern/osgQt/osgQOpenGLWidget.cpp +++ b/extern/osgQt/osgQOpenGLWidget.cpp @@ -48,10 +48,7 @@ void osgQOpenGLWidget::initializeGL() void osgQOpenGLWidget::resizeGL(int w, int h) { Q_ASSERT(m_renderer); - QScreen* screen = windowHandle() - && windowHandle()->screen() ? windowHandle()->screen() : - qApp->screens().front(); - m_renderer->resize(w * screen->devicePixelRatio(), h * screen->devicePixelRatio()); + m_renderer->resize(w * devicePixelRatio(), h * devicePixelRatio()); } void osgQOpenGLWidget::paintGL() @@ -94,3 +91,12 @@ void osgQOpenGLWidget::createRenderer() m_renderer->setupOSG(); } + +bool osgQOpenGLWidget::event(QEvent* e) +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 0) + if (m_renderer && e->type() == QEvent::DevicePixelRatioChange) + m_renderer->resize(width() * devicePixelRatio(), height() * devicePixelRatio()); +#endif + return QOpenGLWidget::event(e); +} \ No newline at end of file