From 2dbd59f3a6e52003a731dfb00f8eaa4419e8e153 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Thu, 4 Aug 2016 09:02:03 +0200 Subject: [PATCH] Fixed #48. --- src/gui/dialogs/formmain.cpp | 37 +++++++++++++++++++++++++--------- src/miscellaneous/settings.cpp | 7 +++++-- src/miscellaneous/settings.h | 3 +++ 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/src/gui/dialogs/formmain.cpp b/src/gui/dialogs/formmain.cpp index b1bb958dd..8105df882 100755 --- a/src/gui/dialogs/formmain.cpp +++ b/src/gui/dialogs/formmain.cpp @@ -168,10 +168,16 @@ void FormMain::prepareMenus() { void FormMain::switchFullscreenMode() { if (!isFullScreen()) { + qApp->settings()->setValue(GROUP(GUI), GUI::IsMainWindowMaximizedBeforeFullscreen, isMaximized()); showFullScreen(); } else { - showNormal(); + if (qApp->settings()->value(GROUP(GUI), SETTING(GUI::IsMainWindowMaximizedBeforeFullscreen)).toBool()) { + setWindowState((windowState() & ~Qt::WindowFullScreen) | Qt::WindowMaximized); + } + else { + showNormal(); + } } } @@ -404,16 +410,19 @@ void FormMain::loadSize() { resize(settings->value(GROUP(GUI), GUI::MainWindowInitialSize, size()).toSize()); move(settings->value(GROUP(GUI), GUI::MainWindowInitialPosition, screen.center() - rect().center()).toPoint()); + if (settings->value(GROUP(GUI), SETTING(GUI::MainWindowStartsMaximized)).toBool()) { + setWindowState(windowState() | Qt::WindowMaximized); + + // We process events so that window is really maximized fast. + qApp->processEvents(); + } + // If user exited the application while in fullsreen mode, // then re-enable it now. if (settings->value(GROUP(GUI), SETTING(GUI::MainWindowStartsFullscreen)).toBool()) { m_ui->m_actionFullscreen->setChecked(true); } - if (settings->value(GROUP(GUI), SETTING(GUI::MainWindowStartsMaximized)).toBool()) { - setWindowState(windowState() | Qt::WindowMaximized); - } - // Hide the main menu if user wants it. m_ui->m_actionSwitchMainMenu->setChecked(settings->value(GROUP(GUI), SETTING(GUI::MainMenuVisible)).toBool()); @@ -429,18 +438,26 @@ void FormMain::loadSize() { void FormMain::saveSize() { Settings *settings = qApp->settings(); - const bool is_fullscreen = isFullScreen(); - const bool is_maximized = isMaximized(); + bool is_fullscreen = isFullScreen(); + bool is_maximized = false; if (is_fullscreen) { m_ui->m_actionFullscreen->setChecked(false); + + // We (process events to really) un-fullscreen, so that we can determine if window is really maximized. + qApp->processEvents(); } - if (is_maximized) { + if (isMaximized()) { + is_maximized = true; + + // Window is maximized, we store that fact to settings and unmaximize. + qApp->settings()->setValue(GROUP(GUI), GUI::IsMainWindowMaximizedBeforeFullscreen, isMaximized()); setWindowState((windowState() & ~Qt::WindowMaximized) | Qt::WindowActive); - } - qApp->processEvents(); + // We process events to really have window un-maximized. + qApp->processEvents(); + } settings->setValue(GROUP(GUI), GUI::MainMenuVisible, m_ui->m_actionSwitchMainMenu->isChecked()); settings->setValue(GROUP(GUI), GUI::MainWindowInitialPosition, pos()); diff --git a/src/miscellaneous/settings.cpp b/src/miscellaneous/settings.cpp index 385e80300..4574d1163 100755 --- a/src/miscellaneous/settings.cpp +++ b/src/miscellaneous/settings.cpp @@ -82,8 +82,11 @@ DVALUE(char*) GUI::FeedsToolbarActionsDef = "m_actionUpdateAllItems,m_ac DKEY GUI::StatusbarActions = "status_bar"; DVALUE(char*) GUI::StatusbarActionsDef = "m_lblProgressFeedsAction,m_barProgressFeedsAction,m_actionUpdateAllItems,m_actionUpdateSelectedItems,m_actionStopRunningItemsUpdate,m_actionFullscreen,m_actionQuit"; -DKEY GUI::MainWindowInitialSize = "window_size"; -DKEY GUI::MainWindowInitialPosition = "window_position"; +DKEY GUI::MainWindowInitialSize = "window_size"; +DKEY GUI::MainWindowInitialPosition = "window_position"; + +DKEY GUI::IsMainWindowMaximizedBeforeFullscreen = "is_window_maximized_before_fullscreen"; +DVALUE(bool) GUI::IsMainWindowMaximizedBeforeFullscreenDef = false; DKEY GUI::MainWindowStartsFullscreen = "start_in_fullscreen"; DVALUE(bool) GUI::MainWindowStartsFullscreenDef = false; diff --git a/src/miscellaneous/settings.h b/src/miscellaneous/settings.h index 9ca113b57..72cba062c 100755 --- a/src/miscellaneous/settings.h +++ b/src/miscellaneous/settings.h @@ -104,6 +104,9 @@ namespace GUI { KEY MainWindowInitialSize; KEY MainWindowInitialPosition; + KEY IsMainWindowMaximizedBeforeFullscreen; + VALUE(bool) IsMainWindowMaximizedBeforeFullscreenDef; + KEY MainWindowStartsFullscreen; VALUE(bool) MainWindowStartsFullscreenDef;