diff --git a/deflect/qt/EventReceiver.cpp b/deflect/qt/EventReceiver.cpp index 525dbef..fe2e9ed 100644 --- a/deflect/qt/EventReceiver.cpp +++ b/deflect/qt/EventReceiver.cpp @@ -87,10 +87,13 @@ void EventReceiver::_onEvent( int socket ) case Event::EVT_VIEW_SIZE_CHANGED: emit resized( deflectEvent.dx, deflectEvent.dy ); break; + case Event::EVT_WHEEL: + emit wheeled( deflectEvent.mouseX, deflectEvent.mouseY, + deflectEvent.dy ); + break; case Event::EVT_CLICK: case Event::EVT_DOUBLECLICK: - case Event::EVT_WHEEL: case Event::EVT_SWIPE_LEFT: case Event::EVT_SWIPE_RIGHT: case Event::EVT_SWIPE_UP: diff --git a/deflect/qt/EventReceiver.h b/deflect/qt/EventReceiver.h index b383e3f..b953955 100644 --- a/deflect/qt/EventReceiver.h +++ b/deflect/qt/EventReceiver.h @@ -63,6 +63,7 @@ class EventReceiver : public QObject void released( double x, double y ); void moved( double x, double y ); void resized( double x, double y ); + void wheeled( double x, double y, double dy ); private slots: void _onEvent( int socket ); diff --git a/deflect/qt/QmlStreamerImpl.cpp b/deflect/qt/QmlStreamerImpl.cpp index 230fb0a..62fcdf7 100644 --- a/deflect/qt/QmlStreamerImpl.cpp +++ b/deflect/qt/QmlStreamerImpl.cpp @@ -229,28 +229,36 @@ void QmlStreamer::Impl::_requestUpdate() void QmlStreamer::Impl::_onPressed( double x_, double y_ ) { - QPoint point( x_ * width(), y_ * height( )); + const QPoint point( x_ * width(), y_ * height( )); QMouseEvent* e = new QMouseEvent( QEvent::MouseButtonPress, point, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier ); - QCoreApplication::postEvent( this, e ); + QCoreApplication::postEvent( _quickWindow, e ); } void QmlStreamer::Impl::_onMoved( double x_, double y_ ) { - QPoint point( x_ * width(), y_ * height( )); + const QPoint point( x_ * width(), y_ * height( )); QMouseEvent* e = new QMouseEvent( QEvent::MouseMove, point, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier ); - QCoreApplication::postEvent( this, e ); + QCoreApplication::postEvent( _quickWindow, e ); } void QmlStreamer::Impl::_onReleased( double x_, double y_ ) { - QPoint point( x_ * width(), y_ * height( )); + const QPoint point( x_ * width(), y_ * height( )); QMouseEvent* e = new QMouseEvent( QEvent::MouseButtonRelease, point, Qt::LeftButton, Qt::NoButton, Qt::NoModifier ); - QCoreApplication::postEvent( this, e ); + QCoreApplication::postEvent( _quickWindow, e ); +} + +void QmlStreamer::Impl::_onWheeled( double x_, double y_, double deltaY ) +{ + const QPoint point( x_ * width(), y_ * height( )); + QWheelEvent* e = new QWheelEvent( point, deltaY, Qt::NoButton, + Qt::NoModifier, Qt::Vertical ); + QCoreApplication::postEvent( _quickWindow, e ); } void QmlStreamer::Impl::_onResized( double x_, double y_ ) @@ -341,6 +349,9 @@ bool QmlStreamer::Impl::_setupDeflectStream() this, &QmlStreamer::Impl::_onMoved ); connect( _eventHandler, &EventReceiver::resized, this, &QmlStreamer::Impl::_onResized ); + connect( _eventHandler, &EventReceiver::wheeled, + this, &QmlStreamer::Impl::_onWheeled ); + return true; } diff --git a/deflect/qt/QmlStreamerImpl.h b/deflect/qt/QmlStreamerImpl.h index 16cfcc3..211195d 100644 --- a/deflect/qt/QmlStreamerImpl.h +++ b/deflect/qt/QmlStreamerImpl.h @@ -93,6 +93,7 @@ private slots: void _onReleased( double, double ); void _onMoved( double, double ); void _onResized( double, double ); + void _onWheeled( double, double, double ); private: bool _setupDeflectStream(); diff --git a/doc/Changelog.md b/doc/Changelog.md index 69a6877..6f72699 100644 --- a/doc/Changelog.md +++ b/doc/Changelog.md @@ -3,7 +3,9 @@ Changelog {#Changelog} ## Deflect 0.9 (git master) -* [60](https://github.com/BlueBrain/Deflect/pull/60): +* [64](https://github.com/BlueBrain/Deflect/pull/64): + QmlStreamer: Fix event forwarding, implement wheel event support +* [60](https://github.com/BlueBrain/Deflect/pull/60): Improved DesktopStreamer: removed selection rectangle, editable list of stream hostnames