┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/selectiontoggle.cpp15
-rw-r--r--src/selectiontoggle.h3
2 files changed, 17 insertions, 1 deletions
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;