┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/views/selectionmanager.cpp15
-rw-r--r--src/views/selectionmanager.h1
2 files changed, 16 insertions, 0 deletions
diff --git a/src/views/selectionmanager.cpp b/src/views/selectionmanager.cpp
index 0d3efae09..ac5f1c939 100644
--- a/src/views/selectionmanager.cpp
+++ b/src/views/selectionmanager.cpp
@@ -49,12 +49,27 @@ SelectionManager::SelectionManager(QAbstractItemView* parent) :
m_toggle->hide();
connect(m_toggle, SIGNAL(clicked(bool)),
this, SLOT(setItemSelected(bool)));
+
+ m_view->viewport()->installEventFilter(this);
}
SelectionManager::~SelectionManager()
{
}
+bool SelectionManager::eventFilter(QObject* watched, QEvent* event)
+{
+ Q_ASSERT(watched == m_view->viewport());
+ if (event->type() == QEvent::MouseButtonPress) {
+ // Set the toggle invisible, if a mouse button has been pressed
+ // outside the toggle boundaries. This e.g. assures, that the toggle
+ // gets invisible during dragging items.
+ const QRect toggleBounds(m_toggle->mapToGlobal(QPoint(0, 0)), m_toggle->size());
+ m_toggle->setVisible(toggleBounds.contains(QCursor::pos()));
+ }
+ return QObject::eventFilter(watched, event);
+}
+
void SelectionManager::reset()
{
m_toggle->reset();
diff --git a/src/views/selectionmanager.h b/src/views/selectionmanager.h
index c2fcc88b4..85145a50b 100644
--- a/src/views/selectionmanager.h
+++ b/src/views/selectionmanager.h
@@ -42,6 +42,7 @@ class SelectionManager : public QObject
public:
SelectionManager(QAbstractItemView* parent);
virtual ~SelectionManager();
+ virtual bool eventFilter(QObject* watched, QEvent* event);
public slots:
/**