diff options
| author | Peter Penz <[email protected]> | 2010-08-19 17:30:36 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2010-08-19 17:30:36 +0000 |
| commit | 0d54de1d650e16461033e9d7501d54955e4d1ef6 (patch) | |
| tree | 1cec45e850734971f3626802c0d6bb1f2d4b848d /src/views/selectionmanager.cpp | |
| parent | c7e28e71275085d27c827ecfaa81f8a5106d6206 (diff) | |
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.
BUG: 244304
FIXED-IN: 4.6.0
svn path=/trunk/KDE/kdebase/apps/; revision=1165577
Diffstat (limited to 'src/views/selectionmanager.cpp')
| -rw-r--r-- | src/views/selectionmanager.cpp | 15 |
1 files changed, 15 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(); |
