From: Jean-Baptiste Mardelle Date: Thu, 5 Jan 2012 10:16:58 +0000 (+0100) Subject: Fix mouse click on monitor sometimes not working X-Git-Url: https://git.sesse.net/?p=kdenlive;a=commitdiff_plain;h=9acabb6cdea6ddac5f1481a2becf79e38aefa1c0 Fix mouse click on monitor sometimes not working --- diff --git a/src/monitor.cpp b/src/monitor.cpp index 891f0fd3..dccd537b 100644 --- a/src/monitor.cpp +++ b/src/monitor.cpp @@ -449,7 +449,7 @@ void Monitor::slotSetZoneEnd() void Monitor::mousePressEvent(QMouseEvent * event) { if (event->button() != Qt::RightButton) { - if (m_videoBox->underMouse() && (!m_overlay || !m_overlay->underMouse())) { + if (m_videoBox->geometry().contains(event->pos()) && (!m_overlay || !m_overlay->underMouse())) { m_dragStarted = true; m_DragStartPosition = event->pos(); } @@ -473,11 +473,11 @@ void Monitor::slotSwitchFullScreen() // virtual void Monitor::mouseReleaseEvent(QMouseEvent * event) { - if (m_dragStarted) { - if (m_videoBox->underMouse() && (!m_effectWidget || !m_effectWidget->isVisible())) { + if (m_dragStarted && event->button() != Qt::RightButton) { + if (m_videoBox->geometry().contains(event->pos()) && (!m_effectWidget || !m_effectWidget->isVisible())) { if (isActive()) slotPlay(); else activateMonitor(); - } else QWidget::mouseReleaseEvent(event); + } //else event->ignore(); //QWidget::mouseReleaseEvent(event); m_dragStarted = false; } } @@ -485,7 +485,6 @@ void Monitor::mouseReleaseEvent(QMouseEvent * event) // virtual void Monitor::mouseMoveEvent(QMouseEvent *event) { - // kDebug() << "// DRAG STARTED, MOUSE MOVED: "; if (!m_dragStarted || m_currentClip == NULL) return; if ((event->pos() - m_DragStartPosition).manhattanLength() @@ -547,6 +546,14 @@ void Monitor::wheelEvent(QWheelEvent * event) event->accept(); } +void Monitor::mouseDoubleClickEvent(QMouseEvent * event) +{ + if (!KdenliveSettings::openglmonitors()) { + m_videoBox->switchFullScreen(); + event->accept(); + } +} + void Monitor::slotMouseSeek(int eventDelta, bool fast) { if (fast) { @@ -1090,20 +1097,20 @@ Overlay::Overlay(QWidget* parent) : // virtual void Overlay::mouseReleaseEvent ( QMouseEvent * event ) { - event->accept(); + event->ignore(); } // virtual void Overlay::mousePressEvent( QMouseEvent * event ) { - event->accept(); + event->ignore(); } // virtual void Overlay::mouseDoubleClickEvent ( QMouseEvent * event ) { emit editMarker(); - event->accept(); + event->ignore(); } void Overlay::setOverlayText(const QString &text, bool isZone) @@ -1126,32 +1133,20 @@ VideoContainer::VideoContainer(Monitor* parent) : { setFrameShape(QFrame::NoFrame); setFocusPolicy(Qt::ClickFocus); + setEnabled(false); setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); } -// virtual -void VideoContainer::mousePressEvent(QMouseEvent * event) -{ - if (m_monitor->underMouse()) event->setAccepted(false); -} - // virtual void VideoContainer::mouseReleaseEvent(QMouseEvent * event) { - if (m_monitor->underMouse()) event->setAccepted(false); - else { + if (event->button() != Qt::RightButton) { if (m_monitor->isActive()) { m_monitor->slotPlay(); - event->accept(); } } } -// virtual -void VideoContainer::mouseMoveEvent(QMouseEvent *event) -{ - if (m_monitor->underMouse()) event->setAccepted(false); -} // virtual void VideoContainer::keyPressEvent(QKeyEvent *event) @@ -1166,19 +1161,15 @@ void VideoContainer::keyPressEvent(QKeyEvent *event) // virtual void VideoContainer::wheelEvent(QWheelEvent * event) { - if (m_monitor->underMouse()) event->setAccepted(false); - else { - m_monitor->slotMouseSeek(event->delta(), event->modifiers() == Qt::ControlModifier); - event->accept(); - } + m_monitor->slotMouseSeek(event->delta(), event->modifiers() == Qt::ControlModifier); + event->accept(); } void VideoContainer::mouseDoubleClickEvent(QMouseEvent * event) { - Q_UNUSED(event) - if (!KdenliveSettings::openglmonitors()) switchFullScreen(); + event->accept(); } void VideoContainer::switchFullScreen() @@ -1220,6 +1211,7 @@ void VideoContainer::switchFullScreen() setUpdatesEnabled(true); show(); #endif + setEnabled(true); } else { setUpdatesEnabled(false); flags ^= (Qt::Window | Qt::SubWindow); //clear the flags... @@ -1227,6 +1219,7 @@ void VideoContainer::switchFullScreen() setWindowFlags(flags); setWindowState(windowState() ^ Qt::WindowFullScreen); // reset setUpdatesEnabled(true); + setEnabled(false); show(); } m_monitor->pause(); diff --git a/src/monitor.h b/src/monitor.h index 518ba072..da39bc1a 100644 --- a/src/monitor.h +++ b/src/monitor.h @@ -56,9 +56,7 @@ public: protected: virtual void mouseDoubleClickEvent(QMouseEvent * event); - virtual void mousePressEvent(QMouseEvent * event); virtual void mouseReleaseEvent(QMouseEvent *event); - virtual void mouseMoveEvent(QMouseEvent *event); void keyPressEvent(QKeyEvent *event); virtual void wheelEvent(QWheelEvent * event); @@ -126,6 +124,7 @@ public: protected: virtual void mousePressEvent(QMouseEvent * event); virtual void mouseReleaseEvent(QMouseEvent * event); + virtual void mouseDoubleClickEvent(QMouseEvent * event); virtual void resizeEvent(QResizeEvent *event); /** @brief Move to another position on mouse wheel event.