┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/kitemviews/kitemlistcontroller.cpp2
-rw-r--r--src/kitemviews/kitemlistselectionmanager.cpp9
-rw-r--r--src/kitemviews/private/kitemlistkeyboardsearchmanager.cpp10
-rw-r--r--src/kitemviews/private/kitemlistkeyboardsearchmanager.h4
4 files changed, 22 insertions, 3 deletions
diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp
index 1f93a6357..1c35072e5 100644
--- a/src/kitemviews/kitemlistcontroller.cpp
+++ b/src/kitemviews/kitemlistcontroller.cpp
@@ -60,6 +60,8 @@ KItemListController::KItemListController(KItemModelBase* model, KItemListView* v
{
connect(m_keyboardManager, SIGNAL(changeCurrentItem(QString,bool)),
this, SLOT(slotChangeCurrentItem(QString,bool)));
+ connect(m_selectionManager, SIGNAL(currentChanged(int,int)),
+ m_keyboardManager, SLOT(slotCurrentChanged(int,int)));
m_autoActivationTimer = new QTimer(this);
m_autoActivationTimer->setSingleShot(true);
diff --git a/src/kitemviews/kitemlistselectionmanager.cpp b/src/kitemviews/kitemlistselectionmanager.cpp
index 79c3370b4..383914df0 100644
--- a/src/kitemviews/kitemlistselectionmanager.cpp
+++ b/src/kitemviews/kitemlistselectionmanager.cpp
@@ -291,12 +291,15 @@ void KItemListSelectionManager::itemsRemoved(const KItemRangeList& itemRanges)
// Calling setCurrentItem() would trigger the selectionChanged signal, but we want to
// emit it only once in this function -> change the current item manually and emit currentChanged
m_currentItem = indexAfterRangesRemoving(m_currentItem, itemRanges);
- if (m_currentItem < 0) {
- m_currentItem = qMin(previousCurrent, m_model->count() - 1);
- }
if (m_currentItem != previousCurrent) {
emit currentChanged(m_currentItem, previousCurrent);
}
+
+ if (m_currentItem < 0) {
+ // The current item has been removed.
+ m_currentItem = qMin(previousCurrent, m_model->count() - 1);
+ emit currentChanged(m_currentItem, -1);
+ }
}
// Update the anchor item
diff --git a/src/kitemviews/private/kitemlistkeyboardsearchmanager.cpp b/src/kitemviews/private/kitemlistkeyboardsearchmanager.cpp
index 41ca34be4..da8f72b7e 100644
--- a/src/kitemviews/private/kitemlistkeyboardsearchmanager.cpp
+++ b/src/kitemviews/private/kitemlistkeyboardsearchmanager.cpp
@@ -78,3 +78,13 @@ void KItemListKeyboardSearchManager::cancelSearch()
{
m_searchedString.clear();
}
+
+void KItemListKeyboardSearchManager::slotCurrentChanged(int current, int previous)
+{
+ Q_UNUSED(previous);
+
+ if (current < 0) {
+ // The current item has been removed. We should cancel the search.
+ cancelSearch();
+ }
+}
diff --git a/src/kitemviews/private/kitemlistkeyboardsearchmanager.h b/src/kitemviews/private/kitemlistkeyboardsearchmanager.h
index 3f13ff445..3731548c9 100644
--- a/src/kitemviews/private/kitemlistkeyboardsearchmanager.h
+++ b/src/kitemviews/private/kitemlistkeyboardsearchmanager.h
@@ -60,6 +60,10 @@ public:
void cancelSearch();
+public slots:
+
+ void slotCurrentChanged(int current, int previous);
+
signals:
/**
* Is emitted if the current item should be changed corresponding