diff options
| author | Peter Penz <[email protected]> | 2008-02-16 18:53:28 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2008-02-16 18:53:28 +0000 |
| commit | 9ff4e1f5bf2c37aaf63fb68124a6a42f8419d988 (patch) | |
| tree | d481840ac8be4666300f0f1a5fc8b894d1478279 /src/selectionmanager.cpp | |
| parent | 9cc43beb598c7f417f3d3b00928b7eb1e6c5df46 (diff) | |
update the selection-toggle (+/-) when the selection has been changed "outside" by the rubberband or e. g. "Select All"
svn path=/trunk/KDE/kdebase/apps/; revision=775828
Diffstat (limited to 'src/selectionmanager.cpp')
| -rw-r--r-- | src/selectionmanager.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/selectionmanager.cpp b/src/selectionmanager.cpp index fecbcbb72..248b4288d 100644 --- a/src/selectionmanager.cpp +++ b/src/selectionmanager.cpp @@ -66,6 +66,10 @@ void SelectionManager::slotEntered(const QModelIndex& 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&))); const QRect rect = m_view->visualRect(index); @@ -81,6 +85,10 @@ void SelectionManager::slotEntered(const QModelIndex& index) m_toggle->setUrl(KUrl()); disconnect(m_view->model(), SIGNAL(rowsRemoved(const QModelIndex&, int, int)), this, SLOT(slotRowsRemoved(const QModelIndex&, int, int))); + disconnect(m_view->selectionModel(), + SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), + this, + SLOT(slotSelectionChanged(const QItemSelection&, const QItemSelection&))); } } @@ -112,6 +120,24 @@ void SelectionManager::slotRowsRemoved(const QModelIndex& parent, int start, int m_toggle->hide(); } +void SelectionManager::slotSelectionChanged(const QItemSelection& selected, + const QItemSelection& deselected) +{ + // The selection has been changed outside the scope of the selection manager + // (e. g. by the rubberband or the "Select All" action). Take care updating + // the state of the toggle button. + const QModelIndex index = indexForUrl(m_toggle->url()); + if (index.isValid()) { + if (selected.contains(index)) { + m_toggle->setChecked(true); + } + + if (deselected.contains(index)) { + m_toggle->setChecked(false); + } + } +} + KUrl SelectionManager::urlForIndex(const QModelIndex& index) const { QAbstractProxyModel* proxyModel = static_cast<QAbstractProxyModel*>(m_view->model()); |
