From c78edfbac49852cec40efd5cbe73c341bc06c5ab Mon Sep 17 00:00:00 2001 From: Ahmad Samir Date: Thu, 29 Jul 2021 18:45:45 +0200 Subject: [PATCH] Fix MainWindow size when there is no saved size The very first time a user runs Konsole, where is no konsolerc file in $HOME, there is no saved size to restore, instead use the sizeHint(), which ideally will be the size set in the default profile (based on lines/columns setting). CCBUG: 437791 --- src/MainWindow.cpp | 21 +++++++++++++++------ src/MainWindow.h | 1 + 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index a4b36b61d..9b025c8fe 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -70,13 +70,22 @@ MainWindow::MainWindow() : _menuBarInitialVisibility(true), _menuBarInitialVisibilityApplied(false) { - if (!KonsoleSettings::saveGeometryOnExit()) { + KSharedConfigPtr konsoleConfig = KSharedConfig::openConfig(QStringLiteral("konsolerc")); + KConfigGroup cg = konsoleConfig->group(QStringLiteral("MainWindow")); + const bool isGroup = cg.exists(); + if (isGroup) { + const QString stateConfig = cg.readEntry(QStringLiteral("State")); + + // If "stateConfig" is empty then this is the very first run, + // i.e. no konsolerc file in $HOME + _isSavedUiState = !stateConfig.isEmpty(); + } + + if (isGroup && !KonsoleSettings::saveGeometryOnExit()) { // If we are not using the global Konsole save geometry on exit, // remove all geometry data from [MainWindow] in Konsolerc, so KWin will // manage it directly - KSharedConfigPtr konsoleConfig = KSharedConfig::openConfig(QStringLiteral("konsolerc")); - KConfigGroup group = konsoleConfig->group("MainWindow"); - QMap configEntries = group.entryMap(); + QMap configEntries = cg.entryMap(); QMapIterator i(configEntries); while (i.hasNext()) { @@ -93,7 +102,7 @@ MainWindow::MainWindow() : || i.key().contains(QLatin1String(" YPosition")) #endif ) { - group.deleteEntry(i.key()); + cg.deleteEntry(i.key()); } } } @@ -949,7 +958,7 @@ void MainWindow::showEvent(QShowEvent *event) _menuBarInitialVisibilityApplied = true; } - if (!KonsoleSettings::saveGeometryOnExit()) { + if (!_isSavedUiState || !KonsoleSettings::saveGeometryOnExit()) { // Delay resizing to here, so that the other parts of the UI // (ViewManager, TabbedViewContainer, TerminalDisplay ... etc) // have been created and TabbedViewContainer::sizeHint() returns diff --git a/src/MainWindow.h b/src/MainWindow.h index a80674012..876a81d71 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -200,6 +200,7 @@ private: bool _menuBarInitialVisibility; bool _menuBarInitialVisibilityApplied; bool _blurEnabled = false; + bool _isSavedUiState = false; }; } -- GitLab