From: Peter Penz Date: Tue, 17 Feb 2009 21:54:25 +0000 (+0000) Subject: Don't rely on the m_isHovered flag, explicitely check the left mouse button instead. X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/85dbeb2598c5e57235e4c8df0239ce8fe89dea6e?ds=sidebyside Don't rely on the m_isHovered flag, explicitely check the left mouse button instead. svn path=/trunk/KDE/kdebase/apps/; revision=927602 --- diff --git a/src/selectiontoggle.cpp b/src/selectiontoggle.cpp index 01cfed0f3..5c573811e 100644 --- a/src/selectiontoggle.cpp +++ b/src/selectiontoggle.cpp @@ -34,6 +34,7 @@ SelectionToggle::SelectionToggle(QWidget* parent) : QAbstractButton(parent), m_isHovered(false), + m_leftMouseButtonPressed(false), m_fadingValue(0), m_icon(), m_fadingTimeLine(0) @@ -96,7 +97,7 @@ bool SelectionToggle::eventFilter(QObject* obj, QEvent* event) break; case QEvent::MouseMove: - if (m_isHovered) { + if (m_leftMouseButtonPressed) { // Don't forward mouse move events to the viewport, // otherwise a rubberband selection will be shown when // clicking on the selection toggle and moving the mouse @@ -136,6 +137,18 @@ void SelectionToggle::leaveEvent(QEvent* event) update(); } +void SelectionToggle::mousePressEvent(QMouseEvent* event) +{ + QAbstractButton::mousePressEvent(event); + m_leftMouseButtonPressed = (event->buttons() & Qt::LeftButton); +} + +void SelectionToggle::mouseReleaseEvent(QMouseEvent* event) +{ + QAbstractButton::mouseReleaseEvent(event); + m_leftMouseButtonPressed = (event->buttons() & Qt::LeftButton); +} + void SelectionToggle::paintEvent(QPaintEvent* event) { QPainter painter(this); diff --git a/src/selectiontoggle.h b/src/selectiontoggle.h index e8f808562..705f9a6e6 100644 --- a/src/selectiontoggle.h +++ b/src/selectiontoggle.h @@ -60,6 +60,8 @@ protected: virtual bool eventFilter(QObject* obj, QEvent* event); virtual void enterEvent(QEvent* event); virtual void leaveEvent(QEvent* event); + virtual void mousePressEvent(QMouseEvent* event); + virtual void mouseReleaseEvent(QMouseEvent* event); virtual void paintEvent(QPaintEvent* event); private slots: @@ -78,6 +80,7 @@ private: private: bool m_isHovered; + bool m_leftMouseButtonPressed; int m_fadingValue; QPixmap m_icon; QTimeLine* m_fadingTimeLine;