Hello community,
here is the log from the commit of package kwayland-integration for
openSUSE:Factory checked in at 2019-06-12 13:29:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kwayland-integration (Old)
and /work/SRC/openSUSE:Factory/.kwayland-integration.new.4811 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kwayland-integration"
Wed Jun 12 13:29:25 2019 rev:66 rq:708308 version:5.16.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/kwayland-integration/kwayland-integration.changes
2019-05-09 10:06:11.344474701 +0200
+++
/work/SRC/openSUSE:Factory/.kwayland-integration.new.4811/kwayland-integration.changes
2019-06-12 13:29:29.200263320 +0200
@@ -1,0 +2,22 @@
+Thu Jun 6 14:07:08 UTC 2019 - [email protected]
+
+- Update to 5.16.0
+ * New bugfix release
+ * For more details please see:
+ * https://www.kde.org/announcements/plasma-5.16.0.php
+- No code changes since 5.15.90
+
+-------------------------------------------------------------------
+Thu May 16 16:56:37 UTC 2019 - [email protected]
+
+- Update to 5.15.90
+ * New feature release
+ * For more details please see:
+ * https://www.kde.org/announcements/plasma-5.15.90.php
+- Changes since 5.15.5:
+ * bump Qt version to 5.12 as agreed at start of cycle
+ * Track surface creation/destruction inside wayland window effects
(kde#398899)
+ * Support CriticalNotification window type
+ * Add missing window types to WindowInfo
+
+-------------------------------------------------------------------
Old:
----
kwayland-integration-5.15.5.tar.xz
kwayland-integration-5.15.5.tar.xz.sig
New:
----
kwayland-integration-5.16.0.tar.xz
kwayland-integration-5.16.0.tar.xz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kwayland-integration.spec ++++++
--- /var/tmp/diff_new_pack.rgQKHn/_old 2019-06-12 13:29:29.692263063 +0200
+++ /var/tmp/diff_new_pack.rgQKHn/_new 2019-06-12 13:29:29.696263061 +0200
@@ -18,7 +18,7 @@
%bcond_without lang
Name: kwayland-integration
-Version: 5.15.5
+Version: 5.16.0
Release: 0
# Full Plasma 5 version (e.g. 5.8.95)
%{!?_plasma5_bugfix: %define _plasma5_bugfix %{version}}
@@ -28,9 +28,9 @@
License: LGPL-2.1-or-later
Group: Development/Libraries/KDE
Url: http://www.kde.org
-Source:
https://download.kde.org/stable/plasma/%{version}/kwayland-integration-%{version}.tar.xz
+Source: kwayland-integration-%{version}.tar.xz
%if %{with lang}
-Source1:
https://download.kde.org/stable/plasma/%{version}/kwayland-integration-%{version}.tar.xz.sig
+Source1: kwayland-integration-%{version}.tar.xz.sig
Source2: plasma.keyring
%endif
BuildRequires: cmake >= 2.8.12
++++++ kwayland-integration-5.15.5.tar.xz -> kwayland-integration-5.16.0.tar.xz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kwayland-integration-5.15.5/CMakeLists.txt
new/kwayland-integration-5.16.0/CMakeLists.txt
--- old/kwayland-integration-5.15.5/CMakeLists.txt 2019-05-07
11:54:53.000000000 +0200
+++ new/kwayland-integration-5.16.0/CMakeLists.txt 2019-06-06
15:00:01.000000000 +0200
@@ -1,10 +1,10 @@
project(kwayland-integration)
-set(PROJECT_VERSION "5.15.5")
+set(PROJECT_VERSION "5.16.0")
set(PROJECT_VERSION_MAJOR 5)
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
-set(QT_MIN_VERSION "5.11.0")
-set(KF5_MIN_VERSION "5.54.0")
+set(QT_MIN_VERSION "5.12.0")
+set(KF5_MIN_VERSION "5.58.0")
find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kwayland-integration-5.15.5/src/windowsystem/windoweffects.cpp
new/kwayland-integration-5.16.0/src/windowsystem/windoweffects.cpp
--- old/kwayland-integration-5.15.5/src/windowsystem/windoweffects.cpp
2019-05-07 11:54:53.000000000 +0200
+++ new/kwayland-integration-5.16.0/src/windowsystem/windoweffects.cpp
2019-06-06 15:00:01.000000000 +0200
@@ -24,6 +24,8 @@
#include <QDebug>
#include <QWidget>
+#include <QGuiApplication>
+#include <QExposeEvent>
#include <KWayland/Client/connection_thread.h>
#include <KWayland/Client/plasmawindowmanagement.h>
@@ -45,6 +47,71 @@
WindowEffects::~WindowEffects()
{}
+QWindow *WindowEffects::windowForId(WId wid)
+{
+ QWindow *window = nullptr;
+
+ for (auto win : qApp->allWindows()) {
+ if (win->winId() == wid) {
+ window = win;
+ break;
+ }
+ }
+ return window;
+}
+
+void WindowEffects::trackWindow(QWindow *window)
+{
+ if (!m_windowWatchers.contains(window)) {
+ window->installEventFilter(this);
+ auto conn = connect(window, &QObject::destroyed, this, [this,
window]() {
+ m_blurRegions.remove(window);
+ m_backgroundConstrastRegions.remove(window);
+ m_windowWatchers.remove(window);
+ });
+ m_windowWatchers[window] = conn;
+ }
+}
+
+void WindowEffects::releaseWindow(QWindow *window)
+{
+ if (!m_blurRegions.contains(window) &&
!m_backgroundConstrastRegions.contains(window)) {
+ disconnect(m_windowWatchers[window]);
+ window->removeEventFilter(this);
+ m_windowWatchers.remove(window);
+ }
+}
+
+bool WindowEffects::eventFilter(QObject *watched, QEvent *event)
+{
+ if (event->type() == QEvent::Expose) {
+ auto ee = static_cast<QExposeEvent*>(event);
+
+ if ((ee->region().isNull())) {
+ return false;
+ }
+
+ auto window = qobject_cast<QWindow *>(watched);
+ if (!window) {
+ return false;
+ }
+
+ {
+ auto it = m_blurRegions.constFind(window);
+ if (it != m_blurRegions.constEnd()) {
+ enableBlurBehind(window, true, *it);
+ }
+ }
+ {
+ auto it = m_backgroundConstrastRegions.constFind(window);
+ if (it != m_backgroundConstrastRegions.constEnd()) {
+ enableBackgroundContrast(window, true, it->contrast,
it->intensity, it->saturation, it->region);
+ }
+ }
+ }
+ return false;
+}
+
bool WindowEffects::isEffectAvailable(KWindowEffects::Effect effect)
{
switch (effect) {
@@ -128,12 +195,30 @@
Q_UNUSED(ids)
}
-void WindowEffects::enableBlurBehind(WId window, bool enable, const QRegion
®ion)
+void WindowEffects::enableBlurBehind(WId winId, bool enable, const QRegion
®ion)
+{
+ auto window = windowForId(winId);
+ if (!window) {
+ return;
+ }
+ if (enable) {
+ trackWindow(window);
+ m_blurRegions[window] = region;
+ } else {
+ m_blurRegions.remove(window);
+ releaseWindow(window);
+ }
+
+ enableBlurBehind(window, enable, region);
+}
+
+void WindowEffects::enableBlurBehind(QWindow *window, bool enable, const
QRegion ®ion)
{
if (!WaylandIntegration::self()->waylandBlurManager()) {
return;
}
- KWayland::Client::Surface *surface =
KWayland::Client::Surface::fromQtWinId(window);
+ KWayland::Client::Surface *surface =
KWayland::Client::Surface::fromWindow(window);
+
if (surface) {
if (enable) {
auto blur =
WaylandIntegration::self()->waylandBlurManager()->createBlur(surface, surface);
@@ -148,12 +233,32 @@
}
}
-void WindowEffects::enableBackgroundContrast(WId window, bool enable, qreal
contrast, qreal intensity, qreal saturation, const QRegion ®ion)
+void WindowEffects::enableBackgroundContrast(WId winId, bool enable, qreal
contrast, qreal intensity, qreal saturation, const QRegion ®ion)
+{
+ auto window = windowForId(winId);
+ if (!window) {
+ return;
+ }
+ if (enable) {
+ trackWindow(window);
+ m_backgroundConstrastRegions[window].contrast = contrast;
+ m_backgroundConstrastRegions[window].intensity = intensity;
+ m_backgroundConstrastRegions[window].saturation = saturation;
+ m_backgroundConstrastRegions[window].region = region;
+ } else {
+ m_backgroundConstrastRegions.remove(window);
+ releaseWindow(window);
+ }
+
+ enableBackgroundContrast(window, enable, contrast, intensity, saturation,
region);
+}
+
+void WindowEffects::enableBackgroundContrast(QWindow *window, bool enable,
qreal contrast, qreal intensity, qreal saturation, const QRegion ®ion)
{
if (!WaylandIntegration::self()->waylandContrastManager()) {
return;
}
- KWayland::Client::Surface *surface =
KWayland::Client::Surface::fromQtWinId(window);
+ KWayland::Client::Surface *surface =
KWayland::Client::Surface::fromWindow(window);
if (surface) {
if (enable) {
auto backgroundContrast =
WaylandIntegration::self()->waylandContrastManager()->createContrast(surface,
surface);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kwayland-integration-5.15.5/src/windowsystem/windoweffects.h
new/kwayland-integration-5.16.0/src/windowsystem/windoweffects.h
--- old/kwayland-integration-5.15.5/src/windowsystem/windoweffects.h
2019-05-07 11:54:53.000000000 +0200
+++ new/kwayland-integration-5.16.0/src/windowsystem/windoweffects.h
2019-06-06 15:00:01.000000000 +0200
@@ -36,10 +36,17 @@
class WindowEffects : public QObject, public KWindowEffectsPrivate
{
+ Q_OBJECT
public:
WindowEffects();
~WindowEffects() override;
+ static QWindow *windowForId(WId);
+
+ bool eventFilter(QObject *watched, QEvent *event) override;
+ void trackWindow(QWindow *window);
+ void releaseWindow(QWindow *window);
+
bool isEffectAvailable(KWindowEffects::Effect effect) override;
void slideWindow(WId id, KWindowEffects::SlideFromLocation location, int
offset) override;
void slideWindow(QWidget *widget, KWindowEffects::SlideFromLocation
location) override;
@@ -47,9 +54,22 @@
void presentWindows(WId controller, const QList<WId> &ids) override;
void presentWindows(WId controller, int desktop = NET::OnAllDesktops)
override;
void highlightWindows(WId controller, const QList<WId> &ids) override;
- void enableBlurBehind(WId window, bool enable = true, const QRegion
®ion = QRegion()) override;
- void enableBackgroundContrast(WId window, bool enable = true, qreal
contrast = 1, qreal intensity = 1, qreal saturation = 1, const QRegion ®ion
= QRegion()) override;
+ void enableBlurBehind(WId winId, bool enable = true, const QRegion ®ion
= QRegion()) override;
+ void enableBlurBehind(QWindow *window, bool enable, const QRegion ®ion);
+ void enableBackgroundContrast(WId winId, bool enable = true, qreal
contrast = 1, qreal intensity = 1, qreal saturation = 1, const QRegion ®ion
= QRegion()) override;
+ void enableBackgroundContrast(QWindow *window, bool enable = true, qreal
contrast = 1, qreal intensity = 1, qreal saturation = 1, const QRegion ®ion
= QRegion());
void markAsDashboard(WId window) override;
+private:
+ QHash<QWindow *, QMetaObject::Connection> m_windowWatchers;
+ QHash<QWindow *, QRegion> m_blurRegions;
+ struct BackgroundContrastData {
+ qreal contrast = 1;
+ qreal intensity = 1;
+ qreal saturation = 1;
+ QRegion region;
+ };
+ QHash<QWindow *, BackgroundContrastData> m_backgroundConstrastRegions;
+
};
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kwayland-integration-5.15.5/src/windowsystem/windowinfo.cpp
new/kwayland-integration-5.16.0/src/windowsystem/windowinfo.cpp
--- old/kwayland-integration-5.15.5/src/windowsystem/windowinfo.cpp
2019-05-07 11:54:53.000000000 +0200
+++ new/kwayland-integration-5.16.0/src/windowsystem/windowinfo.cpp
2019-06-06 15:00:01.000000000 +0200
@@ -102,6 +102,21 @@
return NET::OnScreenDisplay;
}
break;
+ case KWayland::Client::PlasmaShellSurface::Role::Notification:
+ if (supported_types & NET::NotificationMask) {
+ return NET::Notification;
+ }
+ break;
+ case KWayland::Client::PlasmaShellSurface::Role::ToolTip:
+ if (supported_types & NET::TooltipMask) {
+ return NET::Tooltip;
+ }
+ break;
+ case KWayland::Client::PlasmaShellSurface::Role::CriticalNotification:
+ if (supported_types & NET::CriticalNotificationMask) {
+ return NET::CriticalNotification;
+ }
+ break;
default:
break;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kwayland-integration-5.15.5/src/windowsystem/windowsystem.cpp
new/kwayland-integration-5.16.0/src/windowsystem/windowsystem.cpp
--- old/kwayland-integration-5.15.5/src/windowsystem/windowsystem.cpp
2019-05-07 11:54:53.000000000 +0200
+++ new/kwayland-integration-5.16.0/src/windowsystem/windowsystem.cpp
2019-06-06 15:00:01.000000000 +0200
@@ -453,6 +453,9 @@
case NET::Tooltip:
role = KWayland::Client::PlasmaShellSurface::Role::ToolTip;
break;
+ case NET::CriticalNotification:
+ role =
KWayland::Client::PlasmaShellSurface::Role::CriticalNotification;
+ break;
default:
return;
}