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);