Fix quit search mode issue, link to bug#93528.

This commit is contained in:
HeMeihong 2022-09-02 09:23:40 +00:00 committed by Yue-Lan
parent 96d64131c5
commit 2e0f8a4756
3 changed files with 27 additions and 16 deletions

View File

@ -317,8 +317,7 @@ void HeaderBar::searchButtonClicked()
{
m_search_mode = ! m_search_mode;
qDebug() << "searchButtonClicked" <<m_search_mode;
Q_EMIT this->updateSearchRequest(m_search_mode);
setSearchMode(m_search_mode);
m_window->updateSearchStatus(m_search_mode);
}
void HeaderBar::setSearchMode(bool mode)
@ -326,6 +325,10 @@ void HeaderBar::setSearchMode(bool mode)
m_search_button->setCheckable(mode);
m_search_button->setChecked(mode);
m_search_button->setDown(mode);
if (! mode)
m_search_button->setFocusPolicy(Qt::NoFocus);
else
m_search_button->setFocusPolicy(Qt::ClickFocus);
m_location_bar->switchEditMode(mode);
}

View File

@ -1011,6 +1011,14 @@ void MainWindow::goToUri(const QString &uri, bool addHistory, bool force)
}
}
//if in search mode and key is not null, need quit search mode, bug#93528
//清空搜索关键字时,不应该退出搜索状态,其他情况下,跳转非搜索路径,需要退出搜索
if (! m_is_clear_serach && m_is_search && ! uri.startsWith("search://"))
{
m_is_search = false;
m_header_bar->searchButtonClicked();
}
if (getCurrentUri() == realUri) {
if (!force) {
refresh();
@ -1018,14 +1026,6 @@ void MainWindow::goToUri(const QString &uri, bool addHistory, bool force)
}
}
//if in search mode and key is not null, need quit search mode
if (m_is_search && m_last_key != "" && !uri.startsWith("search://"))
{
m_tab->updateSearchBar(false);
m_is_search = false;
m_header_bar->startEdit(false);
}
locationChangeStart();
m_tab->goToUri(realUri, addHistory, force);
m_header_bar->setLocation(uri);
@ -1057,8 +1057,11 @@ void MainWindow::updateSearch(const QString &uri, const QString &key, bool updat
{
//qDebug() << "updateSearch needUpdate:" <<m_last_key<<m_last_search_path;
forceStopLoading();
if (m_last_key == "")
if (m_last_key == ""){
m_is_clear_serach = true;
goToUri(m_last_search_path, true);
m_is_clear_serach = false;
}
else
{
auto targetUri = Peony::SearchVFSUriParser::parseSearchKey(m_last_search_path,
@ -1522,11 +1525,7 @@ void MainWindow::initUI(const QString &uri)
maximizeOrRestore();
});
connect(views, &TabWidget::closeWindowRequest, this, &QWidget::close);
connect(m_header_bar, &HeaderBar::updateSearchRequest, this, [=](bool showSearch)
{
m_tab->updateSearchBar(showSearch);
m_is_search = showSearch;
});
//connect(m_header_bar, &HeaderBar::updateSearchRequest, this, &MainWindow::updateSearchStatus);
connect(m_header_bar, &HeaderBar::updateSearch, this, &MainWindow::updateSearch);
X11WindowManager *tabBarHandler = X11WindowManager::getInstance();
@ -1613,6 +1612,13 @@ void MainWindow::initUI(const QString &uri)
}
}
void MainWindow::updateSearchStatus(bool showSearch)
{
m_tab->updateSearchBar(showSearch);
m_header_bar->setSearchMode(showSearch);
m_is_search = showSearch;
}
void MainWindow::cleanTrash()
{
auto uris = getCurrentAllFileUris();

View File

@ -111,6 +111,7 @@ public Q_SLOTS:
void syncControlsLocation(const QString &uri);
void updateHeaderBar();
void updateWindowIcon();
void updateSearchStatus(bool showSearch);
void updateSearch(const QString &uri, const QString &key="", bool updateKey=false);
void createFolderOperation();
void goToUri(const QString &uri, bool addHistory = false, bool force = false);
@ -179,6 +180,7 @@ private:
bool m_is_draging = false;
bool m_is_search = false;
bool m_is_clear_serach = false;
bool m_filter_working = false;
bool m_should_save_side_bar_width = false;