]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Set the toggle invisible, if a mouse button has been pressed outside the toggle bound...
authorPeter Penz <peter.penz19@gmail.com>
Thu, 19 Aug 2010 17:30:36 +0000 (17:30 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Thu, 19 Aug 2010 17:30:36 +0000 (17:30 +0000)
BUG: 244304
FIXED-IN: 4.6.0

svn path=/trunk/KDE/kdebase/apps/; revision=1165577

src/views/selectionmanager.cpp
src/views/selectionmanager.h

index 0d3efae09b6aaa081d1bfd8f325cd29cb947f29a..ac5f1c939cb8a35d8973e80fe9f3c669a72755e6 100644 (file)
@@ -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();
index c2fcc88b4cf85924abc36daac338ebe3f4070d4e..85145a50b95e8ac0e051b3f7cf59de6b073254ec 100644 (file)
@@ -42,6 +42,7 @@ class SelectionManager : public QObject
 public:
     SelectionManager(QAbstractItemView* parent);
     virtual ~SelectionManager();
+    virtual bool eventFilter(QObject* watched, QEvent* event);
 
 public slots:
     /**