]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Don't connect multiple times to the selectionChanged signal, otherwise the slot will...
authorDavid Faure <faure@kde.org>
Fri, 4 Jul 2008 22:26:05 +0000 (22:26 +0000)
committerDavid Faure <faure@kde.org>
Fri, 4 Jul 2008 22:26:05 +0000 (22:26 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=828216

src/selectionmanager.cpp
src/selectionmanager.h

index 47ef16d1a73271a026ad53b23b0af3b3e55ca035..26ea3626a983433e10b35e7f55107f4e3c06ffa0 100644 (file)
@@ -36,7 +36,8 @@
 SelectionManager::SelectionManager(QAbstractItemView* parent) :
     QObject(parent),
     m_view(parent),
 SelectionManager::SelectionManager(QAbstractItemView* parent) :
     QObject(parent),
     m_view(parent),
-    m_toggle(0)
+    m_toggle(0),
+    m_connected(false)
 {
     connect(parent, SIGNAL(entered(const QModelIndex&)),
             this, SLOT(slotEntered(const QModelIndex&)));
 {
     connect(parent, SIGNAL(entered(const QModelIndex&)),
             this, SLOT(slotEntered(const QModelIndex&)));
@@ -64,12 +65,15 @@ void SelectionManager::slotEntered(const QModelIndex& index)
     if (index.isValid() && (index.column() == DolphinModel::Name)) {
         m_toggle->setUrl(urlForIndex(index));
 
     if (index.isValid() && (index.column() == DolphinModel::Name)) {
         m_toggle->setUrl(urlForIndex(index));
 
-        connect(m_view->model(), SIGNAL(rowsRemoved(const QModelIndex&, int, int)),
-                this, SLOT(slotRowsRemoved(const QModelIndex&, int, int)));
-        connect(m_view->selectionModel(),
-                SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)),
-                this,
-                SLOT(slotSelectionChanged(const QItemSelection&, const QItemSelection&)));
+        if (!m_connected) {
+            connect(m_view->model(), SIGNAL(rowsRemoved(const QModelIndex&, int, int)),
+                    this, SLOT(slotRowsRemoved(const QModelIndex&, int, int)));
+            connect(m_view->selectionModel(),
+                    SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)),
+                    this,
+                    SLOT(slotSelectionChanged(const QItemSelection&, const QItemSelection&)));
+            m_connected = true;
+        }
 
         const QRect rect = m_view->visualRect(index);
 
 
         const QRect rect = m_view->visualRect(index);
 
@@ -89,6 +93,7 @@ void SelectionManager::slotEntered(const QModelIndex& index)
                    SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)),
                    this,
                    SLOT(slotSelectionChanged(const QItemSelection&, const QItemSelection&)));
                    SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)),
                    this,
                    SLOT(slotSelectionChanged(const QItemSelection&, const QItemSelection&)));
+        m_connected = false;
     }
 }
 
     }
 }
 
index 66a511a8726bd7b06ff6f9271977b109c1fe8608..0263e52821ec78af6c9d188761973c210827ed49 100644 (file)
@@ -70,6 +70,7 @@ private:
 private:
     QAbstractItemView* m_view;
     SelectionToggle* m_toggle;
 private:
     QAbstractItemView* m_view;
     SelectionToggle* m_toggle;
+    bool m_connected;
 };
 
 #endif
 };
 
 #endif