Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kf6-kwindowsystem for 
openSUSE:Factory checked in at 2025-05-12 16:44:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kf6-kwindowsystem (Old)
 and      /work/SRC/openSUSE:Factory/.kf6-kwindowsystem.new.30101 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kf6-kwindowsystem"

Mon May 12 16:44:52 2025 rev:15 rq:1276405 version:6.14.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kf6-kwindowsystem/kf6-kwindowsystem.changes      
2025-04-15 16:47:01.669922517 +0200
+++ 
/work/SRC/openSUSE:Factory/.kf6-kwindowsystem.new.30101/kf6-kwindowsystem.changes
   2025-05-12 16:47:52.430140032 +0200
@@ -1,0 +2,14 @@
+Sun May  4 19:05:32 UTC 2025 - Christophe Marin <christo...@krop.fr>
+
+- Update to 6.14.0
+  * New feature release
+  * For more details please see:
+  * https://kde.org/announcements/frameworks/6/6.14.0
+- Changes since 6.13.0:
+  * Update dependency version to 6.14.0
+  * wayland: Handle XDG Dialog when calling setMainWindow multiple times
+  * Wayland: Set XDG dialog modal in setMainWindow when applicable (kde#493647)
+  * Update version to 6.14.0
+  * Remove code for no longer supported Qt versions
+
+-------------------------------------------------------------------

Old:
----
  kwindowsystem-6.13.0.tar.xz
  kwindowsystem-6.13.0.tar.xz.sig

New:
----
  kwindowsystem-6.14.0.tar.xz
  kwindowsystem-6.14.0.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kf6-kwindowsystem.spec ++++++
--- /var/tmp/diff_new_pack.GIxXfI/_old  2025-05-12 16:47:54.678234295 +0200
+++ /var/tmp/diff_new_pack.GIxXfI/_new  2025-05-12 16:47:54.690234798 +0200
@@ -19,13 +19,13 @@
 %define qt6_version 6.7.0
 
 %define rname kwindowsystem
-# Full KF6 version (e.g. 6.13.0)
+# Full KF6 version (e.g. 6.14.0)
 %{!?_kf6_version: %global _kf6_version %{version}}
 # Last major and minor KF6 version (e.g. 6.0)
 %{!?_kf6_bugfix_version: %define _kf6_bugfix_version %(echo %{_kf6_version} | 
awk -F. '{print $1"."$2}')}
 %bcond_without released
 Name:           kf6-kwindowsystem
-Version:        6.13.0
+Version:        6.14.0
 Release:        0
 Summary:        KDE Access to window manager
 License:        LGPL-2.1-or-later


++++++ kwindowsystem-6.13.0.tar.xz -> kwindowsystem-6.14.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwindowsystem-6.13.0/CMakeLists.txt 
new/kwindowsystem-6.14.0/CMakeLists.txt
--- old/kwindowsystem-6.13.0/CMakeLists.txt     2025-04-04 16:03:51.000000000 
+0200
+++ new/kwindowsystem-6.14.0/CMakeLists.txt     2025-05-02 16:26:08.000000000 
+0200
@@ -1,11 +1,11 @@
 cmake_minimum_required(VERSION 3.16)
 
-set(KF_VERSION "6.13.0") # handled by release scripts
+set(KF_VERSION "6.14.0") # handled by release scripts
 project(KWindowSystem VERSION ${KF_VERSION})
 
 # ECM setup
 include(FeatureSummary)
-find_package(ECM 6.13.0  NO_MODULE)
+find_package(ECM 6.14.0  NO_MODULE)
 set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake 
Modules." URL "https://commits.kde.org/extra-cmake-modules";)
 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND 
FATAL_ON_MISSING_REQUIRED_PACKAGES)
 
@@ -40,7 +40,7 @@
                         SOVERSION 6)
 
 # Dependencies
-set(REQUIRED_QT_VERSION 6.6.0)
+set(REQUIRED_QT_VERSION 6.7.0)
 find_package(Qt6Gui ${REQUIRED_QT_VERSION} CONFIG REQUIRED)
 
 if (Qt6Gui_VERSION VERSION_GREATER_EQUAL "6.10.0")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-6.13.0/autotests/kwindowinfox11test.cpp 
new/kwindowsystem-6.14.0/autotests/kwindowinfox11test.cpp
--- old/kwindowsystem-6.13.0/autotests/kwindowinfox11test.cpp   2025-04-04 
16:03:51.000000000 +0200
+++ new/kwindowsystem-6.14.0/autotests/kwindowinfox11test.cpp   2025-05-02 
16:26:08.000000000 +0200
@@ -665,11 +665,7 @@
 {
     KWindowInfo info(window->winId(), NET::Properties(), 
NET::WM2DesktopFileName);
     QVERIFY(info.valid());
-#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 1)
     QCOMPARE(info.desktopFileName(), "kwindowinfox11test");
-#else
-    QCOMPARE(info.desktopFileName(), QString());
-#endif
     QSignalSpy spy(KX11Extras::self(), &KX11Extras::windowChanged);
     QVERIFY(spy.isValid());
     // create a NETWinInfo to set the desktop file name
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-6.13.0/src/platforms/wayland/CMakeLists.txt 
new/kwindowsystem-6.14.0/src/platforms/wayland/CMakeLists.txt
--- old/kwindowsystem-6.13.0/src/platforms/wayland/CMakeLists.txt       
2025-04-04 16:03:51.000000000 +0200
+++ new/kwindowsystem-6.14.0/src/platforms/wayland/CMakeLists.txt       
2025-05-02 16:26:08.000000000 +0200
@@ -6,6 +6,7 @@
     windowshadow.cpp
     windowsystem.cpp
     waylandxdgactivationv1.cpp
+    waylandxdgdialogv1.cpp
     waylandxdgforeignv2.cpp
     plugin.h
     windoweffects.h
@@ -23,6 +24,8 @@
     FILES
         
${WaylandProtocols_DATADIR}/staging/xdg-activation/xdg-activation-v1.xml
         
${WaylandProtocols_DATADIR}/unstable/xdg-foreign/xdg-foreign-unstable-v2.xml
+        ${WaylandProtocols_DATADIR}/staging/xdg-dialog/xdg-dialog-v1.xml
+        ${WaylandProtocols_DATADIR}/stable/xdg-shell/xdg-shell.xml
         ${PLASMA_WAYLAND_PROTOCOLS_DIR}/blur.xml
         ${PLASMA_WAYLAND_PROTOCOLS_DIR}/contrast.xml
         ${PLASMA_WAYLAND_PROTOCOLS_DIR}/slide.xml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-6.13.0/src/platforms/wayland/surfacehelper.h 
new/kwindowsystem-6.14.0/src/platforms/wayland/surfacehelper.h
--- old/kwindowsystem-6.13.0/src/platforms/wayland/surfacehelper.h      
2025-04-04 16:03:51.000000000 +0200
+++ new/kwindowsystem-6.14.0/src/platforms/wayland/surfacehelper.h      
2025-05-02 16:26:08.000000000 +0200
@@ -14,6 +14,7 @@
 #include <qpa/qplatformnativeinterface.h>
 
 struct wl_surface;
+struct xdg_toplevel;
 
 inline wl_surface *surfaceForWindow(QWindow *window)
 {
@@ -38,3 +39,17 @@
 
     return reinterpret_cast<wl_surface 
*>(native->nativeResourceForWindow(QByteArrayLiteral("surface"), window));
 }
+
+inline xdg_toplevel *xdgToplevelForWindow(QWindow *window)
+{
+    if (!window) {
+        return nullptr;
+    }
+
+    QPlatformNativeInterface *native = qGuiApp->platformNativeInterface();
+    if (!native) {
+        return nullptr;
+    }
+
+    return reinterpret_cast<xdg_toplevel 
*>(native->nativeResourceForWindow(QByteArrayLiteral("xdg_toplevel"), window));
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-6.13.0/src/platforms/wayland/waylandxdgdialogv1.cpp 
new/kwindowsystem-6.14.0/src/platforms/wayland/waylandxdgdialogv1.cpp
--- old/kwindowsystem-6.13.0/src/platforms/wayland/waylandxdgdialogv1.cpp       
1970-01-01 01:00:00.000000000 +0100
+++ new/kwindowsystem-6.14.0/src/platforms/wayland/waylandxdgdialogv1.cpp       
2025-05-02 16:26:08.000000000 +0200
@@ -0,0 +1,48 @@
+/*
+    SPDX-FileCopyrightText: 2025 Kai Uwe Broulik <k...@broulik.de>
+
+    SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "waylandxdgdialogv1_p.h"
+
+#include <QGuiApplication>
+
+WaylandXdgDialogV1::WaylandXdgDialogV1(::xdg_dialog_v1 *object)
+    : QObject()
+    , QtWayland::xdg_dialog_v1(object)
+{
+}
+
+WaylandXdgDialogV1::~WaylandXdgDialogV1()
+{
+    if (qGuiApp) {
+        destroy();
+    }
+}
+
+WaylandXdgDialogWmV1::WaylandXdgDialogWmV1()
+    : QWaylandClientExtensionTemplate<WaylandXdgDialogWmV1>(1)
+{
+    initialize();
+}
+
+WaylandXdgDialogWmV1::~WaylandXdgDialogWmV1()
+{
+    if (qGuiApp && isActive()) {
+        destroy();
+    }
+}
+
+WaylandXdgDialogWmV1 &WaylandXdgDialogWmV1::self()
+{
+    static WaylandXdgDialogWmV1 s_instance;
+    return s_instance;
+}
+
+WaylandXdgDialogV1 *WaylandXdgDialogWmV1::getDialog(struct ::xdg_toplevel 
*toplevel)
+{
+    return new WaylandXdgDialogV1(get_xdg_dialog(toplevel));
+}
+
+#include "moc_waylandxdgdialogv1_p.cpp"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-6.13.0/src/platforms/wayland/waylandxdgdialogv1_p.h 
new/kwindowsystem-6.14.0/src/platforms/wayland/waylandxdgdialogv1_p.h
--- old/kwindowsystem-6.13.0/src/platforms/wayland/waylandxdgdialogv1_p.h       
1970-01-01 01:00:00.000000000 +0100
+++ new/kwindowsystem-6.14.0/src/platforms/wayland/waylandxdgdialogv1_p.h       
2025-05-02 16:26:08.000000000 +0200
@@ -0,0 +1,36 @@
+/*
+    SPDX-FileCopyrightText: 2025 Kai Uwe Broulik <k...@broulik.de>
+
+    SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#ifndef WAYLANDXDGDIALOGV1_P_H
+#define WAYLANDXDGDIALOGV1_P_H
+
+#include "qwayland-xdg-dialog-v1.h"
+
+#include <QObject>
+#include <QtWaylandClient/QWaylandClientExtension>
+
+class WaylandXdgDialogV1 : public QObject, public QtWayland::xdg_dialog_v1
+{
+    Q_OBJECT
+public:
+    explicit WaylandXdgDialogV1(::xdg_dialog_v1 *object);
+    ~WaylandXdgDialogV1() override;
+};
+
+class WaylandXdgDialogWmV1 : public 
QWaylandClientExtensionTemplate<WaylandXdgDialogWmV1>, public 
QtWayland::xdg_wm_dialog_v1
+{
+public:
+    ~WaylandXdgDialogWmV1() override;
+
+    static WaylandXdgDialogWmV1 &self();
+
+    WaylandXdgDialogV1 *getDialog(struct ::xdg_toplevel *toplevel);
+
+private:
+    WaylandXdgDialogWmV1();
+};
+
+#endif // WAYLANDXDGDIALOGV1_P_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwindowsystem-6.13.0/src/platforms/wayland/windowsystem.cpp 
new/kwindowsystem-6.14.0/src/platforms/wayland/windowsystem.cpp
--- old/kwindowsystem-6.13.0/src/platforms/wayland/windowsystem.cpp     
2025-04-04 16:03:51.000000000 +0200
+++ new/kwindowsystem-6.14.0/src/platforms/wayland/windowsystem.cpp     
2025-05-02 16:26:08.000000000 +0200
@@ -8,6 +8,7 @@
 #include "logging.h"
 #include "surfacehelper.h"
 #include "waylandxdgactivationv1_p.h"
+#include "waylandxdgdialogv1_p.h"
 #include "waylandxdgforeignv2_p.h"
 
 #include <KWaylandExtras>
@@ -16,10 +17,12 @@
 #include "qwayland-plasma-window-management.h"
 #include <QEvent>
 #include <QGuiApplication>
+#include <QLibraryInfo>
 #include <QPixmap>
 #include <QPoint>
 #include <QString>
 #include <QTimer>
+#include <QVersionNumber>
 #include <QWaylandClientExtensionTemplate>
 #include <QWindow>
 #include <qpa/qplatformnativeinterface.h>
@@ -284,6 +287,23 @@
     connect(imported, &QObject::destroyed, waylandWindow, [waylandWindow] {
         waylandWindow->setProperty(c_kdeXdgForeignImportedProperty, 
QVariant());
     });
+
+    // Before Qt 6.10, Qt sets XDG Dialog modal only when it has a transient 
parent.
+    if (QLibraryInfo::version() < QVersionNumber(6, 10, 0)) {
+        auto *oldDialog = waylandWindow->findChild<WaylandXdgDialogV1 *>();
+        if (window->modality() != Qt::NonModal && !oldDialog) {
+            auto &xdgDialog = WaylandXdgDialogWmV1::self();
+            if (xdgDialog.isActive()) {
+                if (auto *xdgToplevel = xdgToplevelForWindow(window)) {
+                    auto *dialog = xdgDialog.getDialog(xdgToplevel);
+                    dialog->set_modal();
+                    dialog->setParent(waylandWindow);
+                }
+            }
+        } else {
+            delete oldDialog;
+        }
+    }
 }
 
 #include "moc_windowsystem.cpp"

Reply via email to