From 616de244cc00daa87e057687ec01f83e5a6dd3f0 Mon Sep 17 00:00:00 2001 From: Colin Wallace Date: Tue, 28 Apr 2015 07:08:35 +0000 Subject: [PATCH 1/3] add ctrl+f shortcut to FileBrowser & default focus to filter widget when opened --- include/FileBrowser.h | 3 +++ src/gui/FileBrowser.cpp | 19 +++++++++++++++++++ src/gui/widgets/SideBar.cpp | 4 ++++ 3 files changed, 26 insertions(+) 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(); + } } } From fe3ca6aa76c700236625546d8d608459bc0c7df0 Mon Sep 17 00:00:00 2001 From: Colin Wallace Date: Wed, 29 Apr 2015 01:53:34 +0000 Subject: [PATCH 2/3] Use QKeySequence::Find in place of Ctrl+F --- src/gui/FileBrowser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/FileBrowser.cpp b/src/gui/FileBrowser.cpp index ca08e7685..cbcdfc81b 100644 --- a/src/gui/FileBrowser.cpp +++ b/src/gui/FileBrowser.cpp @@ -99,7 +99,7 @@ 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()) ); + QShortcut *filterFocusShortcut = new QShortcut( QKeySequence( QKeySequence::Find ), this, SLOT(giveFocusToFilter()) ); filterFocusShortcut->setContext(Qt::WidgetWithChildrenShortcut); reloadTree(); From c8a0d51a434898b3f2588cf887a663f821f909e7 Mon Sep 17 00:00:00 2001 From: Colin Wallace Date: Wed, 29 Apr 2015 02:06:44 +0000 Subject: [PATCH 3/3] revert changes that caused FileBrowsers to steal focus when opened --- include/FileBrowser.h | 1 - src/gui/FileBrowser.cpp | 6 ------ src/gui/widgets/SideBar.cpp | 4 ---- 3 files changed, 11 deletions(-) diff --git a/include/FileBrowser.h b/include/FileBrowser.h index 21e8e7aef..b2d1e83bf 100644 --- a/include/FileBrowser.h +++ b/include/FileBrowser.h @@ -64,7 +64,6 @@ private slots: 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 cbcdfc81b..e213d801c 100644 --- a/src/gui/FileBrowser.cpp +++ b/src/gui/FileBrowser.cpp @@ -268,12 +268,6 @@ void FileBrowser::giveFocusToFilter() } } -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 bdc7254b2..990bae7f6 100644 --- a/src/gui/widgets/SideBar.cpp +++ b/src/gui/widgets/SideBar.cpp @@ -158,10 +158,6 @@ void SideBar::toggleButton( QAbstractButton * button ) activeWidget->setVisible( button->isChecked() ); toolButton->setToolButtonStyle( button->isChecked() ? Qt::ToolButtonTextBesideIcon : Qt::ToolButtonIconOnly ); - if ( button->isChecked() ) - { - activeWidget->setFocus(); - } } }