From: David Faure Date: Fri, 4 Jul 2008 22:26:05 +0000 (+0000) Subject: Don't connect multiple times to the selectionChanged signal, otherwise the slot will... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/60ac42c0484095e29071b01098615e224e64d63a?ds=inline Don't connect multiple times to the selectionChanged signal, otherwise the slot will be called as many times as we entered a directory... svn path=/trunk/KDE/kdebase/apps/; revision=828216 --- diff --git a/src/selectionmanager.cpp b/src/selectionmanager.cpp index 47ef16d1a..26ea3626a 100644 --- a/src/selectionmanager.cpp +++ b/src/selectionmanager.cpp @@ -36,7 +36,8 @@ 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&))); @@ -64,12 +65,15 @@ void SelectionManager::slotEntered(const QModelIndex& 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); @@ -89,6 +93,7 @@ void SelectionManager::slotEntered(const QModelIndex& index) SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), this, SLOT(slotSelectionChanged(const QItemSelection&, const QItemSelection&))); + m_connected = false; } } diff --git a/src/selectionmanager.h b/src/selectionmanager.h index 66a511a87..0263e5282 100644 --- a/src/selectionmanager.h +++ b/src/selectionmanager.h @@ -70,6 +70,7 @@ private: private: QAbstractItemView* m_view; SelectionToggle* m_toggle; + bool m_connected; }; #endif