Make it possible to select files like "a_b" using keyboard search

The problem was that pressing the Shift key would reset the keyboard
search.

BUG: 321286
FIXED-IN: 4.11.0
REVIEW: 111102
This commit is contained in:
Frank Reininghaus 2013-06-20 19:32:25 +02:00
parent 51f2bdaeab
commit 7496f007cc
2 changed files with 29 additions and 2 deletions

View file

@ -40,7 +40,7 @@ void KItemListKeyboardSearchManager::addKeys(const QString& keys)
{
const bool keyboardTimeWasValid = m_keyboardInputTime.isValid();
const qint64 keyboardInputTimeElapsed = m_keyboardInputTime.restart();
if (keyboardInputTimeElapsed > m_timeout || !keyboardTimeWasValid || keys.isEmpty()) {
if (keyboardInputTimeElapsed > m_timeout || !keyboardTimeWasValid) {
m_searchedString.clear();
}

View file

@ -31,6 +31,7 @@ private slots:
void testBasicKeyboardSearch();
void testAbortedKeyboardSearch();
void testRepeatedKeyPress();
void testPressShift();
private:
KItemListKeyboardSearchManager m_keyboardSearchManager;
@ -39,7 +40,7 @@ private:
void KItemListKeyboardSearchManagerTest::init()
{
// Make sure that the previous search string is cleared
m_keyboardSearchManager.addKeys("");
m_keyboardSearchManager.cancelSearch();
}
void KItemListKeyboardSearchManagerTest::testBasicKeyboardSearch()
@ -120,6 +121,32 @@ void KItemListKeyboardSearchManagerTest::testRepeatedKeyPress()
QCOMPARE(spy.takeFirst(), QList<QVariant>() << "pppq" << false);
}
void KItemListKeyboardSearchManagerTest::testPressShift()
{
// If the user presses Shift, i.e., to get a character like '_',
// KItemListController calls the addKeys(QString) method with an empty
// string. Make sure that this does not reset the current search. See
// https://bugs.kde.org/show_bug.cgi?id=321286
QSignalSpy spy(&m_keyboardSearchManager, SIGNAL(changeCurrentItem(QString,bool)));
// Simulate that the user enters "a_b".
m_keyboardSearchManager.addKeys("a");
QCOMPARE(spy.count(), 1);
QCOMPARE(spy.takeFirst(), QList<QVariant>() << "a" << true);
m_keyboardSearchManager.addKeys("");
QCOMPARE(spy.count(), 0);
m_keyboardSearchManager.addKeys("_");
QCOMPARE(spy.count(), 1);
QCOMPARE(spy.takeFirst(), QList<QVariant>() << "a_" << false);
m_keyboardSearchManager.addKeys("b");
QCOMPARE(spy.count(), 1);
QCOMPARE(spy.takeFirst(), QList<QVariant>() << "a_b" << false);
}
QTEST_KDEMAIN(KItemListKeyboardSearchManagerTest, NoGUI)
#include "kitemlistkeyboardsearchmanagertest.moc"