diff --git a/include/FileBrowser.h b/include/FileBrowser.h index f9bc34820..21e8e7aef 100644 --- a/include/FileBrowser.h +++ b/include/FileBrowser.h @@ -58,10 +58,13 @@ public slots: void filterItems( const QString & filter ); void reloadTree( void ); +private slots: + void giveFocusToFilter(); private: bool filterItems( QTreeWidgetItem * item, const QString & filter ); virtual void keyPressEvent( QKeyEvent * ke ); + void focusInEvent(QFocusEvent * event); void addItems( const QString & path ); diff --git a/src/gui/FileBrowser.cpp b/src/gui/FileBrowser.cpp index 9fffa9205..ca08e7685 100644 --- a/src/gui/FileBrowser.cpp +++ b/src/gui/FileBrowser.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include "FileBrowser.h" #include "BBTrackContainer.h" @@ -97,6 +98,10 @@ FileBrowser::FileBrowser(const QString & directories, const QString & filter, addContentWidget( ops ); + // Whenever the FileBrowser has focus, Ctrl+F should direct focus to its filter box. + QShortcut *filterFocusShortcut = new QShortcut( QKeySequence( Qt::CTRL + Qt::Key_F ), this, SLOT(giveFocusToFilter()) ); + filterFocusShortcut->setContext(Qt::WidgetWithChildrenShortcut); + reloadTree(); show(); } @@ -253,7 +258,21 @@ void FileBrowser::reloadTree( void ) filterItems( text ); } +void FileBrowser::giveFocusToFilter() +{ + if (!m_filterEdit->hasFocus()) + { + // give focus to filter text box and highlight its text for quick editing if not previously focused + m_filterEdit->setFocus(); + m_filterEdit->selectAll(); + } +} +void FileBrowser::focusInEvent(QFocusEvent * event) +{ + // when the FileBrowser is opened, direct focus to the filter for quick filtering + giveFocusToFilter(); +} void FileBrowser::addItems(const QString & path ) diff --git a/src/gui/widgets/SideBar.cpp b/src/gui/widgets/SideBar.cpp index 990bae7f6..bdc7254b2 100644 --- a/src/gui/widgets/SideBar.cpp +++ b/src/gui/widgets/SideBar.cpp @@ -158,6 +158,10 @@ void SideBar::toggleButton( QAbstractButton * button ) activeWidget->setVisible( button->isChecked() ); toolButton->setToolButtonStyle( button->isChecked() ? Qt::ToolButtonTextBesideIcon : Qt::ToolButtonIconOnly ); + if ( button->isChecked() ) + { + activeWidget->setFocus(); + } } }