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 - fab...@ritter-vogt.de
+
+- 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 - fab...@ritter-vogt.de
+
+- 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 
&region)
+void WindowEffects::enableBlurBehind(WId winId, bool enable, const QRegion 
&region)
+{
+    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 &region)
 {
     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 &region)
+void WindowEffects::enableBackgroundContrast(WId winId, bool enable, qreal 
contrast, qreal intensity, qreal saturation, const QRegion &region)
+{
+    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 &region)
 {
     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 
&region = QRegion()) override;
-    void enableBackgroundContrast(WId window, bool enable = true, qreal 
contrast = 1, qreal intensity = 1, qreal saturation = 1, const QRegion &region 
= QRegion()) override;
+    void enableBlurBehind(WId winId, bool enable = true, const QRegion &region 
= QRegion()) override;
+    void enableBlurBehind(QWindow *window, bool enable, const QRegion &region);
+    void enableBackgroundContrast(WId winId, bool enable = true, qreal 
contrast = 1, qreal intensity = 1, qreal saturation = 1, const QRegion &region 
= QRegion()) override;
+    void enableBackgroundContrast(QWindow *window, bool enable = true, qreal 
contrast = 1, qreal intensity = 1, qreal saturation = 1, const QRegion &region 
= 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;
     }



Reply via email to