diff --git a/Modules/QtWidgets/include/QmitkRenderWindow.h b/Modules/QtWidgets/include/QmitkRenderWindow.h index fa8c988407..6a0f5bd4dd 100644 --- a/Modules/QtWidgets/include/QmitkRenderWindow.h +++ b/Modules/QtWidgets/include/QmitkRenderWindow.h @@ -89,20 +89,13 @@ public: void FullScreenMode(bool state); protected: + + // catch-all event handler + bool event(QEvent *e) override; // overloaded move handler void moveEvent(QMoveEvent *event) override; // overloaded show handler void showEvent(QShowEvent *event) override; - // overloaded mouse press handler - void mousePressEvent(QMouseEvent *event) override; - // overloaded mouse double-click handler - void mouseDoubleClickEvent(QMouseEvent *event) override; - // overloaded mouse move handler - void mouseMoveEvent(QMouseEvent *event) override; - // overloaded mouse release handler - void mouseReleaseEvent(QMouseEvent *event) override; - // overloaded key press handler - void keyPressEvent(QKeyEvent *event) override; // overloaded enter handler void enterEvent(QEvent *) override; // overloaded leave handler @@ -119,11 +112,6 @@ protected: /// pointers and emitting the NodesDropped signal. void dropEvent(QDropEvent *event) override; -#ifndef QT_NO_WHEELEVENT - // overload wheel mouse event - void wheelEvent(QWheelEvent *) override; -#endif - void AdjustRenderWindowMenuVisibility(const QPoint &pos); signals: diff --git a/Modules/QtWidgets/src/QmitkRenderWindow.cpp b/Modules/QtWidgets/src/QmitkRenderWindow.cpp index 8edf678a5d..3ab236f7f3 100644 --- a/Modules/QtWidgets/src/QmitkRenderWindow.cpp +++ b/Modules/QtWidgets/src/QmitkRenderWindow.cpp @@ -89,96 +89,58 @@ void QmitkRenderWindow::LayoutDesignListChanged(int layoutDesignIndex) m_MenuWidget->UpdateLayoutDesignList(layoutDesignIndex); } -void QmitkRenderWindow::mousePressEvent(QMouseEvent *me) -{ - // Get mouse position in vtk display coordinate system. me contains qt display infos... - mitk::Point2D displayPos = GetMousePosition(me); - - mitk::MousePressEvent::Pointer mPressEvent = - mitk::MousePressEvent::New(m_Renderer, displayPos, GetButtonState(me), GetModifiers(me), GetEventButton(me)); - - if (!this->HandleEvent(mPressEvent.GetPointer())) - { - QVTKOpenGLWidget::mousePressEvent(me); - } - - if (m_ResendQtEvents) - me->ignore(); -} -void QmitkRenderWindow::mouseDoubleClickEvent(QMouseEvent *me) +bool QmitkRenderWindow::event(QEvent* e) { - mitk::Point2D displayPos = GetMousePosition(me); - mitk::MouseDoubleClickEvent::Pointer mPressEvent = - mitk::MouseDoubleClickEvent::New(m_Renderer, displayPos, GetButtonState(me), GetModifiers(me), GetEventButton(me)); - - if (!this->HandleEvent(mPressEvent.GetPointer())) + mitk::InteractionEvent::Pointer mitkEvent = nullptr; + switch (e->type()) { - QVTKOpenGLWidget::mousePressEvent(me); - } - - if (m_ResendQtEvents) - me->ignore(); -} - -void QmitkRenderWindow::mouseReleaseEvent(QMouseEvent *me) -{ - mitk::Point2D displayPos = GetMousePosition(me); - mitk::MouseReleaseEvent::Pointer mReleaseEvent = - mitk::MouseReleaseEvent::New(m_Renderer, displayPos, GetButtonState(me), GetModifiers(me), GetEventButton(me)); - - if (!this->HandleEvent(mReleaseEvent.GetPointer())) - { - QVTKOpenGLWidget::mouseReleaseEvent(me); - } - - if (m_ResendQtEvents) - me->ignore(); -} - -void QmitkRenderWindow::mouseMoveEvent(QMouseEvent *me) -{ - mitk::Point2D displayPos = GetMousePosition(me); - - this->AdjustRenderWindowMenuVisibility(me->pos()); - - mitk::MouseMoveEvent::Pointer mMoveEvent = - mitk::MouseMoveEvent::New(m_Renderer, displayPos, GetButtonState(me), GetModifiers(me)); - - if (!this->HandleEvent(mMoveEvent.GetPointer())) - { - QVTKOpenGLWidget::mouseMoveEvent(me); - } -} - -void QmitkRenderWindow::wheelEvent(QWheelEvent *we) -{ - mitk::Point2D displayPos = GetMousePosition(we); - mitk::MouseWheelEvent::Pointer mWheelEvent = - mitk::MouseWheelEvent::New(m_Renderer, displayPos, GetButtonState(we), GetModifiers(we), GetDelta(we)); - - if (!this->HandleEvent(mWheelEvent.GetPointer())) - { - QVTKOpenGLWidget::wheelEvent(we); + case QEvent::MouseMove: + { + auto me = static_cast(e); + mitkEvent = mitk::MouseMoveEvent::New(m_Renderer, GetMousePosition(me), GetButtonState(me), GetModifiers(me)); + break; + } + case QEvent::MouseButtonPress: + { + auto me = static_cast(e); + mitkEvent = mitk::MousePressEvent::New( m_Renderer, GetMousePosition(me), GetButtonState(me), GetModifiers(me), GetEventButton(me)); + break; + } + case QEvent::MouseButtonRelease: + { + auto me = static_cast(e); + mitkEvent = mitk::MouseReleaseEvent::New( m_Renderer, GetMousePosition(me), GetButtonState(me), GetModifiers(me), GetEventButton(me)); + break; + } + case QEvent::MouseButtonDblClick: + { + auto me = static_cast(e); + mitkEvent = mitk::MouseDoubleClickEvent::New( m_Renderer, GetMousePosition(me), GetButtonState(me), GetModifiers(me), GetEventButton(me)); + break; + } + case QEvent::Wheel: + { + auto we = static_cast(e); + mitkEvent = mitk::MouseWheelEvent::New( m_Renderer, GetMousePosition(we), GetButtonState(we), GetModifiers(we), GetDelta(we)); + break; + } + case QEvent::KeyPress: + { + auto ke = static_cast(e); + mitkEvent = mitk::InteractionKeyEvent::New(m_Renderer, GetKeyLetter(ke), GetModifiers(ke)); + break; + } } - if (m_ResendQtEvents) - we->ignore(); -} - -void QmitkRenderWindow::keyPressEvent(QKeyEvent *ke) -{ - mitk::InteractionEvent::ModifierKeys modifiers = GetModifiers(ke); - std::string key = GetKeyLetter(ke); - - mitk::InteractionKeyEvent::Pointer keyEvent = mitk::InteractionKeyEvent::New(m_Renderer, key, modifiers); - if (!this->HandleEvent(keyEvent.GetPointer())) + if (mitkEvent != nullptr) { - QVTKOpenGLWidget::keyPressEvent(ke); + if (this->HandleEvent(mitkEvent.GetPointer())) { + return m_ResendQtEvents ? false : true; + } } - if (m_ResendQtEvents) - ke->ignore(); + return QVTKOpenGLWidget::event(e); } void QmitkRenderWindow::enterEvent(QEvent *e)