diff --git a/articleview.cc b/articleview.cc
index 76c86861..c42fb72b 100644
--- a/articleview.cc
+++ b/articleview.cc
@@ -823,7 +823,9 @@ bool ArticleView::eventFilter( QObject * obj, QEvent * ev )
if ( keyEvent->key() == Qt::Key_Space ||
keyEvent->key() == Qt::Key_Backspace ||
keyEvent->key() == Qt::Key_Tab ||
- keyEvent->key() == Qt::Key_Backtab )
+ keyEvent->key() == Qt::Key_Backtab ||
+ keyEvent->key() == Qt::Key_Return ||
+ keyEvent->key() == Qt::Key_Enter )
return false; // Those key have other uses than to start typing
QString text = keyEvent->text();
diff --git a/fulltextsearch.ui b/fulltextsearch.ui
index 413a51cf..0d92d7bb 100644
--- a/fulltextsearch.ui
+++ b/fulltextsearch.ui
@@ -233,6 +233,18 @@
+
+ searchLine
+ headwordsView
+ checkBoxDistanceBetweenWords
+ distanceBetweenWords
+ searchMode
+ checkBoxArticlesPerDictionary
+ articlesPerDictionary
+ matchCase
+ OKButton
+ cancelButton
+
diff --git a/mainwindow.cc b/mainwindow.cc
index 523db35b..6fd71bda 100644
--- a/mainwindow.cc
+++ b/mainwindow.cc
@@ -92,6 +92,7 @@ MainWindow::MainWindow( Config::Class & cfg_ ):
toggleMenuBarAction( tr( "&Menubar" ), this ),
switchExpandModeAction( this ),
focusHeadwordsDlgAction( this ),
+ focusArticleViewAction( this ),
trayIconMenu( this ),
addTab( this ),
cfg( cfg_ ),
@@ -337,54 +338,21 @@ MainWindow::MainWindow( Config::Class & cfg_ ):
connect( trayIconMenu.addAction( tr( "&Quit" ) ), SIGNAL( triggered() ),
qApp, SLOT( quit() ) );
- escAction.setShortcutContext( Qt::WidgetWithChildrenShortcut );
+ addGlobalAction( &escAction, SLOT( handleEsc() ) );
escAction.setShortcut( QKeySequence( "Esc" ) );
- connect( &escAction, SIGNAL( triggered() ),
- this, SLOT( handleEsc() ) );
- focusTranslateLineAction.setShortcutContext( Qt::WidgetWithChildrenShortcut );
+ addGlobalAction( &focusTranslateLineAction, SLOT( focusTranslateLine() ) );
focusTranslateLineAction.setShortcuts( QList< QKeySequence >() <<
QKeySequence( "Alt+D" ) <<
QKeySequence( "Ctrl+L" ) );
- connect( &focusTranslateLineAction, SIGNAL( triggered() ),
- this, SLOT( focusTranslateLine() ) );
-
- focusHeadwordsDlgAction.setShortcutContext( Qt::WidgetWithChildrenShortcut );
+ addGlobalAction( &focusHeadwordsDlgAction, SLOT( focusHeadwordsDialog() ) );
focusHeadwordsDlgAction.setShortcut( QKeySequence( "Ctrl+D" ) );
- connect( &focusHeadwordsDlgAction, SIGNAL( triggered() ),
- this, SLOT( focusHeadwordsDialog() ) );
+ addGlobalAction( &focusArticleViewAction, SLOT( focusArticleView() ) );
+ focusArticleViewAction.setShortcut( QKeySequence( "Ctrl+N" ) );
- ui.centralWidget->addAction( &escAction );
- ui.dictsPane->addAction( &escAction );
- ui.searchPaneWidget->addAction( &escAction );
- ui.historyPane->addAction( &escAction );
- groupList->addAction( &escAction );
- translateBox->addAction( &escAction );
-
- ui.centralWidget->addAction( &focusTranslateLineAction );
- ui.dictsPane->addAction( &focusTranslateLineAction );
- ui.searchPaneWidget->addAction( &focusTranslateLineAction );
- ui.historyPane->addAction( &focusTranslateLineAction );
- groupList->addAction( &focusTranslateLineAction );
-
- ui.centralWidget->addAction( &focusHeadwordsDlgAction );
- ui.dictsPane->addAction( &focusHeadwordsDlgAction );
- ui.searchPaneWidget->addAction( &focusHeadwordsDlgAction );
- ui.historyPane->addAction( &focusHeadwordsDlgAction );
- groupList->addAction( &focusHeadwordsDlgAction );
- translateBox->addAction( &focusHeadwordsDlgAction );
-
- connect( ui.fullTextSearchAction, SIGNAL( triggered() ),
- this, SLOT( showFullTextSearchDialog() ) );
-
- ui.centralWidget->addAction( ui.fullTextSearchAction );
- ui.dictsPane->addAction( ui.fullTextSearchAction );
- ui.searchPaneWidget->addAction( ui.fullTextSearchAction );
- ui.historyPane->addAction( ui.fullTextSearchAction );
- groupList->addAction( ui.fullTextSearchAction );
- translateBox->addAction( ui.fullTextSearchAction );
+ addGlobalAction( ui.fullTextSearchAction, SLOT( showFullTextSearchDialog() ) );
addTabAction.setShortcutContext( Qt::WidgetWithChildrenShortcut );
addTabAction.setShortcut( QKeySequence( "Ctrl+T" ) );
@@ -969,6 +937,27 @@ MainWindow::~MainWindow()
commitData();
}
+void MainWindow::addGlobalAction( QAction * action, const char * slot )
+{
+ action->setShortcutContext( Qt::WidgetWithChildrenShortcut );
+ connect( action, SIGNAL( triggered() ), this, slot );
+
+ ui.centralWidget->addAction( action );
+ ui.dictsPane->addAction( action );
+ ui.searchPaneWidget->addAction( action );
+ ui.historyPane->addAction( action );
+ groupList->addAction( action );
+ translateBox->addAction( action );
+}
+
+void MainWindow::addGlobalActionsToDialog( QDialog * dialog )
+{
+ dialog->addAction( &focusTranslateLineAction );
+ dialog->addAction( &focusHeadwordsDlgAction );
+ dialog->addAction( &focusArticleViewAction );
+ dialog->addAction( ui.fullTextSearchAction );
+}
+
void MainWindow::commitData( QSessionManager & )
{
commitData();
@@ -3749,6 +3738,7 @@ void MainWindow::showDictionaryHeadwords( Dictionary::Class * dict )
if( headwordsDlg == 0 )
{
headwordsDlg = new DictHeadwords( this, cfg, dict );
+ addGlobalActionsToDialog( headwordsDlg );
connect( headwordsDlg, SIGNAL( headwordSelected( QString ) ),
this, SLOT( wordReceived( QString ) ) );
connect( headwordsDlg, SIGNAL( closeDialog() ),
@@ -3772,7 +3762,22 @@ void MainWindow::closeHeadwordsDialog()
void MainWindow::focusHeadwordsDialog()
{
if( headwordsDlg )
+ {
headwordsDlg->activateWindow();
+ if ( ftsDlg )
+ ftsDlg->lower();
+ }
+}
+
+void MainWindow::focusArticleView()
+{
+ ArticleView * view = getCurrentArticleView();
+ if ( view )
+ {
+ if ( !isActiveWindow() )
+ activateWindow();
+ view->focus();
+ }
}
void MainWindow::editDictionary( Dictionary::Class * dict )
@@ -3988,6 +3993,7 @@ void MainWindow::showFullTextSearchDialog()
if( !ftsDlg )
{
ftsDlg = new FTS::FullTextSearchDialog( this, cfg, dictionaries, groupInstances, ftsIndexing );
+ addGlobalActionsToDialog( ftsDlg );
connect( ftsDlg, SIGNAL( showTranslationFor( QString, QStringList, QRegExp ) ),
this, SLOT( showTranslationFor( QString, QStringList, QRegExp ) ) );
@@ -3995,16 +4001,20 @@ void MainWindow::showFullTextSearchDialog()
this, SLOT( closeFullTextSearchDialog() ), Qt::QueuedConnection );
connect( &configEvents, SIGNAL( mutedDictionariesChanged() ),
ftsDlg, SLOT( updateDictionaries() ) );
- }
- unsigned group = groupInstances.empty() ? 0
- : groupInstances[ groupList->currentIndex() ].id;
- ftsDlg->setCurrentGroup( group );
+ unsigned group = groupInstances.empty() ? 0
+ : groupInstances[ groupList->currentIndex() ].id;
+ ftsDlg->setCurrentGroup( group );
+ }
if( !ftsDlg ->isVisible() )
ftsDlg->show();
else
+ {
ftsDlg->activateWindow();
+ if ( headwordsDlg )
+ headwordsDlg->lower();
+ }
}
void MainWindow::closeFullTextSearchDialog()
diff --git a/mainwindow.hh b/mainwindow.hh
index 5fcdd1d3..f94bc270 100644
--- a/mainwindow.hh
+++ b/mainwindow.hh
@@ -76,6 +76,8 @@ public slots:
void setExpandMode( bool expand );
private:
+ void addGlobalAction( QAction * action, const char * slot );
+ void addGlobalActionsToDialog( QDialog * dialog );
void commitData();
bool commitDataCompleted;
@@ -108,7 +110,7 @@ private:
closeAllTabAction, closeRestTabAction,
switchToNextTabAction, switchToPrevTabAction,
showDictBarNamesAction, useSmallIconsInToolbarsAction, toggleMenuBarAction,
- switchExpandModeAction, focusHeadwordsDlgAction;
+ switchExpandModeAction, focusHeadwordsDlgAction, focusArticleViewAction;
QToolBar * navToolbar;
MainStatusBar * mainStatusBar;
QAction * navBack, * navForward, * navPronounce, * enableScanPopup;
@@ -418,6 +420,8 @@ private slots:
void focusHeadwordsDialog();
+ void focusArticleView();
+
void proxyAuthentication( const QNetworkProxy & proxy, QAuthenticator * authenticator );
void showFullTextSearchDialog();