dvratil pushed to kf5-kxmlgui (f20). "Candidate session management fixes (kde#346768)"

notifications at fedoraproject.org notifications at fedoraproject.org
Mon May 11 10:08:14 UTC 2015


From 169bf2eea94c7b34fef4b4a60eb5081c7d9baef0 Mon Sep 17 00:00:00 2001
From: Rex Dieter <rdieter at math.unl.edu>
Date: Sat, 9 May 2015 12:11:43 -0500
Subject: Candidate session management fixes (kde#346768)


diff --git a/Forward-QSessionManager-to-KConfigGui.patch b/Forward-QSessionManager-to-KConfigGui.patch
new file mode 100644
index 0000000..f19d8a2
--- /dev/null
+++ b/Forward-QSessionManager-to-KConfigGui.patch
@@ -0,0 +1,76 @@
+From bf8b2f52392c97bc6acf1a5b5aedb735b9380655 Mon Sep 17 00:00:00 2001
+From: Stefan Becker <chemobejk at 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 at 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
+
diff --git a/kf5-kxmlgui.spec b/kf5-kxmlgui.spec
index 2295f52..cfce0dc 100644
--- a/kf5-kxmlgui.spec
+++ b/kf5-kxmlgui.spec
@@ -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 at fedoraproject.org> 5.9.0-3
+- Candidate session management fixes (kde#346768)
+
 * Sat May 02 2015 Kalev Lember <kalevlember at gmail.com> - 5.9.0-2
 - Rebuilt for GCC 5 C++11 ABI change
 
-- 
cgit v0.10.2


	http://pkgs.fedoraproject.org/cgit/kf5-kxmlgui.git/commit/?h=f20&id=169bf2eea94c7b34fef4b4a60eb5081c7d9baef0


More information about the scm-commits mailing list