From 1228518e6a1e4b6b7c4e9f5af650c6a04de22c63 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Sun, 25 Oct 2020 17:35:50 +0100 Subject: [PATCH] avoid Qt5/6 incompatbilities --- src/controls/QskEvent.cpp | 18 ++++++++++++++++++ src/controls/QskEvent.h | 5 +++++ src/controls/QskInputGrabber.cpp | 16 ++++++---------- src/controls/QskScrollView.cpp | 15 +++------------ 4 files changed, 32 insertions(+), 22 deletions(-) diff --git a/src/controls/QskEvent.cpp b/src/controls/QskEvent.cpp index a5f2756a..493b8727 100644 --- a/src/controls/QskEvent.cpp +++ b/src/controls/QskEvent.cpp @@ -63,6 +63,24 @@ QPointF qskMouseScenePosition( const QMouseEvent* event ) #endif } +QPointF qskWheelPosition( const QWheelEvent* event ) +{ +#if QT_VERSION >= QT_VERSION_CHECK( 5, 14, 0 ) + return event->position(); +#else + return event->posF(); +#endif +} + +QPointF qskHoverPosition( const QHoverEvent* event ) +{ +#if QT_VERSION >= QT_VERSION_CHECK( 5, 14, 0 ) + return event->position(); +#else + return event->posF(); +#endif +} + QskEvent::QskEvent( QskEvent::Type type ) : QEvent( static_cast< QEvent::Type >( type ) ) { diff --git a/src/controls/QskEvent.h b/src/controls/QskEvent.h index 0c3b4cb2..3fb8fea1 100644 --- a/src/controls/QskEvent.h +++ b/src/controls/QskEvent.h @@ -15,7 +15,10 @@ class QskGesture; class QskPopup; class QQuickWindow; class QQuickItem; + class QMouseEvent; +class QWheelEvent; +class QHoverEvent; class QSK_EXPORT QskEvent : public QEvent { @@ -123,5 +126,7 @@ QSK_EXPORT int qskFocusChainIncrement( const QEvent* ); // some helper to work around Qt version incompatibilities QSK_EXPORT QPointF qskMouseScenePosition( const QMouseEvent* ); QSK_EXPORT QPointF qskMousePosition( const QMouseEvent* ); +QSK_EXPORT QPointF qskWheelPosition( const QWheelEvent* ); +QSK_EXPORT QPointF qskHoverPosition( const QHoverEvent* ); #endif diff --git a/src/controls/QskInputGrabber.cpp b/src/controls/QskInputGrabber.cpp index 404dd567..e85d8922 100644 --- a/src/controls/QskInputGrabber.cpp +++ b/src/controls/QskInputGrabber.cpp @@ -5,6 +5,7 @@ #include "QskInputGrabber.h" #include "QskWindow.h" +#include "QskEvent.h" #include @@ -151,26 +152,21 @@ bool QskInputGrabber::event( QEvent* event ) case QEvent::MouseMove: case QEvent::MouseButtonRelease: { - const auto ev = static_cast< QMouseEvent* >( event ); - doBlock = isBlocking( ev->localPos() ); + const auto mouseEvent = static_cast< QMouseEvent* >( event ); + doBlock = isBlocking( qskMousePosition( mouseEvent ) ); break; } case QEvent::Wheel: { - const auto ev = static_cast< QWheelEvent* >( event ); - -#if QT_VERSION < 0x050e00 - doBlock = isBlocking( ev->posF() ); -#else - doBlock = isBlocking( ev->position() ); -#endif + const auto wheelEvent = static_cast< QWheelEvent* >( event ); + doBlock = isBlocking( qskWheelPosition( wheelEvent ) ); break; } case QEvent::HoverEnter: case QEvent::HoverLeave: { const auto ev = static_cast< QHoverEvent* >( event ); - doBlock = isBlocking( ev->posF() ); + doBlock = isBlocking( qskHoverPosition( ev ) ); break; } } diff --git a/src/controls/QskScrollView.cpp b/src/controls/QskScrollView.cpp index 3e3a3c10..3ad48b28 100644 --- a/src/controls/QskScrollView.cpp +++ b/src/controls/QskScrollView.cpp @@ -6,6 +6,7 @@ #include "QskScrollView.h" #include "QskAnimationHint.h" #include "QskBoxBorderMetrics.h" +#include "QskEvent.h" QSK_SUBCONTROL( QskScrollView, Panel ) QSK_SUBCONTROL( QskScrollView, Viewport ) @@ -17,15 +18,6 @@ QSK_SUBCONTROL( QskScrollView, VerticalScrollHandle ) QSK_SYSTEM_STATE( QskScrollView, VerticalHandlePressed, QskAspect::FirstSystemState << 1 ) QSK_SYSTEM_STATE( QskScrollView, HorizontalHandlePressed, QskAspect::FirstSystemState << 2 ) -static inline QPointF qskMousePosition( const QMouseEvent* event ) -{ -#if QT_VERSION >= QT_VERSION_CHECK( 6, 0, 0 ) - return event->position(); -#else - return event->localPos(); -#endif -} - class QskScrollView::PrivateData { public: @@ -221,12 +213,11 @@ QPointF QskScrollView::scrollOffset( const QWheelEvent* event ) const { QPointF offset; + const auto wheelPos = qskWheelPosition( event ); + #if QT_VERSION < 0x050e00 - const auto wheelPos = event->posF(); const auto wheelDelta = event->delta(); #else - const auto wheelPos = event->position(); - const QPoint delta = event->angleDelta(); const int wheelDelta = ( qAbs( delta.x() ) > qAbs( delta.y() ) ) ? delta.x() : delta.y();