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) @@ -313,6 +319,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.cpp b/krusader/Panel/panelfunc.cpp --- a/krusader/Panel/panelfunc.cpp +++ b/krusader/Panel/panelfunc.cpp @@ -56,6 +56,7 @@ #include "dirhistoryqueue.h" #include "krcalcspacedialog.h" #include "krerrordisplay.h" +#include "krsearchbar.h" #include "listpanel.h" #include "listpanelactions.h" #include "PanelView/krview.h" @@ -436,6 +437,8 @@ void ListPanelFunc::view() { + panel->searchBar->hideBarIfSearching(); + QString fileName = panel->getCurrentName(); if (fileName.isNull()) return; @@ -470,6 +473,7 @@ void ListPanelFunc::edit() { + panel->searchBar->hideBarIfSearching(); KFileItem tmp; if (fileToCreate.isEmpty()) { @@ -542,6 +546,8 @@ void ListPanelFunc::copyFiles(bool enqueue, bool move) { + panel->searchBar->hideBarIfSearching(); + const QStringList fileNames = panel->getSelectedNames(); if (fileNames.isEmpty()) return ; // safety @@ -615,6 +621,7 @@ // called from SLOTS to begin the renaming process void ListPanelFunc::rename() { + panel->searchBar->hideBarIfSearching(); panel->view->renameCurrentItem(); } @@ -673,6 +680,8 @@ void ListPanelFunc::deleteFiles(bool moveToTrash) { + panel->searchBar->hideBarIfSearching(); + const bool isVFS = files()->type() == FileSystem::FS_VIRTUAL; if (isVFS && files()->isRoot()) { // only virtual deletion possible