Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kdeclarative for openSUSE:Factory 
checked in at 2022-06-17 21:19:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kdeclarative (Old)
 and      /work/SRC/openSUSE:Factory/.kdeclarative.new.1548 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kdeclarative"

Fri Jun 17 21:19:06 2022 rev:105 rq:982255 version:5.95.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kdeclarative/kdeclarative.changes        
2022-05-16 18:08:27.677270886 +0200
+++ /work/SRC/openSUSE:Factory/.kdeclarative.new.1548/kdeclarative.changes      
2022-06-17 21:20:54.422721122 +0200
@@ -1,0 +2,17 @@
+Fri Jun 10 14:12:22 UTC 2022 - Christophe Giboudeaux <[email protected]>
+
+- Update to 5.95.0
+  * New feature release
+  * For more details please see:
+  * https://kde.org/announcements/frameworks/5/5.95.0
+- Changes since 5.94.0:
+  * qmlcontrols: bump `QtQuick` import version to 2.15 for GridViewInternal
+  * port to standard C++ smart pointers where possible
+  * Use the correct engine variable
+  * Remove KDeclarative instance from QmlObject
+  * QmlObject: Use std::shared_ptr to properly track the lifetime of 
QQmlEngine (kde#451790)
+  * Move type registrations to the plugin initialization
+  * calendareventsplugin: Add label property
+  * calendareventsplugin: Add support for alternate dates and sub-labels
+
+-------------------------------------------------------------------

Old:
----
  kdeclarative-5.94.0.tar.xz
  kdeclarative-5.94.0.tar.xz.sig

New:
----
  kdeclarative-5.95.0.tar.xz
  kdeclarative-5.95.0.tar.xz.sig

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

Other differences:
------------------
++++++ kdeclarative.spec ++++++
--- /var/tmp/diff_new_pack.HjRX73/_old  2022-06-17 21:20:54.882721372 +0200
+++ /var/tmp/diff_new_pack.HjRX73/_new  2022-06-17 21:20:54.890721376 +0200
@@ -17,14 +17,14 @@
 
 
 %define lname   libKF5Declarative5
-%define _tar_path 5.94
+%define _tar_path 5.95
 # Full KF5 version (e.g. 5.33.0)
 %{!?_kf5_version: %global _kf5_version %{version}}
 # Last major and minor KF5 version (e.g. 5.33)
 %{!?_kf5_bugfix_version: %define _kf5_bugfix_version %(echo %{_kf5_version} | 
awk -F. '{print $1"."$2}')}
 %bcond_without released
 Name:           kdeclarative
-Version:        5.94.0
+Version:        5.95.0
 Release:        0
 Summary:        Integration of QML and KDE workspaces
 License:        LGPL-2.1-or-later


++++++ kdeclarative-5.94.0.tar.xz -> kdeclarative-5.95.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeclarative-5.94.0/CMakeLists.txt 
new/kdeclarative-5.95.0/CMakeLists.txt
--- old/kdeclarative-5.94.0/CMakeLists.txt      2022-05-07 23:19:06.000000000 
+0200
+++ new/kdeclarative-5.95.0/CMakeLists.txt      2022-06-09 23:16:57.000000000 
+0200
@@ -1,12 +1,12 @@
 cmake_minimum_required(VERSION 3.16)
 
-set(KF_VERSION "5.94.0") # handled by release scripts
-set(KF_DEP_VERSION "5.93.0") # handled by release scripts
+set(KF_VERSION "5.95.0") # handled by release scripts
+set(KF_DEP_VERSION "5.95.0") # handled by release scripts
 project(KDeclarative VERSION ${KF_VERSION})
 
 # Dependencies
 include(FeatureSummary)
-find_package(ECM 5.93.0  NO_MODULE)
+find_package(ECM 5.95.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)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeclarative-5.94.0/po/ca@valencia/kdeclarative5.po 
new/kdeclarative-5.95.0/po/ca@valencia/kdeclarative5.po
--- old/kdeclarative-5.94.0/po/ca@valencia/kdeclarative5.po     2022-05-07 
23:19:06.000000000 +0200
+++ new/kdeclarative-5.95.0/po/ca@valencia/kdeclarative5.po     2022-06-09 
23:16:57.000000000 +0200
@@ -38,7 +38,7 @@
 #: kpackagelauncherqml/main.cpp:30
 #, kde-format
 msgid "KPackage QML application shell"
-msgstr "Int??rpret d'aplicaci?? en QML de KPackage"
+msgstr "Int??rpret d'aplicaci?? en QML de KPackage"
 
 #: kpackagelauncherqml/main.cpp:38
 #, kde-format
@@ -67,7 +67,7 @@
 msgctxt "@info:whatsthis for a button of current color code %1"
 msgid "Current color is %1. This button will open a color chooser dialog."
 msgstr ""
-"El color actual ??s %1. Este bot?? obrir?? un di??leg de selecci?? del color."
+"El color actual ??s %1. Este bot?? obrir?? un di??lec de selecci?? del color."
 
 #: qmlcontrols/kquickcontrols/ColorButton.qml:66
 #, kde-format
@@ -110,7 +110,7 @@
 "shortcut.\n"
 "Please choose another one."
 msgstr ""
-"La tecla ??F12?? est?? reservada a Windows, no es pot utilitzar com a drecera 
"
+"La tecla ??F12?? est?? reservada a Windows, no es pot utilisar com a drecera "
 "global.\n"
 "Seleccioneu-ne una atra."
 
@@ -149,9 +149,9 @@
 "some applications use.\n"
 "Do you really want to use it as a global shortcut as well?"
 msgstr ""
-"La combinaci?? de tecla ??%1?? ja s'ha assignat a l'acci?? est??ndard ??%2?? 
que "
-"usen algunes aplicacions.\n"
-"Segur que tamb?? voleu utilitzar-la com a drecera global?"
+"La combinaci?? de tecla ??%1?? ya s'ha assignat a l'acci?? est??ndard ??%2?? 
que "
+"utilisen algunes aplicacions.\n"
+"Segur que tamb?? voleu utilisar-la com a drecera global?"
 
 #: qmlcontrols/kquickcontrols/private/keysequencehelper.cpp:201
 #, kde-format
@@ -161,7 +161,7 @@
 #: quickaddons/configmodule.cpp:187
 #, kde-format
 msgid "Invalid KPackage '%1'"
-msgstr "KPackage ??%1?? no v??lid"
+msgstr "KPackage ??%1?? no v??lit"
 
 #: quickaddons/configmodule.cpp:193
 #, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeclarative-5.94.0/po/ka/kdeclarative5.po 
new/kdeclarative-5.95.0/po/ka/kdeclarative5.po
--- old/kdeclarative-5.94.0/po/ka/kdeclarative5.po      2022-05-07 
23:19:06.000000000 +0200
+++ new/kdeclarative-5.95.0/po/ka/kdeclarative5.po      2022-06-09 
23:16:57.000000000 +0200
@@ -1,87 +1,83 @@
-# KDE3 - Georgian translation of kdelibs4.po
-# Gia Shervashidze <[email protected]>, 2005.
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR This file is copyright:
+# This file is distributed under the same license as the kdeclarative package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: kdelibs4\n"
+"Project-Id-Version: kdeclarative\n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2022-04-12 00:40+0000\n"
-"PO-Revision-Date: 2009-12-17 02:11+0400\n"
-"Last-Translator: George Machitidze <[email protected]>\n"
-"Language-Team: Georgian <http://www.gia.ge>\n"
+"PO-Revision-Date: 2022-05-22 06:36+0200\n"
+"Last-Translator: Temuri Doghonadze <[email protected]>\n"
+"Language-Team: Georgian <[email protected]>\n"
 "Language: ka\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 3.0.1\n"
 
 #, kde-format
 msgctxt "NAME OF TRANSLATORS"
 msgid "Your names"
-msgstr "????????? ???????????????????????????"
+msgstr "Temuri Doghonadze"
 
 #, kde-format
 msgctxt "EMAIL OF TRANSLATORS"
 msgid "Your emails"
-msgstr "[email protected]"
+msgstr "[email protected]"
 
 #: kpackagelauncherqml/main.cpp:30
 #, kde-format
 msgid "KPackage QML application shell"
-msgstr ""
+msgstr "KPackage QML ?????????????????????????????? ???????????????"
 
 #: kpackagelauncherqml/main.cpp:38
-#, fuzzy, kde-format
-#| msgid "defines the application font"
+#, kde-format
 msgid "The unique name of the application (mandatory)"
-msgstr "??????????????????????????? ??????????????????????????? 
??????????????????"
+msgstr "?????????????????????????????? ??????????????????????????? 
?????????????????? (?????????????????????????????????)"
 
 #: qmlcontrols/kcmcontrols/qml/ContextualHelpButton.qml:62
 #, kde-format
 msgctxt "@action:button"
 msgid "Show Contextual Help"
-msgstr ""
+msgstr "????????????????????????????????? ?????????????????????????????? 
?????????????????????"
 
 #: qmlcontrols/kcmcontrols/qml/private/GridViewInternal.qml:79
-#, fuzzy, kde-format
-#| msgid "1 match found."
-#| msgid_plural "%1 matches found."
+#, kde-format
 msgid "No items found"
-msgstr "???????????????????????? %1 ???????????????????????????."
+msgstr "?????????????????????????????? ????????????????????? ????????????"
 
 #: qmlcontrols/kquickcontrols/ColorButton.qml:63
 #, kde-format
 msgctxt "@info:whatsthis for a button"
 msgid "Color button"
-msgstr ""
+msgstr "??????????????? ??????????????????"
 
 #: qmlcontrols/kquickcontrols/ColorButton.qml:65
 #, kde-format
 msgctxt "@info:whatsthis for a button of current color code %1"
 msgid "Current color is %1. This button will open a color chooser dialog."
-msgstr ""
+msgstr "??????????????????????????? ??????????????? %1. ?????? 
?????????????????? ??????????????? ????????????????????? 
???????????????????????? ?????????????????????."
 
 #: qmlcontrols/kquickcontrols/ColorButton.qml:66
-#, fuzzy, kde-format
-#| msgid "Current location"
+#, kde-format
 msgctxt "@info:whatsthis for a button of current color code %1"
 msgid "Current color is %1."
-msgstr "&??????????????????????????? ???????????????????????????:"
+msgstr "??????????????????????????? ??????????????? %1."
 
 #: qmlcontrols/kquickcontrols/KeySequenceItem.qml:75
-#, fuzzy, kde-format
-#| msgid "Input file"
+#, kde-format
 msgctxt "What the user inputs now will be taken as the new shortcut"
 msgid "Input"
 msgstr "????????????????????? ???????????????"
 
 #: qmlcontrols/kquickcontrols/KeySequenceItem.qml:76
-#, fuzzy, kde-format
-#| msgid "None"
+#, kde-format
 msgctxt "No shortcut defined"
 msgid "None"
-msgstr "?????????"
+msgstr "????????????"
 
 #: qmlcontrols/kquickcontrols/KeySequenceItem.qml:89
 #, kde-format
@@ -89,12 +85,13 @@
 "Click on the button, then enter the shortcut like you would in the program.\n"
 "Example for Ctrl+A: hold the Ctrl key and press A."
 msgstr ""
+"???????????????????????? ?????????????????? ?????? ?????? 
??????????????????????????? ??????????????????????????????, ?????????????????? 
??????????????????????????????.\n"
+"??????????????????????????? Ctrl+A: ???????????????????????? Ctrl-??? ?????? 
A-???."
 
 #: qmlcontrols/kquickcontrols/private/keysequencehelper.cpp:118
-#, fuzzy, kde-format
-#| msgid "Shortcut"
+#, kde-format
 msgid "Reserved Shortcut"
-msgstr "???????????????????????????"
+msgstr "?????????????????????????????????????????? 
??????????????????????????????"
 
 #: qmlcontrols/kquickcontrols/private/keysequencehelper.cpp:120
 #, kde-format
@@ -103,36 +100,39 @@
 "shortcut.\n"
 "Please choose another one."
 msgstr ""
+"Windows-?????? F12 ?????????????????? 
?????????????????????????????????????????? ?????? ???????????? 
?????????????????????????????? ???????????????????????? 
????????????????????????????????? "
+"??????????????????????????????.\n"
+"?????????????????????????????? ????????????."
 
 #: qmlcontrols/kquickcontrols/private/keysequencehelper.cpp:144
 #, kde-format
 msgid "Global Shortcut Shadowing"
-msgstr ""
+msgstr "??????????????????????????? ????????????????????????????????? 
?????????????????????????????????"
 
 #: qmlcontrols/kquickcontrols/private/keysequencehelper.cpp:147
 #, kde-format
 msgid "The '%1' key combination is shadowed by following global actions:\n"
 msgstr ""
+"??????????????????????????? ?????????????????????????????? '%1' 
????????????????????? ??????????????????????????? 
???????????????????????????????????? ????????????????????????????????????:\n"
 
 #: qmlcontrols/kquickcontrols/private/keysequencehelper.cpp:149
 #: qmlcontrols/kquickcontrols/private/keysequencehelper.cpp:155
-#, fuzzy, kde-format
-#| msgid "Shortcuts"
+#, kde-format
 msgid "Action '%1' in context '%2'\n"
-msgstr "?????????????????????????????????"
+msgstr "????????????????????? \"%1' '%2'-?????? 
??????????????????????????????\n"
 
 #: qmlcontrols/kquickcontrols/private/keysequencehelper.cpp:153
 #, kde-format
 msgid "The '%1' key combination shadows following global actions:\n"
-msgstr ""
+msgstr "??????????????????????????? ?????????????????????????????? '%1' 
?????????????????? ???????????????????????? ??????????????????????????? 
????????????????????????????????????:\n"
 
 #: qmlcontrols/kquickcontrols/private/keysequencehelper.cpp:193
 #, kde-format
 msgid "Conflict with Standard Application Shortcut"
-msgstr "??????????????????????????? ??????????????????????????? 
?????????????????????????????? ?????????????????????????????????"
+msgstr "??????????????????????????? ??????????????????????????? 
?????????????????????????????? ????????????????????????????????????"
 
 #: qmlcontrols/kquickcontrols/private/keysequencehelper.cpp:195
-#, fuzzy, kde-format
+#, kde-format
 msgid ""
 "The '%1' key combination is also used for the standard action \"%2\" that "
 "some applications use.\n"
@@ -144,14 +144,14 @@
 #: qmlcontrols/kquickcontrols/private/keysequencehelper.cpp:201
 #, kde-format
 msgid "Reassign"
-msgstr "?????????????????????????????????????????????"
+msgstr "????????????????????????????????? ????????????????????? 
????????????????????????"
 
 #: quickaddons/configmodule.cpp:187
-#, fuzzy, kde-format
+#, kde-format
 msgid "Invalid KPackage '%1'"
-msgstr "?????????????????? ?????????????????????????????????!"
+msgstr "???????????????????????? KPackage '%1'"
 
 #: quickaddons/configmodule.cpp:193
 #, kde-format
 msgid "No QML file provided"
-msgstr ""
+msgstr "QML ??????????????? ?????????????????????????????? ????????????"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeclarative-5.94.0/po/zh_CN/kdeclarative5.po 
new/kdeclarative-5.95.0/po/zh_CN/kdeclarative5.po
--- old/kdeclarative-5.94.0/po/zh_CN/kdeclarative5.po   2022-05-07 
23:19:06.000000000 +0200
+++ new/kdeclarative-5.95.0/po/zh_CN/kdeclarative5.po   2022-06-09 
23:16:57.000000000 +0200
@@ -15,7 +15,7 @@
 "Project-Id-Version: kdeorg\n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2022-04-12 00:40+0000\n"
-"PO-Revision-Date: 2022-04-26 15:18\n"
+"PO-Revision-Date: 2022-06-05 04:17\n"
 "Last-Translator: \n"
 "Language-Team: Chinese Simplified\n"
 "Language: zh_CN\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdeclarative-5.94.0/src/calendarevents/calendareventsplugin.h 
new/kdeclarative-5.95.0/src/calendarevents/calendareventsplugin.h
--- old/kdeclarative-5.94.0/src/calendarevents/calendareventsplugin.h   
2022-05-07 23:19:06.000000000 +0200
+++ new/kdeclarative-5.95.0/src/calendarevents/calendareventsplugin.h   
2022-06-09 23:16:57.000000000 +0200
@@ -169,6 +169,14 @@
     Q_OBJECT
 
 public:
+    enum class SubLabelPriority {
+        Low, /**< Usually used in alternate calendars */
+        Default, /**< For holidays or normal events */
+        High, /**< For flagged or marked events */
+        Urgent,
+    };
+    Q_ENUM(SubLabelPriority)
+
     explicit CalendarEventsPlugin(QObject *parent = nullptr);
     ~CalendarEventsPlugin() override;
 
@@ -182,6 +190,14 @@
      */
     virtual void loadEventsForDateRange(const QDate &startDate, const QDate 
&endDate) = 0;
 
+    struct SubLabel {
+        QString label; /**< The label will be displayed in the tooltip or 
beside the full date */
+        QString yearLabel; /**< The label will be displayed under the year 
number */
+        QString monthLabel; /**< The label will be displayed under the month 
number */
+        QString dayLabel; /**< The label will be displayed under the day 
number */
+        SubLabelPriority priority = SubLabelPriority::Default; /**< The 
display priority of the sublabel */
+    };
+
 Q_SIGNALS:
     /**
      * Emitted when the plugin has loaded the events data
@@ -211,6 +227,24 @@
      * @param uid The uid of the event that was removed
      */
     void eventRemoved(const QString &uid);
+
+    /**
+     * Emitted when the plugin has loaded the alternate dates
+     *
+     * @param data A hash containing a QDate key from Gregorian calendar
+     *             for the alternate date in the value, QDate.
+     * @since 5.95
+     */
+    void alternateDateReady(const QHash<QDate, QDate> &data);
+
+    /**
+     * Emitted when the plugin has loaded the sublabels
+     *
+     * @param data A hash containing a QDate key for the sublabels
+     *             in the value, SubLabel.
+     * @since 5.95
+     */
+    void subLabelReady(const QHash<QDate, SubLabel> &data);
 };
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeclarative-5.94.0/src/kdeclarative/CMakeLists.txt 
new/kdeclarative-5.95.0/src/kdeclarative/CMakeLists.txt
--- old/kdeclarative-5.94.0/src/kdeclarative/CMakeLists.txt     2022-05-07 
23:19:06.000000000 +0200
+++ new/kdeclarative-5.95.0/src/kdeclarative/CMakeLists.txt     2022-06-09 
23:16:57.000000000 +0200
@@ -25,7 +25,7 @@
     GROUP_BASE_NAME KF
     VERSION ${KF_VERSION}
     DEPRECATED_BASE_VERSION 0
-    DEPRECATION_VERSIONS 5.0 5.45 5.75 5.91
+    DEPRECATION_VERSIONS 5.0 5.45 5.75 5.91 5.95
     EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT}
 )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeclarative-5.94.0/src/kdeclarative/qmlobject.cpp 
new/kdeclarative-5.95.0/src/kdeclarative/qmlobject.cpp
--- old/kdeclarative-5.94.0/src/kdeclarative/qmlobject.cpp      2022-05-07 
23:19:06.000000000 +0200
+++ new/kdeclarative-5.95.0/src/kdeclarative/qmlobject.cpp      2022-06-09 
23:16:57.000000000 +0200
@@ -10,6 +10,7 @@
 #include <QQmlContext>
 #include <QQmlEngine>
 #include <QQmlIncubator>
+#include <QQmlNetworkAccessManagerFactory>
 #include <QQuickItem>
 #include <QTimer>
 
@@ -74,11 +75,11 @@
     QmlObject *q;
 
     QUrl source;
-    QQmlEngine *engine;
+    std::shared_ptr<QQmlEngine> engine;
+
     QmlObjectIncubator incubator;
     QQmlComponent *component;
     QTimer *executionEndTimer;
-    KDeclarative kdeclarative;
     KLocalizedContext *context{nullptr};
     KPackage::Package package;
     QQmlContext *rootContext;
@@ -106,7 +107,7 @@
     }
 
     delete component;
-    component = new QQmlComponent(engine, q);
+    component = new QQmlComponent(engine.get(), q);
     QObject::connect(component, &QQmlComponent::statusChanged, q, 
&QmlObject::statusChanged, Qt::QueuedConnection);
     delete incubator.object();
 
@@ -131,39 +132,40 @@
 }
 
 QmlObject::QmlObject(QObject *parent)
-    // cannot do : QmlObject(new QQmlEngine(this), d->engine->rootContext(), 
parent)
-    : QObject(parent)
-    , d(new QmlObjectPrivate(this))
-
+    : QmlObject(nullptr, nullptr, parent)
 {
-    d->engine = new QQmlEngine(this);
-    d->rootContext = d->engine->rootContext();
-    d->kdeclarative.setDeclarativeEngine(d->engine);
-    d->kdeclarative.d->qmlObj = this;
-
-    d->context = new KLocalizedContext(this);
-    d->rootContext->setContextObject(d->context);
-    KDeclarative::setupEngine(d->engine);
 }
 
+#if KDECLARATIVE_BUILD_DEPRECATED_SINCE(5, 95)
 QmlObject::QmlObject(QQmlEngine *engine, QObject *parent)
-    : QmlObject(engine, engine->rootContext(), parent)
+    : QmlObject(std::shared_ptr<QQmlEngine>(engine), nullptr, parent)
 {
 }
 
 QmlObject::QmlObject(QQmlEngine *engine, QQmlContext *rootContext, QObject 
*parent)
-    : QmlObject(engine, rootContext, nullptr /*call setupEngine*/, parent)
+    : QmlObject(std::shared_ptr<QQmlEngine>(engine), rootContext, parent)
 {
 }
 
 QmlObject::QmlObject(QQmlEngine *engine, QQmlContext *rootContext, QmlObject 
*obj, QObject *parent)
+    : QmlObject(std::shared_ptr<QQmlEngine>(engine), rootContext, parent)
+{
+    Q_UNUSED(obj);
+}
+#endif
+
+QmlObject::QmlObject(std::shared_ptr<QQmlEngine> engine, QQmlContext 
*rootContext, QObject *parent)
     : QObject(parent)
     , d(new QmlObjectPrivate(this))
 {
     if (engine) {
         d->engine = engine;
     } else {
-        d->engine = new QQmlEngine(this);
+        d->engine = std::make_shared<QQmlEngine>();
+    }
+
+    if (d->engine.use_count() <= 2) {
+        KDeclarative::setupEngine(d->engine.get());
     }
 
     if (rootContext) {
@@ -171,22 +173,23 @@
     } else {
         d->rootContext = d->engine->rootContext();
     }
-    d->kdeclarative.setDeclarativeEngine(d->engine);
-    d->kdeclarative.d->qmlObj = this;
 
     d->context = new KLocalizedContext(this);
     d->rootContext->setContextObject(d->context);
-
-    if (!obj) {
-        KDeclarative::setupEngine(d->engine);
-    }
 }
 
 QmlObject::~QmlObject()
 {
-    //    QDeclarativeNetworkAccessManagerFactory *factory = 
d->engine->networkAccessManagerFactory();
-    //    d->engine->setNetworkAccessManagerFactory(0);
-    //    delete factory;
+    if (d->engine.use_count() == 1) {
+        // QQmlEngine does not take ownership of the QNAM factory so we need to
+        // make sure to clean it, but only if we are the last user of the 
engine
+        // otherwise we risk resetting the factory on an engine that is still 
in
+        // use.
+        auto factory = d->engine->networkAccessManagerFactory();
+        d->engine->setNetworkAccessManagerFactory(nullptr);
+        delete factory;
+    }
+
     delete d;
 }
 
@@ -241,7 +244,7 @@
 
 QQmlEngine *QmlObject::engine()
 {
-    return d->engine;
+    return d->engine.get();
 }
 
 QObject *QmlObject::rootObject() const
@@ -324,7 +327,7 @@
 
 QObject *QmlObject::createObjectFromSource(const QUrl &source, QQmlContext 
*context, const QVariantHash &initialProperties)
 {
-    QQmlComponent *component = new QQmlComponent(d->engine, this);
+    QQmlComponent *component = new QQmlComponent(d->engine.get(), this);
     component->loadUrl(source);
 
     return createObjectFromComponent(component, context, initialProperties);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeclarative-5.94.0/src/kdeclarative/qmlobject.h 
new/kdeclarative-5.95.0/src/kdeclarative/qmlobject.h
--- old/kdeclarative-5.94.0/src/kdeclarative/qmlobject.h        2022-05-07 
23:19:06.000000000 +0200
+++ new/kdeclarative-5.95.0/src/kdeclarative/qmlobject.h        2022-06-09 
23:16:57.000000000 +0200
@@ -58,8 +58,14 @@
      *
      * @param engine a QQmlEngine we want to use
      * @param parent the parent of this object
+     *
+     * @deprecated Since 5.95, Use QmlObject(std::shared_ptr<QmlEngine>, 
QObject*)
+     * instead.
      */
+#if KDECLARATIVE_ENABLE_DEPRECATED_SINCE(5, 95)
+    KDECLARATIVE_DEPRECATED_VERSION(5, 95, "Use 
QmlObject(std::shared_ptr<QQmlEngine>, QmlContext*, QObject*) instead")
     explicit QmlObject(QQmlEngine *engine, QObject *parent = nullptr);
+#endif
 
     /**
      * Constructs a new QmlObject
@@ -67,8 +73,28 @@
      * @param engine the QQmlEngine to use
      * @param rootContext the root context to use for object creation
      * @param parent the parent of this object
+     *
+     * @deprecated Since 5.95, Use QmlObject(std::shared_ptr<QmlEngine>, 
QmlContext*, QObject*)
+     * instead.
      */
+#if KDECLARATIVE_ENABLE_DEPRECATED_SINCE(5, 95)
+    KDECLARATIVE_DEPRECATED_VERSION(5, 95, "Use 
QmlObject(std::shared_ptr<QQmlEngine>, QQmlContext*, QObject*) instead")
     explicit QmlObject(QQmlEngine *engine, QQmlContext *rootContext, QObject 
*parent = nullptr);
+#endif
+
+    /**
+     * Construct a new QmlObject
+     *
+     * @param engine The QQmlEngine to use. If this object is the first user of
+     * the engine (e.g. use_count() is 1), KDeclarative::setupEngine() will be
+     * called. If this is nullptr, a new engine will be created for this object
+     * to use.
+     * @param rootContext The QML context to use for object creation. If this 
is
+     * nullptr, the engine's root context will be used.
+     * @param parent The QObject parent for this object.
+     */
+    explicit QmlObject(std::shared_ptr<QQmlEngine> engine, QQmlContext 
*rootContext = nullptr, QObject *parent = nullptr);
+
     ~QmlObject() override;
 
     /**
@@ -230,8 +256,15 @@
      * multiple objects (such as QmlObjectSharedEngine)
      * @param parent the parent of this object
      * @since 5.45
+     *
+     * @deprecated Since 5.95, Use QmlObject(std::shared_ptr<QmlEngine>, 
QmlContext*, QObject*)
+     * instead. The "obj" parameter has been dropped, instead setupEngine will 
be
+     * called if this QmlObject is the first user of the engine.
      */
+#if KDECLARATIVE_ENABLE_DEPRECATED_SINCE(5, 95)
+    KDECLARATIVE_DEPRECATED_VERSION(5, 95, "Use 
QmlObject(std::shared_ptr<QQmlEngine>, QQmlContext*, QObject*) instead")
     explicit QmlObject(QQmlEngine *engine, QQmlContext *rootContext, QmlObject 
*obj, QObject *parent = nullptr);
+#endif
 
 private:
     friend class QmlObjectPrivate;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdeclarative-5.94.0/src/kdeclarative/qmlobjectsharedengine.cpp 
new/kdeclarative-5.95.0/src/kdeclarative/qmlobjectsharedengine.cpp
--- old/kdeclarative-5.94.0/src/kdeclarative/qmlobjectsharedengine.cpp  
2022-05-07 23:19:06.000000000 +0200
+++ new/kdeclarative-5.95.0/src/kdeclarative/qmlobjectsharedengine.cpp  
2022-06-09 23:16:57.000000000 +0200
@@ -8,6 +8,7 @@
 
 #include <QQmlContext>
 #include <QQmlEngine>
+#include <QQmlNetworkAccessManagerFactory>
 
 #include <QDebug>
 #include <kdeclarative.h>
@@ -26,21 +27,21 @@
 
     ~QmlObjectSharedEnginePrivate()
     {
-        // when the only remaining are out two refs, reset the pointers, 
causing deletion
-        // when the refcount is 2, we are sure that the only refs are s_engine 
and our copy
-        // of engineRef
-        if (engineRef.use_count() == 2) {
+        // when the only remaining are our three refs, reset the pointers, 
causing deletion
+        // when the refcount is 3, we are sure that the only refs are 
s_engine, our copy
+        // of engineRef and m_engine in QmlObject.
+        if (engineRef.use_count() <= 3) {
             s_engine.reset();
         }
     }
 
-    static QQmlEngine *engine()
+    static std::shared_ptr<QQmlEngine> engine()
     {
         if (!s_engine) {
             s_engine = std::make_shared<QQmlEngine>();
             KDeclarative::setupEngine(s_engine.get());
         }
-        return s_engine.get();
+        return s_engine;
     }
 
     // used to delete it
@@ -52,7 +53,7 @@
 std::shared_ptr<QQmlEngine> QmlObjectSharedEnginePrivate::s_engine = 
std::shared_ptr<QQmlEngine>();
 
 QmlObjectSharedEngine::QmlObjectSharedEngine(QObject *parent)
-    : QmlObject(QmlObjectSharedEnginePrivate::engine(), new 
QQmlContext(QmlObjectSharedEnginePrivate::engine()), this /*don't call 
setupEngine*/, parent)
+    : QmlObject(QmlObjectSharedEnginePrivate::engine(), new 
QQmlContext(QmlObjectSharedEnginePrivate::engine().get()), parent)
     , d(new QmlObjectSharedEnginePrivate())
 {
     rootContext()->setParent(this);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdeclarative-5.94.0/src/qmlcontrols/kcmcontrols/CMakeLists.txt 
new/kdeclarative-5.95.0/src/qmlcontrols/kcmcontrols/CMakeLists.txt
--- old/kdeclarative-5.94.0/src/qmlcontrols/kcmcontrols/CMakeLists.txt  
2022-05-07 23:19:06.000000000 +0200
+++ new/kdeclarative-5.95.0/src/qmlcontrols/kcmcontrols/CMakeLists.txt  
2022-06-09 23:16:57.000000000 +0200
@@ -5,7 +5,6 @@
     kcmcontrolsplugin.h
     settinghighlighterprivate.cpp
     settinghighlighterprivate.h
-    settingshighlighterprivate.h
     settingstateproxy.cpp
     settingstateproxy.h
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdeclarative-5.94.0/src/qmlcontrols/kcmcontrols/qml/SettingStateBinding.qml 
new/kdeclarative-5.95.0/src/qmlcontrols/kcmcontrols/qml/SettingStateBinding.qml
--- 
old/kdeclarative-5.94.0/src/qmlcontrols/kcmcontrols/qml/SettingStateBinding.qml 
    2022-05-07 23:19:06.000000000 +0200
+++ 
new/kdeclarative-5.95.0/src/qmlcontrols/kcmcontrols/qml/SettingStateBinding.qml 
    2022-06-09 23:16:57.000000000 +0200
@@ -4,8 +4,9 @@
     SPDX-License-Identifier: LGPL-2.0-or-later
 */
 
-import QtQuick 2.8
-import QtQml 2.14
+import QtQuick 2.15
+// Deliberately imported after QtQuick to avoid missing restoreMode property 
in Binding. Fix in Qt 6.
+import QtQml 2.15
 import QtQuick.Layouts 1.3
 import org.kde.kcm 1.3 as KCM
 import org.kde.kcm.private 1.3
@@ -70,7 +71,7 @@
         when: helper.target
         target: helper.target
         property: "enabled"
-        value:  extraEnabledConditions && !settingState.immutable
+        value: extraEnabledConditions && !settingState.immutable
         restoreMode: Binding.RestoreBinding
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdeclarative-5.94.0/src/qmlcontrols/kcmcontrols/qml/private/GridViewInternal.qml
 
new/kdeclarative-5.95.0/src/qmlcontrols/kcmcontrols/qml/private/GridViewInternal.qml
--- 
old/kdeclarative-5.94.0/src/qmlcontrols/kcmcontrols/qml/private/GridViewInternal.qml
        2022-05-07 23:19:06.000000000 +0200
+++ 
new/kdeclarative-5.95.0/src/qmlcontrols/kcmcontrols/qml/private/GridViewInternal.qml
        2022-06-09 23:16:57.000000000 +0200
@@ -4,7 +4,7 @@
     SPDX-License-Identifier: LGPL-2.0-or-later
 */
 
-import QtQuick 2.7
+import QtQuick 2.15
 import QtQuick.Layouts 1.1
 import QtQuick.Controls 2.2 as QtControls
 import org.kde.kirigami 2.19 as Kirigami
@@ -31,7 +31,7 @@
     anchors {
         fill: parent
         margins: 2
-        leftMargin: scroll.QtControls.ScrollBar.vertical.visible ? 2 : 
Math.round(internal.scrollBarSpace/2) + 2
+        leftMargin: 2 + (scroll.QtControls.ScrollBar.vertical.visible ? 0 : 
Math.round(internal.scrollBarSpace / 2))
     }
     clip: true
     activeFocusOnTab: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdeclarative-5.94.0/src/qmlcontrols/kquickcontrolsaddons/kquickcontrolsaddonsplugin.cpp
 
new/kdeclarative-5.95.0/src/qmlcontrols/kquickcontrolsaddons/kquickcontrolsaddonsplugin.cpp
--- 
old/kdeclarative-5.94.0/src/qmlcontrols/kquickcontrolsaddons/kquickcontrolsaddonsplugin.cpp
 2022-05-07 23:19:06.000000000 +0200
+++ 
new/kdeclarative-5.95.0/src/qmlcontrols/kquickcontrolsaddons/kquickcontrolsaddonsplugin.cpp
 2022-06-09 23:16:57.000000000 +0200
@@ -41,6 +41,8 @@
     qmlRegisterType<QImageItem>(uri, 2, 0, "QImageItem");
     qmlRegisterType<QIconItem>(uri, 2, 0, "QIconItem");
     qmlRegisterType<MouseEventListener>(uri, 2, 0, "MouseEventListener");
+    qmlRegisterAnonymousType<KDeclarativeMouseEvent>(uri, 1);
+    qmlRegisterAnonymousType<KDeclarativeWheelEvent>(uri, 1);
     qmlRegisterType<ColumnProxyModel>(uri, 2, 0, "ColumnProxyModel");
     qmlRegisterType<Clipboard>(uri, 2, 0, "Clipboard");
     qmlRegisterType<MimeDatabase>(uri, 2, 0, "MimeDatabase");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdeclarative-5.94.0/src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.cpp
 
new/kdeclarative-5.95.0/src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.cpp
--- 
old/kdeclarative-5.94.0/src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.cpp
 2022-05-07 23:19:06.000000000 +0200
+++ 
new/kdeclarative-5.95.0/src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.cpp
 2022-06-09 23:16:57.000000000 +0200
@@ -27,9 +27,6 @@
     m_pressAndHoldTimer = new QTimer(this);
     m_pressAndHoldTimer->setSingleShot(true);
     connect(m_pressAndHoldTimer, &QTimer::timeout, this, 
&MouseEventListener::handlePressAndHold);
-    
qmlRegisterAnonymousType<KDeclarativeMouseEvent>("org.kde.kquickcontrolsaddons",
 1);
-    
qmlRegisterAnonymousType<KDeclarativeWheelEvent>("org.kde.kquickcontrolsaddons",
 1);
-
     setFiltersChildMouseEvents(true);
     setAcceptedMouseButtons(Qt::LeftButton | Qt::RightButton | 
Qt::MiddleButton | Qt::XButton1 | Qt::XButton2);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdeclarative-5.94.0/src/qmlcontrols/kquickcontrolsaddons/plotter.cpp 
new/kdeclarative-5.95.0/src/qmlcontrols/kquickcontrolsaddons/plotter.cpp
--- old/kdeclarative-5.94.0/src/qmlcontrols/kquickcontrolsaddons/plotter.cpp    
2022-05-07 23:19:06.000000000 +0200
+++ new/kdeclarative-5.95.0/src/qmlcontrols/kquickcontrolsaddons/plotter.cpp    
2022-06-09 23:16:57.000000000 +0200
@@ -281,7 +281,7 @@
     ~PlotSGNode() override = default;
 
 private:
-    QScopedPointer<QOpenGLShaderProgram> m_program;
+    std::unique_ptr<QOpenGLShaderProgram> m_program;
     int u_matrix;
     int u_color1;
     int u_color2;
@@ -290,7 +290,7 @@
 };
 
 PlotSGNode::PlotSGNode()
-    : m_program(new QOpenGLShaderProgram)
+    : m_program(std::make_unique<QOpenGLShaderProgram>())
 {
     setOwnsTexture(true);
     m_program->addCacheableShaderFromSourceCode(QOpenGLShader::Vertex, 
vs_source);

Reply via email to