aboutsummaryrefslogtreecommitdiff
path: root/src/gui/kwindowconfig.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/kwindowconfig.cpp')
-rw-r--r--src/gui/kwindowconfig.cpp22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/gui/kwindowconfig.cpp b/src/gui/kwindowconfig.cpp
index fcbbf196..5785bdbc 100644
--- a/src/gui/kwindowconfig.cpp
+++ b/src/gui/kwindowconfig.cpp
@@ -25,15 +25,19 @@ void KWindowConfig::saveWindowSize(const QWindow *window, KConfigGroup &config,
const QSize sizeToSave = window->size();
const bool isMaximized = window->windowState() & Qt::WindowMaximized;
- const QString screenMaximizedString(QStringLiteral("Window-Maximized %1x%2").arg(desk.height()).arg(desk.width()));
+ // Prepend the names of all connected screens so that we save the size
+ // on a per-screen-arrangement basis, since people often like to have
+ // windows laid out differently depending on their screen arrangements
+ const QString allScreens = allConnectedScreens();
+ const QString screenMaximizedString(allScreens + QStringLiteral(" Window-Maximized %1x%2").arg(desk.height()).arg(desk.width()));
// Save size only if window is not maximized
if (!isMaximized) {
const QSize defaultSize(window->property(s_initialSizePropertyName).toSize());
const QSize defaultScreenSize(window->property(s_initialScreenSizePropertyName).toSize());
const bool sizeValid = defaultSize.isValid() && defaultScreenSize.isValid();
if (!sizeValid || (sizeValid && (defaultSize != sizeToSave || defaultScreenSize != desk.size()))) {
- const QString wString(QStringLiteral("Width %1").arg(desk.width()));
- const QString hString(QStringLiteral("Height %1").arg(desk.height()));
+ const QString wString(allScreens + QStringLiteral(" Width %1").arg(desk.width()));
+ const QString hString(allScreens + QStringLiteral(" Height %1").arg(desk.height()));
config.writeEntry(wString, sizeToSave.width(), options);
config.writeEntry(hString, sizeToSave.height(), options);
}
@@ -54,9 +58,15 @@ void KWindowConfig::restoreWindowSize(QWindow *window, const KConfigGroup &confi
const QRect desk = window->screen()->geometry();
- const int width = config.readEntry(QStringLiteral("Width %1").arg(desk.width()), window->size().width());
- const int height = config.readEntry(QStringLiteral("Height %1").arg(desk.height()), window->size().height());
- const bool isMaximized = config.readEntry(QStringLiteral("Window-Maximized %1x%2").arg(desk.height()).arg(desk.width()), false);
+ // Fall back to non-per-screen-arrangement info if it's available but
+ // per-screen-arrangement information is not
+ const int fallbackWidth = config.readEntry(QStringLiteral("Width %1").arg(desk.width()), window->size().width());
+ const int fallbackHeight = config.readEntry(QStringLiteral("Height %1").arg(desk.height()), window->size().height());
+
+ const QString allScreens = allConnectedScreens();
+ const int width = config.readEntry(allScreens + QStringLiteral(" Width %1").arg(desk.width()), fallbackWidth);
+ const int height = config.readEntry(allScreens + QStringLiteral(" Height %1").arg(desk.height()), fallbackHeight);
+ const bool isMaximized = config.readEntry(allScreens + QStringLiteral(" Window-Maximized %1x%2").arg(desk.height()).arg(desk.width()), false);
// Check default size
const QSize defaultSize(window->property(s_initialSizePropertyName).toSize());