diff --git a/krusader/Panel/krsearchbar.h b/krusader/Panel/krsearchbar.h --- a/krusader/Panel/krsearchbar.h +++ b/krusader/Panel/krsearchbar.h @@ -60,6 +60,12 @@ * Set another KrView, old one must not be deleted yet! */ void setView(KrView *view); + /** + * Hide the search bar if its mode was the search one. + * + * This function is normally used to hide bar after a user has quicksearched for something and found it. + */ + void hideBarIfSearching(); public slots: void showBar(SearchMode mode = MODE_DEFAULT); diff --git a/krusader/Panel/krsearchbar.cpp b/krusader/Panel/krsearchbar.cpp --- a/krusader/Panel/krsearchbar.cpp +++ b/krusader/Panel/krsearchbar.cpp @@ -106,6 +106,12 @@ _view->widget()->installEventFilter(this); } +void KrSearchBar::hideBarIfSearching() +{ + if (_currentMode == MODE_SEARCH) + hideBar(); +} + // #### public slots void KrSearchBar::showBar(SearchMode mode) @@ -311,6 +317,13 @@ hideBar(); return true; } + + case Qt::Key_Enter: + case Qt::Key_Return: { + hideBarIfSearching(); + return false; + } + case Qt::Key_Up: return handleUpDownKeyPress(true); case Qt::Key_Down: diff --git a/krusader/Panel/panelfunc.h b/krusader/Panel/panelfunc.h --- a/krusader/Panel/panelfunc.h +++ b/krusader/Panel/panelfunc.h @@ -23,6 +23,8 @@ #ifndef PANELFUNC_H #define PANELFUNC_H +#include "krsearchbar.h" + // QtCore #include #include diff --git a/krusader/Panel/panelfunc.cpp b/krusader/Panel/panelfunc.cpp --- a/krusader/Panel/panelfunc.cpp +++ b/krusader/Panel/panelfunc.cpp @@ -436,6 +436,8 @@ void ListPanelFunc::view() { + panel->searchBar->hideBarIfSearching(); + QString fileName = panel->getCurrentName(); if (fileName.isNull()) return; @@ -470,6 +472,7 @@ void ListPanelFunc::edit() { + panel->searchBar->hideBarIfSearching(); KFileItem tmp; if (fileToCreate.isEmpty()) { @@ -542,6 +545,8 @@ void ListPanelFunc::copyFiles(bool enqueue, bool move) { + panel->searchBar->hideBarIfSearching(); + const QStringList fileNames = panel->getSelectedNames(); if (fileNames.isEmpty()) return ; // safety @@ -615,6 +620,7 @@ // called from SLOTS to begin the renaming process void ListPanelFunc::rename() { + panel->searchBar->hideBarIfSearching(); panel->view->renameCurrentItem(); } @@ -673,6 +679,8 @@ void ListPanelFunc::deleteFiles(bool moveToTrash) { + panel->searchBar->hideBarIfSearching(); + if (files()->type() == FileSystem::FS_VIRTUAL && files()->isRoot()) { // only virtual deletion possible removeVirtualFiles();