This commit is contained in:
parent
2850476b14
commit
a09eca6cc9
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:bed1e65d878b963dbbb85129c206dc70db71461de29c19e95b6053c9c4fe7b26
|
||||
size 7374560
|
3
plasma-workspace-5.5.95.tar.xz
Normal file
3
plasma-workspace-5.5.95.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d433fb71b59742dc37c9ba5b5393da067af68018c1e96745e8449720b2f5a39a
|
||||
size 7000736
|
@ -18,9 +18,9 @@
|
||||
|
||||
%bcond_without lang
|
||||
Name: plasma5-workspace
|
||||
Version: 5.5.5.2
|
||||
Version: 5.5.95
|
||||
Release: 0
|
||||
%define plasma_version 5.5.5
|
||||
%define plasma_version 5.5.95
|
||||
Summary: The KDE Plasma Workspace Components
|
||||
License: GPL-2.0+
|
||||
Group: System/GUI/KDE
|
||||
@ -36,11 +36,8 @@ Patch1: create_kdehome.patch
|
||||
Patch2: fix-breeze-sddm-theme-with-many-users.patch
|
||||
# PATCH-FIX_OPENSUSE kuiserver5_qApp.patch -- kuiserver can't be a QCoreApplications as it uses QWidget
|
||||
Patch3: kuiserver5_qApp.patch
|
||||
# PATCH-FIX_OPENSUSE plasmashell-disable-windowclosing-on-logout.patch kde#349805 wbauer@tmo.at -- Prevent plasma from closing too early on logout resulting in an unusable desktop if the logout is cancelled
|
||||
Patch4: plasmashell-disable-windowclosing-on-logout.patch
|
||||
# PATCHES 100-200 and above are from upstream 5.5 branch
|
||||
# PATCHES 201-300 and above are from upstream master/5.6 branch
|
||||
Patch201: xembedsniproxy-avoid-ghost-entry.patch
|
||||
# PATCHES 100-200 and above are from upstream 5.6 branch
|
||||
# PATCHES 201-300 and above are from upstream master/5.7 branch
|
||||
BuildRequires: kf5-filesystem
|
||||
BuildRequires: update-desktop-files
|
||||
BuildRequires: cmake(KF5Activities) >= 5.15.0
|
||||
@ -209,8 +206,6 @@ workspace. Development files.
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch201 -p1
|
||||
|
||||
%build
|
||||
%cmake_kf5 -d build -- -DKDE4_COMMON_PAM_SERVICE=xdm -DKDE_DEFAULT_HOME=.kde4 -DCMAKE_INSTALL_LOCALEDIR=share/locale/kf5
|
||||
|
@ -1,52 +0,0 @@
|
||||
From: Andreas Hartmetz <ahartmetz@gmail.com>
|
||||
Date: Sat, 20 Feb 2016 20:01:42 +0000
|
||||
Subject: Disable fallback session management (requires Qt >= 5.6.0).
|
||||
X-Git-Url: http://quickgit.kde.org/?p=plasma-workspace.git&a=commitdiff&h=b5e814a7b2867914327c889794b1088027aaafd6
|
||||
---
|
||||
Disable fallback session management (requires Qt >= 5.6.0).
|
||||
|
||||
This prevents processes from dying when session logout is cancelled.
|
||||
Session restore is not an issue in these, it's disabled anyway.
|
||||
---
|
||||
|
||||
|
||||
--- a/klipper/main.cpp
|
||||
+++ b/klipper/main.cpp
|
||||
@@ -73,6 +73,9 @@
|
||||
|
||||
KAboutData::setApplicationData(aboutData);
|
||||
|
||||
+#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 1)
|
||||
+ QGuiApplication::setFallbackSessionManagementEnabled(false);
|
||||
+#endif
|
||||
auto disableSessionManagement = [](QSessionManager &sm) {
|
||||
sm.setRestartHint(QSessionManager::RestartNever);
|
||||
};
|
||||
|
||||
--- a/krunner/main.cpp
|
||||
+++ b/krunner/main.cpp
|
||||
@@ -66,6 +66,9 @@
|
||||
|
||||
KAboutData::setApplicationData(aboutData);
|
||||
|
||||
+#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 1)
|
||||
+ QGuiApplication::setFallbackSessionManagementEnabled(false);
|
||||
+#endif
|
||||
auto disableSessionManagement = [](QSessionManager &sm) {
|
||||
sm.setRestartHint(QSessionManager::RestartNever);
|
||||
};
|
||||
|
||||
diff --git a/shell/main.cpp b/shell/main.cpp
|
||||
index 49ea484..68cf9e9 100644
|
||||
--- a/shell/main.cpp
|
||||
+++ b/shell/main.cpp
|
||||
@@ -133,6 +133,9 @@ int main(int argc, char *argv[])
|
||||
};
|
||||
QObject::connect(&app, &QGuiApplication::commitDataRequest, disableSessionManagement);
|
||||
QObject::connect(&app, &QGuiApplication::saveStateRequest, disableSessionManagement);
|
||||
+#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 1)
|
||||
+ QGuiApplication::setFallbackSessionManagementEnabled(false);
|
||||
+#endif
|
||||
|
||||
ShellManager::s_crashes = cliOptions.value(crashOption).toInt();
|
||||
ShellManager::s_forceWindowed = cliOptions.isSet(winOption);
|
@ -1,95 +0,0 @@
|
||||
From: Weng Xuetian <wengxt@gmail.com>
|
||||
Date: Tue, 09 Feb 2016 02:56:59 +0000
|
||||
Subject: Check whether there is any BadWindow error before monitor the event
|
||||
X-Git-Url: http://quickgit.kde.org/?p=plasma-workspace.git&a=commitdiff&h=829158f830555c031755c6d4348e684779264342
|
||||
---
|
||||
Check whether there is any BadWindow error before monitor the event
|
||||
|
||||
The tray window itself may be destroyed before we start monitor the
|
||||
event of it. Check the returned error and skip this window if BadWindow
|
||||
happens.
|
||||
|
||||
FIXED-IN: 5.6.0
|
||||
BUG: 358719
|
||||
REVIEW: 127014
|
||||
---
|
||||
|
||||
|
||||
--- a/xembed-sni-proxy/fdoselectionmanager.cpp
|
||||
+++ b/xembed-sni-proxy/fdoselectionmanager.cpp
|
||||
@@ -83,7 +83,7 @@
|
||||
m_selectionOwner->claim(false);
|
||||
}
|
||||
|
||||
-void FdoSelectionManager::addDamageWatch(xcb_window_t client)
|
||||
+bool FdoSelectionManager::addDamageWatch(xcb_window_t client)
|
||||
{
|
||||
qCDebug(SNIPROXY) << "adding damage watch for " << client;
|
||||
|
||||
@@ -94,15 +94,27 @@
|
||||
m_damageWatches[client] = damageId;
|
||||
xcb_damage_create(c, damageId, client, XCB_DAMAGE_REPORT_LEVEL_NON_EMPTY);
|
||||
|
||||
- QScopedPointer<xcb_get_window_attributes_reply_t, QScopedPointerPodDeleter> attr(xcb_get_window_attributes_reply(c, attribsCookie, Q_NULLPTR));
|
||||
+ xcb_generic_error_t *error = Q_NULLPTR;
|
||||
+ QScopedPointer<xcb_get_window_attributes_reply_t, QScopedPointerPodDeleter> attr(xcb_get_window_attributes_reply(c, attribsCookie, &error));
|
||||
+ QScopedPointer<xcb_generic_error_t, QScopedPointerPodDeleter> getAttrError(error);
|
||||
uint32_t events = XCB_EVENT_MASK_STRUCTURE_NOTIFY;
|
||||
if (!attr.isNull()) {
|
||||
events = events | attr->your_event_mask;
|
||||
}
|
||||
+ // if window is already gone, there is no need to handle it.
|
||||
+ if (getAttrError && getAttrError->error_code == XCB_WINDOW) {
|
||||
+ return false;
|
||||
+ }
|
||||
// the event mask will not be removed again. We cannot track whether another component also needs STRUCTURE_NOTIFY (e.g. KWindowSystem).
|
||||
// if we would remove the event mask again, other areas will break.
|
||||
- xcb_change_window_attributes(c, client, XCB_CW_EVENT_MASK, &events);
|
||||
-
|
||||
+ const auto changeAttrCookie = xcb_change_window_attributes_checked(c, client, XCB_CW_EVENT_MASK, &events);
|
||||
+ QScopedPointer<xcb_generic_error_t, QScopedPointerPodDeleter> changeAttrError(xcb_request_check(c, changeAttrCookie));
|
||||
+ // if window is gone by this point, it will be catched by eventFilter, so no need to check later errors.
|
||||
+ if (changeAttrError && changeAttrError->error_code == XCB_WINDOW) {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ return true;
|
||||
}
|
||||
|
||||
bool FdoSelectionManager::nativeEventFilter(const QByteArray& eventType, void* message, long int* result)
|
||||
@@ -130,6 +142,11 @@
|
||||
if (m_proxies[unmappedWId]) {
|
||||
undock(unmappedWId);
|
||||
}
|
||||
+ } else if (responseType == XCB_DESTROY_NOTIFY) {
|
||||
+ const auto destroyedWId = reinterpret_cast<xcb_destroy_notify_event_t *>(ev)->window;
|
||||
+ if (m_proxies[destroyedWId]) {
|
||||
+ undock(destroyedWId);
|
||||
+ }
|
||||
} else if (responseType == m_damageEventBase + XCB_DAMAGE_NOTIFY) {
|
||||
const auto damagedWId = reinterpret_cast<xcb_damage_notify_event_t *>(ev)->drawable;
|
||||
const auto sniProx = m_proxies[damagedWId];
|
||||
@@ -153,8 +170,9 @@
|
||||
return;
|
||||
}
|
||||
|
||||
- addDamageWatch(winId);
|
||||
- m_proxies[winId] = new SNIProxy(winId, this);
|
||||
+ if (addDamageWatch(winId)) {
|
||||
+ m_proxies[winId] = new SNIProxy(winId, this);
|
||||
+ }
|
||||
}
|
||||
|
||||
void FdoSelectionManager::undock(xcb_window_t winId)
|
||||
|
||||
--- a/xembed-sni-proxy/fdoselectionmanager.h
|
||||
+++ b/xembed-sni-proxy/fdoselectionmanager.h
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
private:
|
||||
void init();
|
||||
- void addDamageWatch(xcb_window_t client);
|
||||
+ bool addDamageWatch(xcb_window_t client);
|
||||
void dock(xcb_window_t embed_win);
|
||||
void undock(xcb_window_t client);
|
||||
|
Loading…
x
Reference in New Issue
Block a user