diff --git a/part/annotwindow.cpp b/part/annotwindow.cpp index e8e3ca225..1a9995cc8 100644 --- a/part/annotwindow.cpp +++ b/part/annotwindow.cpp @@ -295,7 +295,7 @@ bool AnnotWindow::eventFilter(QObject *o, QEvent *e) if (e->type() == QEvent::ShortcutOverride) { QKeyEvent *keyEvent = static_cast(e); if (keyEvent->key() == Qt::Key_Escape) { - close(); + e->accept(); return true; } } else if (e->type() == QEvent::KeyPress) { @@ -306,6 +306,9 @@ bool AnnotWindow::eventFilter(QObject *o, QEvent *e) } else if (keyEvent == QKeySequence::Redo) { m_document->redo(); return true; + } else if (keyEvent->key() == Qt::Key_Escape) { + close(); + return true; } } else if (e->type() == QEvent::FocusIn) { raise(); diff --git a/part/pageview.cpp b/part/pageview.cpp index 5ff49b25f..7d5f4db26 100644 --- a/part/pageview.cpp +++ b/part/pageview.cpp @@ -1972,7 +1972,12 @@ void PageView::resizeEvent(QResizeEvent *e) void PageView::keyPressEvent(QKeyEvent *e) { - e->accept(); + // Ignore ESC key press to send to shell.cpp + if (e->key() != Qt::Key_Escape) { + e->accept(); + } else { + e->ignore(); + } // if performing a selection or dyn zooming, disable keys handling if ((d->mouseSelecting && e->key() != Qt::Key_Escape) || (QApplication::mouseButtons() & Qt::MiddleButton)) diff --git a/shell/shell.cpp b/shell/shell.cpp index 2c9b8d9c7..ba7ea6e9c 100644 --- a/shell/shell.cpp +++ b/shell/shell.cpp @@ -160,6 +160,13 @@ void Shell::reloadAllXML() } } +void Shell::keyPressEvent(QKeyEvent *e) +{ + if (e->key() == Qt::Key_Escape && window()->isFullScreen()) { + setFullScreen(false); + } +} + bool Shell::eventFilter(QObject *obj, QEvent *event) { QDragMoveEvent *dmEvent = dynamic_cast(event); diff --git a/shell/shell.h b/shell/shell.h index 93f6907a0..4cc12fa98 100644 --- a/shell/shell.h +++ b/shell/shell.h @@ -114,6 +114,7 @@ protected: bool queryClose() override; void showEvent(QShowEvent *event) override; + void keyPressEvent(QKeyEvent *) override; private Q_SLOTS: void fileOpen();