diff --git a/app/browsemainpage.h b/app/browsemainpage.h --- a/app/browsemainpage.h +++ b/app/browsemainpage.h @@ -79,6 +79,9 @@ void slotUrlsDropped(const QUrl &destUrl, QDropEvent*); void showMenuForDroppedUrls(const QList&, const QUrl &destUrl); +protected: + bool eventFilter(QObject* watched, QEvent* event) Q_DECL_OVERRIDE; + private: BrowseMainPagePrivate* const d; }; diff --git a/app/browsemainpage.cpp b/app/browsemainpage.cpp --- a/app/browsemainpage.cpp +++ b/app/browsemainpage.cpp @@ -76,6 +76,7 @@ KSelectAction* mSortAction; QActionGroup* mThumbnailDetailsActionGroup; PreviewItemDelegate* mDelegate; + bool mFullScreenMode; void setupWidgets() { @@ -226,13 +227,16 @@ d->mDirModel = gvCore->sortedDirModel(); d->mDocumentCount = 0; d->mActionCollection = actionCollection; + d->mFullScreenMode = false; d->setupWidgets(); d->setupActions(actionCollection); d->setupFilterController(); d->setupDocumentCountConnections(); loadConfig(); updateSortOrder(); updateThumbnailDetails(); + + installEventFilter(this); } BrowseMainPage::~BrowseMainPage() @@ -272,6 +276,19 @@ GwenviewConfig::setThumbnailDetails(d->mDelegate->thumbnailDetails()); } +bool BrowseMainPage::eventFilter(QObject* watched, QEvent* event) +{ + if (d->mFullScreenMode && event->type() == QEvent::ShortcutOverride) { + const QKeyEvent* keyEvent = static_cast(event); + if (keyEvent->key() == Qt::Key_Escape) { + d->mActionCollection->action("leave_fullscreen")->trigger(); + event->accept(); + } + } + + return QWidget::eventFilter(watched, event); +} + ThumbnailView* BrowseMainPage::thumbnailView() const { return d->mThumbnailView; @@ -353,6 +370,7 @@ void BrowseMainPage::setFullScreenMode(bool fullScreen) { + d->mFullScreenMode = fullScreen; setPalette(d->mGvCore->palette(fullScreen ? GvCore::FullScreenPalette : GvCore::NormalPalette)); d->mThumbnailView->setPalette(d->mGvCore->palette(fullScreen ? GvCore::FullScreenViewPalette : GvCore::NormalViewPalette)); d->updateUrlNavigatorBackgroundColor();