Candidate session management fixes (kde#346768)

epel9
Rex Dieter 10 years ago
parent b99a0994bc
commit 169bf2eea9

@ -0,0 +1,76 @@
From bf8b2f52392c97bc6acf1a5b5aedb735b9380655 Mon Sep 17 00:00:00 2001
From: Stefan Becker <chemobejk@gmail.com>
Date: Sat, 9 May 2015 17:17:25 +0300
Subject: [PATCH] Forward QSessionManager to KConfigGui
Get a KConfig object that corresponds to the QSessionManager object that
is passed in with the saveStateRequest signal.
To make sure that the data is stored to disk we have to call sync() on
the object after the application has updated it. As the session manager
always emits a saveStateRequest after starting the application we need
to skip the sync() for the first request.
BUG: 346768
---
src/kmainwindow.cpp | 14 ++++++++++++--
src/kmainwindow_p.h | 3 +++
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/src/kmainwindow.cpp b/src/kmainwindow.cpp
index 15eecb7..95b01fd 100644
--- a/src/kmainwindow.cpp
+++ b/src/kmainwindow.cpp
@@ -119,6 +119,7 @@ bool DockResizeListener::eventFilter(QObject *watched, QEvent *event)
KMWSessionManager::KMWSessionManager()
{
+ initial = true;
connect(qApp, SIGNAL(saveStateRequest(QSessionManager&)),
this, SLOT(saveState(QSessionManager&)));
}
@@ -127,9 +128,10 @@ KMWSessionManager::~KMWSessionManager()
{
}
-bool KMWSessionManager::saveState(QSessionManager &)
+bool KMWSessionManager::saveState(QSessionManager &sm)
{
- KConfig *config = KConfigGui::sessionConfig();
+ KConfig *config = KConfigGui::sessionConfig(sm);
+
if (KMainWindow::memberList().count()) {
// According to Jochen Wilhelmy <digisnap@cs.tu-berlin.de>, this
// hook is useful for better document orientation
@@ -144,6 +146,14 @@ bool KMWSessionManager::saveState(QSessionManager &)
KConfigGroup group(config, "Number");
group.writeEntry("NumberOfWindows", n);
+
+ // The session manager emits a saveStateRequest after application start.
+ // Skip storing data collected from this initial request.
+ if (!initial) {
+ config->sync();
+ }
+ initial = false;
+
return true;
}
diff --git a/src/kmainwindow_p.h b/src/kmainwindow_p.h
index 8204ce1..2c90bf4 100644
--- a/src/kmainwindow_p.h
+++ b/src/kmainwindow_p.h
@@ -80,6 +80,9 @@ public:
KMWSessionManager();
~KMWSessionManager();
+private:
+ bool initial;
+
private Q_SLOTS:
bool saveState(QSessionManager &);
};
--
2.4.0

@ -2,7 +2,7 @@
Name: kf5-%{framework}
Version: 5.9.0
Release: 2%{?dist}
Release: 3%{?dist}
Summary: KDE Frameworks 5 Tier 3 solution for user-configurable main windows
License: GPLv2+ and LGPLv2+
@ -17,6 +17,11 @@ URL: http://www.kde.org
%endif
Source0: http://download.kde.org/%{stable}/frameworks/%{versiondir}/%{framework}-%{version}.tar.xz
## upstreamable patches
# Candidate session management fixes
# https://bugs.kde.org/show_bug.cgi?id=346768
Patch50: Forward-QSessionManager-to-KConfigGui.patch
BuildRequires: libX11-devel
BuildRequires: kf5-rpm-macros
@ -24,7 +29,9 @@ BuildRequires: extra-cmake-modules
BuildRequires: qt5-qtbase-devel
BuildRequires: kf5-kitemviews-devel
BuildRequires: kf5-kconfig-devel
# session mangement patch needs new api
BuildRequires: kf5-kconfig-devel >= 5.9.0-3
Requires: kf5-kconfig-core%{?_isa} >= 5.9.0-3
BuildRequires: kf5-kglobalaccel-devel
BuildRequires: kf5-kconfigwidgets-devel
BuildRequires: kf5-ki18n-devel
@ -58,16 +65,18 @@ developing applications that use %{name}.
%prep
%setup -q -n %{framework}-%{version}
%autosetup -n %{framework}-%{version} -p1
%build
mkdir -p %{_target_platform}
mkdir %{_target_platform}
pushd %{_target_platform}
%{cmake_kf5} ..
popd
make %{?_smp_mflags} -C %{_target_platform}
%install
make install/fast DESTDIR=%{buildroot} -C %{_target_platform}
%find_lang kxmlgui5_qt --with-qt --all-name
@ -92,6 +101,9 @@ make install/fast DESTDIR=%{buildroot} -C %{_target_platform}
%changelog
* Sat May 09 2015 Rex Dieter <rdieter@fedoraproject.org> 5.9.0-3
- Candidate session management fixes (kde#346768)
* Sat May 02 2015 Kalev Lember <kalevlember@gmail.com> - 5.9.0-2
- Rebuilt for GCC 5 C++11 ABI change

Loading…
Cancel
Save