Don't re-show the results list if more results arrive after the user has explicitly closed it. Also don't continue to show results when the user has backspaced to < 3 characters.

This commit is contained in:
David Sansome 2011-11-08 20:45:11 +00:00
parent f80ac47931
commit b3f6e46c23
3 changed files with 18 additions and 8 deletions

View File

@ -54,6 +54,7 @@ GlobalSearchWidget::GlobalSearchWidget(QWidget* parent)
engine_(NULL), engine_(NULL),
last_id_(0), last_id_(0),
order_arrived_counter_(0), order_arrived_counter_(0),
closed_since_search_began_(false),
front_model_(new QStandardItemModel(this)), front_model_(new QStandardItemModel(this)),
back_model_(new QStandardItemModel(this)), back_model_(new QStandardItemModel(this)),
current_model_(front_model_), current_model_(front_model_),
@ -218,9 +219,11 @@ void GlobalSearchWidget::showEvent(QShowEvent* e) {
void GlobalSearchWidget::TextEdited(const QString& text) { void GlobalSearchWidget::TextEdited(const QString& text) {
const QString trimmed_text = text.trimmed(); const QString trimmed_text = text.trimmed();
closed_since_search_began_ = false;
if (trimmed_text.length() < 3) { if (trimmed_text.length() < 3) {
RepositionPopup(); RepositionPopup();
last_id_ = -1;
return; return;
} }
@ -245,7 +248,9 @@ void GlobalSearchWidget::SwapModels() {
view_->setModel(front_proxy_); view_->setModel(front_proxy_);
connect(view_->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), connect(view_->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
SLOT(UpdateTooltip())); SLOT(UpdateTooltip()));
RepositionPopup();
if (!closed_since_search_began_)
RepositionPopup();
} }
void GlobalSearchWidget::AddResults(int id, const SearchProvider::ResultList& results) { void GlobalSearchWidget::AddResults(int id, const SearchProvider::ResultList& results) {
@ -305,7 +310,8 @@ void GlobalSearchWidget::AddResults(int id, const SearchProvider::ResultList& re
order_arrived_counter_ ++; order_arrived_counter_ ++;
RepositionPopup(); if (!closed_since_search_began_)
RepositionPopup();
} }
void GlobalSearchWidget::RepositionPopup() { void GlobalSearchWidget::RepositionPopup() {
@ -314,6 +320,8 @@ void GlobalSearchWidget::RepositionPopup() {
return; return;
} }
closed_since_search_began_ = false;
int h = view_->sizeHintForRow(0) * float(0.5 + int h = view_->sizeHintForRow(0) * float(0.5 +
qBound(kMinVisibleItems, front_model_->rowCount(), kMaxVisibleItems)); qBound(kMinVisibleItems, front_model_->rowCount(), kMaxVisibleItems));
int w = ui_->search->width(); int w = ui_->search->width();
@ -652,6 +660,7 @@ void GlobalSearchWidget::CombineResults(const QModelIndex& superior, const QMode
} }
void GlobalSearchWidget::HidePopup() { void GlobalSearchWidget::HidePopup() {
closed_since_search_began_ = true;
if (tooltip_) if (tooltip_)
tooltip_->hide(); tooltip_->hide();
view_->hide(); view_->hide();

View File

@ -127,6 +127,7 @@ private:
GlobalSearch* engine_; GlobalSearch* engine_;
int last_id_; int last_id_;
int order_arrived_counter_; int order_arrived_counter_;
bool closed_since_search_began_;
QMap<int, QModelIndex> art_requests_; QMap<int, QModelIndex> art_requests_;
QMap<int, QAction*> track_requests_; QMap<int, QAction*> track_requests_;

View File

@ -335,7 +335,7 @@ msgstr ""
msgid "Add action" msgid "Add action"
msgstr "" msgstr ""
#: globalsearch/globalsearchwidget.cpp:100 #: globalsearch/globalsearchwidget.cpp:101
msgid "Add and play now" msgid "Add and play now"
msgstr "" msgstr ""
@ -439,7 +439,7 @@ msgstr ""
msgid "Add to another playlist" msgid "Add to another playlist"
msgstr "" msgstr ""
#: globalsearch/globalsearchwidget.cpp:99 #: globalsearch/globalsearchwidget.cpp:100
#: ../bin/src/ui_albumcovermanager.h:152 #: ../bin/src/ui_albumcovermanager.h:152
msgid "Add to playlist" msgid "Add to playlist"
msgstr "" msgstr ""
@ -3095,7 +3095,7 @@ msgstr ""
msgid "Queue selected tracks" msgid "Queue selected tracks"
msgstr "" msgstr ""
#: globalsearch/globalsearchwidget.cpp:101 library/libraryview.cpp:251 #: globalsearch/globalsearchwidget.cpp:102 library/libraryview.cpp:251
#: ui/mainwindow.cpp:1338 #: ui/mainwindow.cpp:1338
msgid "Queue track" msgid "Queue track"
msgstr "" msgstr ""
@ -3234,11 +3234,11 @@ msgstr ""
msgid "Repeat track" msgid "Repeat track"
msgstr "" msgstr ""
#: globalsearch/globalsearchwidget.cpp:103 #: globalsearch/globalsearchwidget.cpp:104
msgid "Replace and play now" msgid "Replace and play now"
msgstr "" msgstr ""
#: devices/deviceview.cpp:218 globalsearch/globalsearchwidget.cpp:102 #: devices/deviceview.cpp:218 globalsearch/globalsearchwidget.cpp:103
#: internet/internetservice.cpp:63 library/libraryview.cpp:245 #: internet/internetservice.cpp:63 library/libraryview.cpp:245
#: widgets/fileviewlist.cpp:33 #: widgets/fileviewlist.cpp:33
msgid "Replace current playlist" msgid "Replace current playlist"
@ -4542,7 +4542,7 @@ msgstr ""
msgid "does not contain" msgid "does not contain"
msgstr "" msgstr ""
#: globalsearch/globalsearchwidget.cpp:699 #: globalsearch/globalsearchwidget.cpp:708
msgid "e.g." msgid "e.g."
msgstr "" msgstr ""