11
0

Accepting request 357760 from KDE:Frameworks5

- Added reset-the-model-on-list-always-shown-hide-change.patch
  (kde#357627, kde#352055)

- Update to 5.5.4:
  * Bugfix release
  * For more details please see:
    https://www.kde.org/announcements/plasma-5.5.4.php
- Drop xembedsniproxy-check-for-null-geometry.patch, upstreamed

OBS-URL: https://build.opensuse.org/request/show/357760
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/plasma5-workspace?expand=0&rev=33
This commit is contained in:
2016-02-11 11:35:56 +00:00
committed by Git OBS Bridge
6 changed files with 95 additions and 66 deletions

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4949b207fc8251b4be029619caba6346bf022041d7b14f9843b9c59503affa72
size 7383524

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f0a0eb82346514b0b3b00644cd9464c32152d48accee13ed322c500b3036097e
size 7391812

View File

@@ -1,3 +1,18 @@
-------------------------------------------------------------------
Thu Feb 4 16:20:20 UTC 2016 - hrvoje.senjan@gmail.com
- Added reset-the-model-on-list-always-shown-hide-change.patch
(kde#357627, kde#352055)
-------------------------------------------------------------------
Tue Jan 26 22:20:18 UTC 2016 - hrvoje.senjan@gmail.com
- Update to 5.5.4:
* Bugfix release
* For more details please see:
https://www.kde.org/announcements/plasma-5.5.4.php
- Drop xembedsniproxy-check-for-null-geometry.patch, upstreamed
-------------------------------------------------------------------
Wed Jan 20 10:50:47 UTC 2016 - wbauer@tmo.at

View File

@@ -18,9 +18,9 @@
%bcond_without lang
Name: plasma5-workspace
Version: 5.5.3
Version: 5.5.4
Release: 0
%define plasma_version 5.5.3
%define plasma_version 5.5.4
Summary: The KDE Plasma Workspace Components
License: GPL-2.0+
Group: System/GUI/KDE
@@ -35,8 +35,7 @@ Patch1: create_kdehome.patch
# PATCH-FIX_OPENSUSE fix-breeze-sddm-theme-with-many-users.patch alarrosa@suse.com -- Asks for user/password and hide the user list when there's a large number of users
Patch2: fix-breeze-sddm-theme-with-many-users.patch
# PATCHES 100-200 and above are from upstream 5.5 branch
# PATCH-FIX-UPSTREAM xembedsniproxy-check-for-null-geometry.patch boo#954623, kde#355463, kde#358227 -- fixes an xembedsniproxy crash
Patch100: xembedsniproxy-check-for-null-geometry.patch
Patch100: reset-the-model-on-list-always-shown-hide-change.patch
# PATCHES 201-300 and above are from upstream master/5.6 branch
BuildRequires: kf5-filesystem
BuildRequires: update-desktop-files

View File

@@ -0,0 +1,74 @@
From 42a3d8accd4e494d343954ddaa916a6c618d94f3 Mon Sep 17 00:00:00 2001
From: Marco Martin <notmart@gmail.com>
Date: Wed, 3 Feb 2016 15:36:31 +0100
Subject: [PATCH 1/1] reset the model on list always shown/hide change
something really wrong is going on on the proxymodel updates
the wrong item gets removed from the list.
it may be a wrong mapping between source and dest model
(doesn't seem so)
or may have been some misguided attempt by QML to recycle delegates
anyways resetting the model in some conditions even if expensive
seems to be the only way to workaround this.
Anyways this systray implementation is beyond any repair and
the rewritten version won't have to rely on so many models
and proxymodels
BUG:357627
CCBUG:352055
---
applets/systemtray/plugin/tasksproxymodel.cpp | 13 ++++++++++---
applets/systemtray/plugin/tasksproxymodel.h | 5 ++++-
2 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/applets/systemtray/plugin/tasksproxymodel.cpp b/applets/systemtray/plugin/tasksproxymodel.cpp
index 632e84b..b93b05e 100644
--- a/applets/systemtray/plugin/tasksproxymodel.cpp
+++ b/applets/systemtray/plugin/tasksproxymodel.cpp
@@ -50,9 +50,9 @@ void TasksProxyModel::setHost(Host *host)
connect(m_host, &Host::taskStatusChanged, this, &TasksProxyModel::invalidateFilter);
connect(m_host, &Host::shownCategoriesChanged, this, &TasksProxyModel::invalidateFilter);
- connect(m_host, &Host::showAllItemsChanged, this, &TasksProxyModel::invalidateFilter);
- connect(m_host, &Host::forcedHiddenItemsChanged, this, &TasksProxyModel::invalidateFilter);
- connect(m_host, &Host::forcedShownItemsChanged, this, &TasksProxyModel::invalidateFilter);
+ connect(m_host, &Host::showAllItemsChanged, this, &TasksProxyModel::reset);
+ connect(m_host, &Host::forcedHiddenItemsChanged, this, &TasksProxyModel::reset);
+ connect(m_host, &Host::forcedShownItemsChanged, this, &TasksProxyModel::reset);
}
invalidateFilter();
@@ -74,6 +74,13 @@ void TasksProxyModel::setCategory(Category category)
}
}
+void TasksProxyModel::reset()
+{
+ beginResetModel();
+ invalidateFilter();
+ endResetModel();
+}
+
bool TasksProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
{
Q_UNUSED(sourceParent);
diff --git a/applets/systemtray/plugin/tasksproxymodel.h b/applets/systemtray/plugin/tasksproxymodel.h
index 70e723a..5799d62 100644
--- a/applets/systemtray/plugin/tasksproxymodel.h
+++ b/applets/systemtray/plugin/tasksproxymodel.h
@@ -56,7 +56,10 @@ public:
virtual bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
-signals:
+private Q_SLOTS:
+ void reset();
+
+Q_SIGNALS:
void hostChanged();
void categoryChanged();
void countChanged();
--
2.6.2

View File

@@ -1,59 +0,0 @@
From: David Edmundson <kde@davidedmundson.co.uk>
Date: Mon, 21 Dec 2015 23:09:50 +0000
Subject: Check for null geometry in client window
X-Git-Url: http://quickgit.kde.org/?p=plasma-workspace.git&a=commitdiff&h=6232362cca7021e5b436d267e07f9d6875a20a4c
---
Check for null geometry in client window
BUG: 355463
---
--- a/xembed-sni-proxy/sniproxy.cpp
+++ b/xembed-sni-proxy/sniproxy.cpp
@@ -158,23 +158,30 @@
windowMoveConfigVals);
+ QSize clientWindowSize;
+
+ if (clientGeom) {
+ clientWindowSize = QSize(clientGeom->width, clientGeom->height);
+ }
//if the window is a clearly stupid size resize to be something sensible
//this is needed as chormium and such when resized just fill the icon with transparent space and only draw in the middle
//however spotify does need this as by default the window size is 900px wide.
//use an artbitrary heuristic to make sure icons are always sensible
- if (clientGeom->width > s_embedSize || clientGeom->height > s_embedSize )
+ if (clientWindowSize.isEmpty() || clientWindowSize.width() > s_embedSize || clientWindowSize.height() > s_embedSize )
{
+ qCDebug(SNIPROXY) << "Resizing window" << wid << Title() << "from w*h" << clientWindowSize;
+
const uint32_t windowMoveConfigVals[2] = { s_embedSize, s_embedSize };
xcb_configure_window(c, wid,
XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT,
windowMoveConfigVals);
- qCDebug(SNIPROXY) << "Resizing window" << wid << Title() << "from w*h" << clientGeom->width << clientGeom->height;
+ clientWindowSize = QSize(s_embedSize, s_embedSize);
}
//show the embedded window otherwise nothing happens
xcb_map_window(c, wid);
- xcb_clear_area(c, 0, wid, 0, 0, qMin(clientGeom->width, s_embedSize), qMin(clientGeom->height, s_embedSize));
+ xcb_clear_area(c, 0, wid, 0, 0, clientWindowSize.width(), clientWindowSize.height());
xcb_flush(c);
@@ -245,6 +252,10 @@
auto cookie = xcb_get_geometry(c, m_windowId);
QScopedPointer<xcb_get_geometry_reply_t, QScopedPointerPodDeleter>
geom(xcb_get_geometry_reply(c, cookie, Q_NULLPTR));
+
+ if (!geom) {
+ return QImage();
+ }
xcb_image_t *image = xcb_image_get(c, m_windowId, 0, 0, geom->width, geom->height, 0xFFFFFF, XCB_IMAGE_FORMAT_Z_PIXMAP);