From a84fa1ce00998a07db44a5ebf04daf7d51d95711 Mon Sep 17 00:00:00 2001 From: Abdelrazak Younes Date: Thu, 10 Jan 2008 09:04:30 +0000 Subject: [PATCH] Transfer Tab and Shift-Tab keys special handling from GuiView::event() to GuiWorkArea::event(). Add some comments. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22477 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/qt4/GuiView.cpp | 29 ++++++++++++++--------------- src/frontends/qt4/GuiWorkArea.cpp | 13 +++++++++++++ 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/frontends/qt4/GuiView.cpp b/src/frontends/qt4/GuiView.cpp index e4a1ebb742..3db21f6795 100644 --- a/src/frontends/qt4/GuiView.cpp +++ b/src/frontends/qt4/GuiView.cpp @@ -574,24 +574,23 @@ bool GuiView::event(QEvent * e) } return QMainWindow::event(e); } + case QEvent::ShortcutOverride: { + if (d.current_work_area_) + // Nothing special to do. + return QMainWindow::event(e); + + // Allow processing of shortcuts that are allowed even when no Buffer + // is viewed. QKeyEvent * ke = static_cast(e); - if (!d.current_work_area_) { - theLyXFunc().setLyXView(this); - KeySymbol sym; - setKeySymbol(&sym, ke); - theLyXFunc().processKeySym(sym, q_key_state(ke->modifiers())); - e->accept(); - return true; - } - if (ke->key() == Qt::Key_Tab || ke->key() == Qt::Key_Backtab) { - KeySymbol sym; - setKeySymbol(&sym, ke); - d.current_work_area_->processKeySym(sym, NoModifier); - e->accept(); - return true; - } + theLyXFunc().setLyXView(this); + KeySymbol sym; + setKeySymbol(&sym, ke); + theLyXFunc().processKeySym(sym, q_key_state(ke->modifiers())); + e->accept(); + return true; } + default: return QMainWindow::event(e); } diff --git a/src/frontends/qt4/GuiWorkArea.cpp b/src/frontends/qt4/GuiWorkArea.cpp index 7fc2b66961..3d2fab30e1 100644 --- a/src/frontends/qt4/GuiWorkArea.cpp +++ b/src/frontends/qt4/GuiWorkArea.cpp @@ -510,6 +510,18 @@ bool GuiWorkArea::event(QEvent * e) e->accept(); return true; } + + case QEvent::ShortcutOverride: { + // We catch this event in order to catch the Tab or Shift+Tab key press + // which are otherwise reserved to focus switching between controls + // within a dialog. + QKeyEvent * ke = static_cast(e); + if (ke->key() != Qt::Key_Tab && ke->key() != Qt::Key_Backtab) + return QAbstractScrollArea::event(e); + keyPressEvent(ke); + return true; + } + default: return QAbstractScrollArea::event(e); } @@ -700,6 +712,7 @@ void GuiWorkArea::keyPressEvent(QKeyEvent * ev) KeySymbol sym; setKeySymbol(&sym, ev); processKeySym(sym, q_key_state(ev->modifiers())); + ev->accept(); } -- 2.39.5