┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dolphinviewcontainer.cpp6
-rw-r--r--src/dolphinviewcontainer.h1
-rw-r--r--src/search/dolphinsearchbox.cpp25
-rw-r--r--src/search/dolphinsearchbox.h5
4 files changed, 28 insertions, 9 deletions
diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp
index 63d5bd27b..66a9a116a 100644
--- a/src/dolphinviewcontainer.cpp
+++ b/src/dolphinviewcontainer.cpp
@@ -84,6 +84,7 @@ DolphinViewContainer::DolphinViewContainer(const QUrl &url, QWidget *parent)
m_searchBox = new DolphinSearchBox(this);
m_searchBox->hide();
connect(m_searchBox, &DolphinSearchBox::activated, this, &DolphinViewContainer::activate);
+ connect(m_searchBox, &DolphinSearchBox::openRequest, this, &DolphinViewContainer::openSearchBox);
connect(m_searchBox, &DolphinSearchBox::closeRequest, this, &DolphinViewContainer::closeSearchBox);
connect(m_searchBox, &DolphinSearchBox::searchRequest, this, &DolphinViewContainer::startSearching);
connect(m_searchBox, &DolphinSearchBox::focusViewRequest, this, &DolphinViewContainer::requestFocus);
@@ -891,6 +892,11 @@ void DolphinViewContainer::startSearching()
}
}
+void DolphinViewContainer::openSearchBox()
+{
+ setSearchModeEnabled(true);
+}
+
void DolphinViewContainer::closeSearchBox()
{
setSearchModeEnabled(false);
diff --git a/src/dolphinviewcontainer.h b/src/dolphinviewcontainer.h
index 0c8b184fe..52fd688f6 100644
--- a/src/dolphinviewcontainer.h
+++ b/src/dolphinviewcontainer.h
@@ -382,6 +382,7 @@ private Q_SLOTS:
* Gets the search URL from the searchbox and starts searching.
*/
void startSearching();
+ void openSearchBox();
void closeSearchBox();
/**
diff --git a/src/search/dolphinsearchbox.cpp b/src/search/dolphinsearchbox.cpp
index 9df417c4f..a09f25293 100644
--- a/src/search/dolphinsearchbox.cpp
+++ b/src/search/dolphinsearchbox.cpp
@@ -60,7 +60,9 @@ DolphinSearchBox::~DolphinSearchBox()
void DolphinSearchBox::setText(const QString &text)
{
- m_searchInput->setText(text);
+ if (m_searchInput->text() != text) {
+ m_searchInput->setText(text);
+ }
}
QString DolphinSearchBox::text() const
@@ -201,7 +203,7 @@ void DolphinSearchBox::keyReleaseEvent(QKeyEvent *event)
QWidget::keyReleaseEvent(event);
if (event->key() == Qt::Key_Escape) {
if (m_searchInput->text().isEmpty()) {
- Q_EMIT closeRequest();
+ emitCloseRequest();
} else {
m_searchInput->clear();
}
@@ -261,7 +263,11 @@ void DolphinSearchBox::slotConfigurationChanged()
void DolphinSearchBox::slotSearchTextChanged(const QString &text)
{
if (text.isEmpty()) {
- m_startSearchTimer->stop();
+ // Restore URL when search box is cleared by closing and reopening the box.
+ emitCloseRequest();
+ QTimer::singleShot(0, this, [this] {
+ Q_EMIT openRequest();
+ });
} else {
m_startSearchTimer->start();
}
@@ -270,6 +276,10 @@ void DolphinSearchBox::slotSearchTextChanged(const QString &text)
void DolphinSearchBox::slotReturnPressed()
{
+ if (m_searchInput->text().isEmpty()) {
+ return;
+ }
+
emitSearchRequest();
Q_EMIT focusViewRequest();
}
@@ -443,10 +453,10 @@ void DolphinSearchBox::init()
loadSettings();
// The searching should be started automatically after the user did not change
- // the text within one second
+ // the text for a while
m_startSearchTimer = new QTimer(this);
m_startSearchTimer->setSingleShot(true);
- m_startSearchTimer->setInterval(1000);
+ m_startSearchTimer->setInterval(500);
connect(m_startSearchTimer, &QTimer::timeout, this, &DolphinSearchBox::emitSearchRequest);
}
@@ -496,10 +506,7 @@ void DolphinSearchBox::updateFromQuery(const DolphinQuery &query)
setSearchPath(QUrl::fromLocalFile(QDir::homePath()));
}
- // If the input box has focus, do not update to avoid messing with user typing
- if (!m_searchInput->hasFocus()) {
- setText(query.text());
- }
+ setText(query.text());
if (query.hasContentSearch()) {
m_contentButton->setChecked(true);
diff --git a/src/search/dolphinsearchbox.h b/src/search/dolphinsearchbox.h
index 4ccb7ac10..b73c2899f 100644
--- a/src/search/dolphinsearchbox.h
+++ b/src/search/dolphinsearchbox.h
@@ -112,6 +112,11 @@ Q_SIGNALS:
void closeRequest();
/**
+ * Is emitted when the search box should be opened.
+ */
+ void openRequest();
+
+ /**
* Is emitted, if the searchbox has been activated by
* an user interaction
* @see DolphinSearchBox::setActive()