diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 37277e4..92ce55c 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -110,7 +110,8 @@ void MainWindow::setupUi() void MainWindow::setupMenuBar() { - QMenu *editMenu = menuBar()->addMenu("&Edit"); + m_menuBar = menuBar(); + QMenu *editMenu = m_menuBar->addMenu("&Edit"); QAction *preferencesAction = editMenu->addAction("&Preferences"); connect(preferencesAction, &QAction::triggered, this, &MainWindow::onPreferencesTriggered); } @@ -265,49 +266,51 @@ void MainWindow::enterSingleImageMode(const QModelIndex &index) if (!index.isValid()) return; - m_wasFullScreen = isFullScreen(); - m_wasMaximized = isMaximized(); - m_imageView->setBackgroundColor(m_backgroundColorPreference); QString path = m_imageModel->filePath(index); m_imageView->setImage(path); m_stack->setCurrentWidget(m_imageView); m_imageView->setFocus(); + + if (m_imageViewWasFullScreen) { + setFullScreenMode(true); + m_imageViewWasFullScreen = false; + } } void MainWindow::leaveSingleImageMode() { if (isFullScreen()) { - if (m_wasFullScreen) { - showFullScreen(); - } - else if (m_wasMaximized) { - showMaximized(); - } - else { - showNormal(); - } + m_imageViewWasFullScreen = true; + setFullScreenMode(false); } m_stack->setCurrentWidget(m_browserPage); m_listView->setFocus(); } +void MainWindow::setFullScreenMode(bool fullScreen) +{ + if (fullScreen == isFullScreen()) + return; + + if (fullScreen) { + m_wasMaximized = isMaximized(); + m_menuBar->hide(); + showFullScreen(); + } else { + m_menuBar->show(); + if (m_wasMaximized) + showMaximized(); + else + showNormal(); + } +} + void MainWindow::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_F11 && m_stack->currentWidget() == m_imageView) { - if (isFullScreen()) - { - if (m_wasMaximized) { - showMaximized(); - } - else { - showNormal(); - } - } - else { - showFullScreen(); - } + setFullScreenMode(!isFullScreen()); event->accept(); return; } diff --git a/src/mainwindow.h b/src/mainwindow.h index 76d736e..eccee46 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -6,6 +6,7 @@ class QTreeView; class QListView; class QLabel; class QStackedWidget; +class QMenuBar; class QFileSystemModel; class QComboBox; class ImageModel; @@ -28,6 +29,7 @@ private: void onPreferencesTriggered(); void navigateToFolder(const QString &path); void selectPreviousFolderIfExists(); + void setFullScreenMode(bool fullScreen); void loadVisibleThumbnails(); void showPreview(const QModelIndex &index); void enterSingleImageMode(const QModelIndex &index); @@ -49,7 +51,7 @@ private: QString m_backgroundColorPreference = "black"; QWidget *m_browserPage; ImageViewWidget *m_imageView; - bool m_wasFullScreen = false; bool m_wasMaximized = false; + bool m_imageViewWasFullScreen = false; QString m_previousFolderPath; -}; + QMenuBar *m_menuBar = nullptr;}; \ No newline at end of file