Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kf6-kcalendarcore for 
openSUSE:Factory checked in at 2025-08-09 19:57:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kf6-kcalendarcore (Old)
 and      /work/SRC/openSUSE:Factory/.kf6-kcalendarcore.new.1085 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kf6-kcalendarcore"

Sat Aug  9 19:57:38 2025 rev:18 rq:1298522 version:6.17.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kf6-kcalendarcore/kf6-kcalendarcore.changes      
2025-07-14 10:52:19.930202410 +0200
+++ 
/work/SRC/openSUSE:Factory/.kf6-kcalendarcore.new.1085/kf6-kcalendarcore.changes
    2025-08-09 20:02:28.788897824 +0200
@@ -1,0 +2,13 @@
+Mon Aug  4 06:57:21 UTC 2025 - Christophe Marin <christo...@krop.fr>
+
+- Update to 6.17.0
+  * New feature release
+  * For more details please see:
+  * https://kde.org/announcements/frameworks/6/6.17.0
+- Changes since 6.16.0:
+  * Update dependency version to 6.17.0
+  * Update recurrenceId when dtStart changes
+  * src/icalformat_p.cpp - compile multivalue parameter support in libical4
+  * Update version to 6.17.0
+
+-------------------------------------------------------------------

Old:
----
  kcalendarcore-6.16.0.tar.xz
  kcalendarcore-6.16.0.tar.xz.sig

New:
----
  kcalendarcore-6.17.0.tar.xz
  kcalendarcore-6.17.0.tar.xz.sig

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

Other differences:
------------------
++++++ kf6-kcalendarcore.spec ++++++
--- /var/tmp/diff_new_pack.6FuCg9/_old  2025-08-09 20:02:29.416923912 +0200
+++ /var/tmp/diff_new_pack.6FuCg9/_new  2025-08-09 20:02:29.416923912 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package kf6-kcalendarcore
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2025 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,11 +20,11 @@
 
 %define sonum 6
 %define rname kcalendarcore
-# Full KF6 version (e.g. 6.16.0)
+# Full KF6 version (e.g. 6.17.0)
 %{!?_kf6_version: %global _kf6_version %{version}}
 %bcond_without released
 Name:           kf6-kcalendarcore
-Version:        6.16.0
+Version:        6.17.0
 Release:        0
 Summary:        Library to access and handle calendar data
 License:        LGPL-2.0-or-later


++++++ kcalendarcore-6.16.0.tar.xz -> kcalendarcore-6.17.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcalendarcore-6.16.0/CMakeLists.txt 
new/kcalendarcore-6.17.0/CMakeLists.txt
--- old/kcalendarcore-6.16.0/CMakeLists.txt     2025-07-04 17:09:46.000000000 
+0200
+++ new/kcalendarcore-6.17.0/CMakeLists.txt     2025-08-01 12:28:58.000000000 
+0200
@@ -1,11 +1,11 @@
 cmake_minimum_required(VERSION 3.16)
-set(KF_VERSION "6.16.0") # handled by release scripts
+set(KF_VERSION "6.17.0") # handled by release scripts
 
 project(KCalendarCore VERSION ${KF_VERSION})
 
 # ECM setup
 include(FeatureSummary)
-find_package(ECM 6.16.0  NO_MODULE)
+find_package(ECM 6.17.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/kcalendarcore-6.16.0/autotests/testrecurrenceexception.cpp 
new/kcalendarcore-6.17.0/autotests/testrecurrenceexception.cpp
--- old/kcalendarcore-6.16.0/autotests/testrecurrenceexception.cpp      
2025-07-04 17:09:46.000000000 +0200
+++ new/kcalendarcore-6.17.0/autotests/testrecurrenceexception.cpp      
2025-08-01 12:28:58.000000000 +0200
@@ -36,4 +36,30 @@
     // TODO dtCompleted
 }
 
+void TestRecurrenceException::testUpdateDtStart()
+{
+    const QDateTime dtstart(QDate(2025, 07, 22), QTime(13, 55, 0), 
QTimeZone::UTC);
+
+    KCalendarCore::Event::Ptr event(new KCalendarCore::Event);
+    event->setDtStart(dtstart);
+    event->setDtEnd(dtstart.addSecs(300));
+    event->recurrence()->setDaily(1);
+    event->recurrence()->setDuration(2);
+
+    KCalendarCore::MemoryCalendar::Ptr calendar(new 
KCalendarCore::MemoryCalendar(QTimeZone::utc()));
+    QVERIFY(calendar->addEvent(event));
+
+    KCalendarCore::Incidence::Ptr exception
+        = calendar->createException(event, dtstart.addDays(1));
+    QCOMPARE(exception->recurrenceId(), dtstart.addDays(1));
+    exception->setDtStart(exception->recurrenceId().addSecs(-3600));
+    QVERIFY(calendar->addIncidence(exception));
+
+    // Recurrence ids of exception should still match recurring
+    // event occurrences after a dtstart update.
+    event->setDtStart(dtstart.addSecs(300));
+    QVERIFY(event->recursAt(event->dtStart().addDays(1)));
+    QCOMPARE(exception->recurrenceId(), event->dtStart().addDays(1));
+}
+
 #include "moc_testrecurrenceexception.cpp"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kcalendarcore-6.16.0/autotests/testrecurrenceexception.h 
new/kcalendarcore-6.17.0/autotests/testrecurrenceexception.h
--- old/kcalendarcore-6.16.0/autotests/testrecurrenceexception.h        
2025-07-04 17:09:46.000000000 +0200
+++ new/kcalendarcore-6.17.0/autotests/testrecurrenceexception.h        
2025-08-01 12:28:58.000000000 +0200
@@ -14,6 +14,8 @@
     Q_OBJECT
 private Q_SLOTS:
     void testCreateTodoException();
+
+    void testUpdateDtStart();
 };
 
 #endif // TESTRECURRENCEEXCEPTION_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcalendarcore-6.16.0/src/icalformat_p.cpp 
new/kcalendarcore-6.17.0/src/icalformat_p.cpp
--- old/kcalendarcore-6.16.0/src/icalformat_p.cpp       2025-07-04 
17:09:46.000000000 +0200
+++ new/kcalendarcore-6.17.0/src/icalformat_p.cpp       2025-08-01 
12:28:58.000000000 +0200
@@ -1478,14 +1478,23 @@
     a.setCuType(cuType);
     a.customProperties().setCustomProperties(custom);
 
+    // TODO: support multiple delegated_to and delegated_from attendees
     p = icalproperty_get_first_parameter(attendee, ICAL_DELEGATEDTO_PARAMETER);
     if (p) {
+#if ICAL_CHECK_VERSION(3, 99, 99)
+        a.setDelegate(QLatin1String(icalparameter_get_delegatedto_nth(p, 0)));
+#else
         a.setDelegate(QLatin1String(icalparameter_get_delegatedto(p)));
+#endif
     }
 
     p = icalproperty_get_first_parameter(attendee, 
ICAL_DELEGATEDFROM_PARAMETER);
     if (p) {
+#if ICAL_CHECK_VERSION(3, 99, 99)
+        a.setDelegator(QLatin1String(icalparameter_get_delegatedfrom_nth(p, 
0)));
+#else
         a.setDelegator(QLatin1String(icalparameter_get_delegatedfrom(p)));
+#endif
     }
 
     return a;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcalendarcore-6.16.0/src/memorycalendar.cpp 
new/kcalendarcore-6.17.0/src/memorycalendar.cpp
--- old/kcalendarcore-6.16.0/src/memorycalendar.cpp     2025-07-04 
17:09:46.000000000 +0200
+++ new/kcalendarcore-6.17.0/src/memorycalendar.cpp     2025-08-01 
12:28:58.000000000 +0200
@@ -53,6 +53,7 @@
     MemoryCalendar *q;
     CalFormat *mFormat; // calendar format
     QString mIncidenceBeingUpdated; //  Instance identifier of Incidence 
currently being updated
+    QDateTime mDtStartBeingUpdated; // dtStart field of the incidence being 
updated
     bool mUpdateLastModified; // Call setLastModified() on incidence modific 
ations
 
     /**
@@ -477,6 +478,9 @@
         // Save it so we can detect changes to uid or recurringId.
         d->mIncidenceBeingUpdated = inc->instanceIdentifier();
 
+        // Save dtStart so we can detect a change and apply it to exceptions.
+        d->mDtStartBeingUpdated = inc->dtStart();
+
         const QDateTime dt = inc->dateTime(Incidence::RoleCalendarHashing);
         if (dt.isValid()) {
             
d->mIncidencesForDate[inc->type()].remove(dt.toTimeZone(timeZone()).date(), 
inc);
@@ -511,6 +515,15 @@
             
d->mIncidencesForDate[inc->type()].insert(dt.toTimeZone(timeZone()).date(), 
inc);
         }
 
+        // When dstart changes, move recurrence ids of exception accordingly.
+        if (inc->recurs() && inc->dtStart() != d->mDtStartBeingUpdated) {
+            const Duration delta(d->mDtStartBeingUpdated, inc->dtStart());
+            for (Incidence::Ptr exception : instances(inc)) {
+                
exception->setRecurrenceId(delta.end(exception->recurrenceId()));
+            }
+        }
+        d->mDtStartBeingUpdated == QDateTime();
+
         notifyIncidenceChanged(inc);
 
         setModified(true);

Reply via email to