From f70e9ecbc483540d7d729b1eb85998e81b4bf4a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Simonis?= Date: Mon, 7 Dec 2020 15:34:14 +0100 Subject: [PATCH] build: Add compatibility layer for Qt versions (#1118) --- src/lib_gui/CMakeLists.txt | 2 ++ src/lib_gui/qt/element/code/QtCodeArea.cpp | 3 ++- src/lib_gui/qt/utility/compatibilityQt.cpp | 18 ++++++++++++++++++ src/lib_gui/qt/utility/compatibilityQt.h | 17 +++++++++++++++++ 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/lib_gui/qt/utility/compatibilityQt.cpp create mode 100644 src/lib_gui/qt/utility/compatibilityQt.h diff --git a/src/lib_gui/CMakeLists.txt b/src/lib_gui/CMakeLists.txt index 1171705e5..692049960 100644 --- a/src/lib_gui/CMakeLists.txt +++ b/src/lib_gui/CMakeLists.txt @@ -186,6 +186,8 @@ add_files( qt/project_wizard/QtProjectWizardWindow.cpp qt/project_wizard/QtProjectWizardWindow.h + qt/utility/compatibilityQt.cpp + qt/utility/compatibilityQt.h qt/utility/QtContextMenu.cpp qt/utility/QtContextMenu.h qt/utility/QtDeviceScaledPixmap.cpp diff --git a/src/lib_gui/qt/element/code/QtCodeArea.cpp b/src/lib_gui/qt/element/code/QtCodeArea.cpp index 6cac85334..5349b611b 100644 --- a/src/lib_gui/qt/element/code/QtCodeArea.cpp +++ b/src/lib_gui/qt/element/code/QtCodeArea.cpp @@ -31,6 +31,7 @@ #include "utility.h" #include "utilityApp.h" #include "utilityString.h" +#include "compatibilityQt.h" MouseWheelOverScrollbarFilter::MouseWheelOverScrollbarFilter() {} @@ -40,7 +41,7 @@ bool MouseWheelOverScrollbarFilter::eventFilter(QObject* obj, QEvent* event) if (event->type() == QEvent::Wheel && scrollbar) { QRect scrollbarArea(scrollbar->pos(), scrollbar->size()); - QPoint globalMousePos = dynamic_cast(event)->globalPos(); + QPoint globalMousePos = utility::compatibility::QWheelEvent_globalPos(*dynamic_cast(event)); QPoint localMousePos = scrollbar->mapFromGlobal(globalMousePos); // instead of "scrollbar->underMouse()" we need this check implemented here because diff --git a/src/lib_gui/qt/utility/compatibilityQt.cpp b/src/lib_gui/qt/utility/compatibilityQt.cpp new file mode 100644 index 000000000..b8822d5a3 --- /dev/null +++ b/src/lib_gui/qt/utility/compatibilityQt.cpp @@ -0,0 +1,18 @@ +#include "compatibilityQt.h" + +#include + +namespace utility +{ +namespace compatibility +{ +QPoint QWheelEvent_globalPos(const QWheelEvent& event) +{ +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + return event.globalPosition().toPoint(); +#else + return event.globalPos(); +#endif +} +} // namespace compatibility +} // namespace utility diff --git a/src/lib_gui/qt/utility/compatibilityQt.h b/src/lib_gui/qt/utility/compatibilityQt.h new file mode 100644 index 000000000..e3d997a42 --- /dev/null +++ b/src/lib_gui/qt/utility/compatibilityQt.h @@ -0,0 +1,17 @@ +#ifndef COMPATIBILITY_QT_H +#define COMPATIBILITY_QT_H + +#include + +namespace utility +{ +namespace compatibility +{ +// Extracts the global position from a QWheelEvent. +// This compatibility wrapper bridges Qt 5.12 and Qt 5.14 +QPoint QWheelEvent_globalPos(const QWheelEvent& event); + +} // namespace compatibility +} // namespace utility + +#endif // COMPATIBILITY_QT_H