Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kf6-knotifications for openSUSE:Factory checked in at 2026-06-16 13:51:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kf6-knotifications (Old) and /work/SRC/openSUSE:Factory/.kf6-knotifications.new.1981 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kf6-knotifications" Tue Jun 16 13:51:11 2026 rev:28 rq:1358897 version:6.27.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kf6-knotifications/kf6-knotifications.changes 2026-05-11 16:57:38.445547585 +0200 +++ /work/SRC/openSUSE:Factory/.kf6-knotifications.new.1981/kf6-knotifications.changes 2026-06-16 13:56:02.299789512 +0200 @@ -1,0 +2,18 @@ +Sat Jun 6 11:42:17 UTC 2026 - Christophe Marin <[email protected]> + +- Update to 6.27.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/6/6.27.0 +- Changes since 6.26.0: + * Update dependency version to 6.27.0 + * android: Improve icon handling + * android: Confirm reception of inline replies + * android: Set Intent package names rather than invalid component names + * android: Fix invalid iterator access + * Don't update notifications before they have actually been sent + * android: Don't defer NotifyByAndroid::notify execution + * configure_package_config_file: drop unused PATH_VARS KDE_INSTALL_DBUSINTERFACEDIR + * Update version to 6.27.0 + +------------------------------------------------------------------- Old: ---- knotifications-6.26.0.tar.xz knotifications-6.26.0.tar.xz.sig New: ---- knotifications-6.27.0.tar.xz knotifications-6.27.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kf6-knotifications.spec ++++++ --- /var/tmp/diff_new_pack.MZ9f22/_old 2026-06-16 13:56:05.487922663 +0200 +++ /var/tmp/diff_new_pack.MZ9f22/_new 2026-06-16 13:56:05.507923498 +0200 @@ -22,21 +22,17 @@ %bcond_without kde_python_bindings %if %{with kde_python_bindings} -%if 0%{suse_version} > 1500 %define pythons %{primary_python} -%else -%{?sle15_python_module_pythons} -%endif %define mypython %pythons %define __mypython %{expand:%%__%{mypython}} %define mypython_sitearch %{expand:%%%{mypython}_sitearch} %endif -# Full KF6 version (e.g. 6.26.0) +# Full KF6 version (e.g. 6.27.0) %{!?_kf6_version: %global _kf6_version %{version}} %bcond_without released Name: kf6-knotifications -Version: 6.26.0 +Version: 6.27.0 Release: 0 Summary: KDE Desktop notifications License: LGPL-2.1-or-later ++++++ knotifications-6.26.0.tar.xz -> knotifications-6.27.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knotifications-6.26.0/CMakeLists.txt new/knotifications-6.27.0/CMakeLists.txt --- old/knotifications-6.26.0/CMakeLists.txt 2026-05-01 13:54:38.000000000 +0200 +++ new/knotifications-6.27.0/CMakeLists.txt 2026-06-05 17:48:22.000000000 +0200 @@ -1,12 +1,12 @@ cmake_minimum_required(VERSION 3.29) -set(KF_VERSION "6.26.0") # handled by release scripts -set(KF_DEP_VERSION "6.26.0") # handled by release scripts +set(KF_VERSION "6.27.0") # handled by release scripts +set(KF_DEP_VERSION "6.27.0") # handled by release scripts project(KNotifications VERSION ${KF_VERSION}) # ECM setup include(FeatureSummary) -find_package(ECM 6.26.0 NO_MODULE) +find_package(ECM 6.27.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) @@ -107,7 +107,7 @@ ecm_set_disabled_deprecation_versions( QT 6.11 - KF 6.23 + KF 6.26 ) add_subdirectory(src) @@ -130,7 +130,6 @@ configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/KF6NotificationsConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/KF6NotificationsConfig.cmake" - PATH_VARS KDE_INSTALL_DBUSINTERFACEDIR INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knotifications-6.26.0/poqm/ug/knotifications6_qt.po new/knotifications-6.27.0/poqm/ug/knotifications6_qt.po --- old/knotifications-6.26.0/poqm/ug/knotifications6_qt.po 2026-05-01 13:54:38.000000000 +0200 +++ new/knotifications-6.27.0/poqm/ug/knotifications6_qt.po 2026-06-05 17:48:23.000000000 +0200 @@ -8,60 +8,52 @@ "Project-Id-Version: kdelibs4\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2014-03-23 01:50+0000\n" -"PO-Revision-Date: 2013-09-08 07:05+0900\n" -"Last-Translator: Gheyret Kenji <[email protected]>\n" +"PO-Revision-Date: 2026-05-31 19:09-0400\n" +"Last-Translator: Abduqadir Abliz <[email protected]>\n" "Language-Team: Uyghur Computer Science Association <[email protected]>\n" "Language: ug\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 1.5.5\n" +"X-Generator: Poedit 3.9\n" "X-Qt-Contexts: true\n" -#, fuzzy #~| msgid "%1 (Link)" #~ msgctxt "KNotificationJobUiDelegate|" #~ msgid "%1 (Failed)" #~ msgstr "%1 (ئۇلانما)" -#, fuzzy #~| msgid "Unknown Application" #~ msgctxt "KNotificationRestrictions|" #~ msgid "Unknown Application" #~ msgstr "نامەلۇم پروگرامما" -#, fuzzy #~| msgid "&Minimize" #~ msgctxt "KStatusNotifierItem|@action:inmenu" #~ msgid "&Minimize" #~ msgstr "كىچىكلەت(&M)" -#, fuzzy #~| msgid "Quit" #~ msgctxt "KStatusNotifierItem|@action:inmenu" #~ msgid "Quit" #~ msgstr "ئاخىرلاشتۇر" -#, fuzzy #~| msgid "&Restore" #~ msgctxt "KStatusNotifierItem|@action:inmenu" #~ msgid "&Restore" #~ msgstr "ئەسلىگە كەلتۈر(&R)" -#, fuzzy #~| msgid "Confirm Quit From System Tray" #~ msgctxt "KStatusNotifierItem|@title:window" #~ msgid "Confirm Quit From System Tray" #~ msgstr "سىستېما قونداقتىن ئاخىرلىشىشنى جەزملەش" -#, fuzzy #~| msgid "<qt>Are you sure you want to quit <b>%1</b>?</qt>" #~ msgctxt "KStatusNotifierItem|" #~ msgid "<qt>Are you sure you want to quit <b>%1</b>?</qt>" #~ msgstr "<qt>راستلا <b>%1</b> نى ئاخىرلاشتۇرامسىز؟</qt>" -#, fuzzy #~| msgid "Quit" #~ msgctxt "KStatusNotifierItem|@action:button" #~ msgid "Quit" @@ -3743,7 +3735,6 @@ #~ msgid "Supply a username and password below." #~ msgstr "تۆۋەندە ئىشلەتكۈچى ئاتى ۋە ئىم تەمىنلەيدۇ." -#, fuzzy #~ msgid "Use this password:" #~ msgstr "ئىمنى ساقلا(&K)" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knotifications-6.26.0/src/android/org/kde/knotifications/KNotification.java new/knotifications-6.27.0/src/android/org/kde/knotifications/KNotification.java --- old/knotifications-6.26.0/src/android/org/kde/knotifications/KNotification.java 2026-05-01 13:54:38.000000000 +0200 +++ new/knotifications-6.27.0/src/android/org/kde/knotifications/KNotification.java 2026-06-05 17:48:23.000000000 +0200 @@ -23,6 +23,7 @@ public String richText; public String title; public Object icon; + public Object appIcon; public HashMap<String, String> actions = new HashMap<>(); public String channelId; public String channelName; @@ -40,10 +41,17 @@ public static final int HighUrgency = 70; public static final int CriticalUrgency = 90; - public void setIconFromData(byte[] data, int length) + public void setIconFromData(byte[] data) { if (Build.VERSION.SDK_INT >= 23) { - icon = Icon.createWithData(data, 0, length); + icon = Icon.createWithData(data, 0, data.length); + } + } + + public void setAppIconFromData(byte[] data) + { + if (Build.VERSION.SDK_INT >= 23) { + appIcon = Icon.createWithData(data, 0, data.length); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knotifications-6.26.0/src/android/org/kde/knotifications/NotifyByAndroid.java new/knotifications-6.27.0/src/android/org/kde/knotifications/NotifyByAndroid.java --- old/knotifications-6.26.0/src/android/org/kde/knotifications/NotifyByAndroid.java 2026-05-01 13:54:38.000000000 +0200 +++ new/knotifications-6.27.0/src/android/org/kde/knotifications/NotifyByAndroid.java 2026-06-05 17:48:23.000000000 +0200 @@ -117,8 +117,11 @@ builder = new Notification.Builder(m_ctx); } - if (Build.VERSION.SDK_INT >= 23) { - builder.setSmallIcon((Icon)notification.icon); + if (Build.VERSION.SDK_INT >= 23 && notification.icon != null) { + builder.setLargeIcon((Icon)notification.icon); + } + if (notification.appIcon != null) { + builder.setSmallIcon((Icon)notification.appIcon); } else { builder.setSmallIcon(m_ctx.getApplicationInfo().icon); } @@ -184,7 +187,7 @@ // taping the notification shows the app Intent intent = new Intent(m_ctx.getPackageName() + NOTIFICATION_OPENED); intent.putExtra(NOTIFICATION_ID_EXTRA, notification.id); - intent.setComponent(new ComponentName(m_ctx.getPackageName(), "Notifications")); + intent.setPackage(m_ctx.getPackageName()); PendingIntent contentIntent = PendingIntent.getBroadcast(m_ctx, m_uniquePendingIntentId++, intent, PendingIntent.FLAG_UPDATE_CURRENT | PENDING_INTENT_FLAG_IMMUTABLE); builder.setContentIntent(contentIntent); @@ -196,7 +199,7 @@ Intent actionIntent = new Intent(m_ctx.getPackageName() + NOTIFICATION_ACTION); actionIntent.putExtra(NOTIFICATION_ID_EXTRA, notification.id); actionIntent.putExtra(NOTIFICATION_ACTION_ID_EXTRA, id); - actionIntent.setComponent(new ComponentName(m_ctx.getPackageName(), "Notifications")); + actionIntent.setPackage(m_ctx.getPackageName()); PendingIntent pendingIntent = PendingIntent.getBroadcast(m_ctx, m_uniquePendingIntentId++, actionIntent, PendingIntent.FLAG_UPDATE_CURRENT | PENDING_INTENT_FLAG_IMMUTABLE); Notification.Action action = new Notification.Action.Builder(0, label, pendingIntent).build(); builder.addAction(action); @@ -206,7 +209,7 @@ if (notification.inlineReplyLabel != null) { Intent replyIntent = new Intent(m_ctx.getPackageName() + NOTIFICATION_REPLIED); replyIntent.putExtra(NOTIFICATION_ID_EXTRA, notification.id); - replyIntent.setComponent(new ComponentName(m_ctx.getPackageName(), "Notifications")); + replyIntent.setPackage(m_ctx.getPackageName()); PendingIntent pendingReplyIntent = PendingIntent.getBroadcast(m_ctx, m_uniquePendingIntentId++, replyIntent, PendingIntent.FLAG_UPDATE_CURRENT | PENDING_INTENT_FLAG_MUTABLE); RemoteInput input = new RemoteInput.Builder(REMOTE_INPUT_KEY) @@ -222,7 +225,7 @@ // notification about user closing the notification Intent deleteIntent = new Intent(m_ctx.getPackageName() + NOTIFICATION_DELETED); deleteIntent.putExtra(NOTIFICATION_ID_EXTRA, notification.id); - deleteIntent.setComponent(new ComponentName(m_ctx.getPackageName(), "Notifications")); + deleteIntent.setPackage(m_ctx.getPackageName()); if (notification.group != null) { deleteIntent.putExtra(NOTIFICATION_GROUP_EXTRA, notification.group); } @@ -321,11 +324,12 @@ builder = new Notification.Builder(m_ctx); } - if (Build.VERSION.SDK_INT >= 23) { - builder.setSmallIcon((Icon)notification.icon); + if (notification.appIcon != null) { + builder.setSmallIcon((Icon)notification.appIcon); } else { builder.setSmallIcon(m_ctx.getApplicationInfo().icon); } + builder.setContentTitle(notification.channelName); builder.setContentText(notification.channelDescription); builder.setGroup(notification.group); @@ -340,6 +344,7 @@ Intent deleteIntent = new Intent(m_ctx.getPackageName() + NOTIFICATION_DELETED); deleteIntent.putExtra(NOTIFICATION_GROUP_EXTRA, notification.group); deleteIntent.putExtra(NOTIFICATION_ID_EXTRA, group.groupId); + deleteIntent.setPackage(m_ctx.getPackageName()); builder.setDeleteIntent(PendingIntent.getBroadcast(m_ctx, m_uniquePendingIntentId++, deleteIntent, PendingIntent.FLAG_UPDATE_CURRENT | PENDING_INTENT_FLAG_IMMUTABLE)); // try to stay out of the normal id space for regular notifications diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knotifications-6.26.0/src/android_defaults.notifyrc new/knotifications-6.27.0/src/android_defaults.notifyrc --- old/knotifications-6.26.0/src/android_defaults.notifyrc 2026-05-01 13:54:38.000000000 +0200 +++ new/knotifications-6.27.0/src/android_defaults.notifyrc 2026-06-05 17:48:23.000000000 +0200 @@ -54,6 +54,7 @@ Name[ta]=முறிவுண்டாக்கும் சிக்கல் Name[tg]=Хатои ҷиддӣ Name[tr]=Onulmaz Hata +Name[ug]=ئېغىر خاتالىق Name[uk]=Критична помилка Name[vi]=Lỗi nghiêm trọng Name[zh_CN]=严重错误 @@ -173,6 +174,7 @@ Name[ta]=அறிவிப்பு Name[tg]=Огоҳинома Name[tr]=Bildirim +Name[ug]=ئۇقتۇرۇش Name[uk]=Сповіщення Name[vi]=Thông báo Name[zh_CN]=通知 @@ -291,6 +293,7 @@ Name[ta]=எச்சரிக்கை Name[tg]=Огоҳӣ Name[tr]=Uyarı +Name[ug]=ئاگاھلاندۇرۇش Name[uk]=Попередження Name[vi]=Cảnh báo Name[zh_CN]=警告 @@ -408,6 +411,7 @@ Name[ta]=மிகப்பெரிய சிக்கல் Name[tg]=Садама Name[tr]=Felaket +Name[ug]=ئېغىر مەسىلە Name[uk]=Катастрофа Name[vi]=Thảm hoạ Name[zh_CN]=严重故障 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knotifications-6.26.0/src/knotification.cpp new/knotifications-6.27.0/src/knotification.cpp --- old/knotifications-6.26.0/src/knotification.cpp 2026-05-01 13:54:38.000000000 +0200 +++ new/knotifications-6.27.0/src/knotification.cpp 2026-06-05 17:48:23.000000000 +0200 @@ -134,7 +134,7 @@ d->needUpdate = true; d->title = title; Q_EMIT titleChanged(); - if (d->id >= 0) { + if (d->id >= 0 && !d->isNew) { d->updateTimer.start(); } } @@ -148,7 +148,7 @@ d->needUpdate = true; d->text = text; Q_EMIT textChanged(); - if (d->id >= 0) { + if (d->id >= 0 && !d->isNew) { d->updateTimer.start(); } } @@ -162,7 +162,7 @@ d->needUpdate = true; d->iconName = icon; Q_EMIT iconNameChanged(); - if (d->id >= 0) { + if (d->id >= 0 && !d->isNew) { d->updateTimer.start(); } } @@ -181,7 +181,7 @@ { d->needUpdate = true; d->pixmap = pix; - if (d->id >= 0) { + if (d->id >= 0 && !d->isNew) { d->updateTimer.start(); } } @@ -200,7 +200,7 @@ d->actionIdCounter = 1; d->needUpdate = true; - if (d->id >= 0) { + if (d->id >= 0 && !d->isNew) { d->updateTimer.start(); } } @@ -212,7 +212,7 @@ KNotificationAction *action = new KNotificationAction(label); connect(action, &KNotificationAction::labelChanged, this, [this] { d->needUpdate = true; - if (d->id >= 0) { + if (d->id >= 0 && !d->isNew) { d->updateTimer.start(); } }); @@ -223,7 +223,7 @@ d->ownsActions = true; Q_EMIT actionsChanged(); - if (d->id >= 0) { + if (d->id >= 0 && !d->isNew) { d->updateTimer.start(); } @@ -250,7 +250,7 @@ ++idCounter; } - if (d->id >= 0) { + if (d->id >= 0 && !d->isNew) { d->updateTimer.start(); } } @@ -268,7 +268,7 @@ d->needUpdate = true; d->replyAction = std::move(replyAction); - if (d->id >= 0) { + if (d->id >= 0 && !d->isNew) { d->updateTimer.start(); } } @@ -284,7 +284,7 @@ d->defaultAction = new KNotificationAction(label); connect(d->defaultAction, &KNotificationAction::labelChanged, this, [this] { d->needUpdate = true; - if (d->id >= 0) { + if (d->id >= 0 && !d->isNew) { d->updateTimer.start(); } }); @@ -292,7 +292,7 @@ d->defaultAction->setId(QStringLiteral("default")); Q_EMIT defaultActionChanged(); - if (d->id >= 0) { + if (d->id >= 0 && !d->isNew) { d->updateTimer.start(); } @@ -312,7 +312,7 @@ d->defaultAction->setId(QStringLiteral("default")); Q_EMIT defaultActionChanged(); - if (d->id >= 0) { + if (d->id >= 0 && !d->isNew) { d->updateTimer.start(); } } @@ -336,7 +336,7 @@ d->needUpdate = true; d->flags = flags; Q_EMIT flagsChanged(); - if (d->id >= 0) { + if (d->id >= 0 && !d->isNew) { d->updateTimer.start(); } } @@ -379,7 +379,7 @@ d->needUpdate = true; d->urgency = urgency; Q_EMIT urgencyChanged(); - if (d->id >= 0) { + if (d->id >= 0 && !d->isNew) { d->updateTimer.start(); } } @@ -610,7 +610,7 @@ d->needUpdate = true; d->hints[hint] = value; - if (d->id >= 0) { + if (d->id >= 0 && !d->isNew) { d->updateTimer.start(); } Q_EMIT hintsChanged(); @@ -629,7 +629,7 @@ d->needUpdate = true; d->hints = hints; - if (d->id >= 0) { + if (d->id >= 0 && !d->isNew) { d->updateTimer.start(); } Q_EMIT hintsChanged(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knotifications-6.26.0/src/knotificationmanager.cpp new/knotifications-6.27.0/src/knotificationmanager.cpp --- old/knotifications-6.26.0/src/knotificationmanager.cpp 2026-05-01 13:54:38.000000000 +0200 +++ new/knotifications-6.27.0/src/knotificationmanager.cpp 2026-06-05 17:48:23.000000000 +0200 @@ -264,6 +264,7 @@ } else if (urgency == QLatin1String("Critical")) { n->setUrgency(KNotification::CriticalUrgency); } + n->d->needUpdate = false; } const auto actionsList = notifyActions.split(QLatin1Char('|')); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knotifications-6.26.0/src/notifybyandroid.cpp new/knotifications-6.27.0/src/notifybyandroid.cpp --- old/knotifications-6.26.0/src/notifybyandroid.cpp 2026-05-01 13:54:38.000000000 +0200 +++ new/knotifications-6.27.0/src/notifybyandroid.cpp 2026-06-05 17:48:23.000000000 +0200 @@ -16,6 +16,8 @@ #include <QBuffer> #include <QIcon> +using namespace Qt::Literals; + static NotifyByAndroid *s_instance = nullptr; static void notificationFinished(JNIEnv *env, jobject that, jint notificationId) @@ -94,19 +96,6 @@ return QStringLiteral("Popup"); } -void NotifyByAndroid::notify(KNotification *notification, const KNotifyConfig ¬ifyConfig) -{ - Q_UNUSED(notifyConfig); - // HACK work around that notification->id() is only populated after returning from here - // note that config will be invalid at that point, so we can't pass that along - QMetaObject::invokeMethod( - this, - [this, notification]() { - notifyDeferred(notification); - }, - Qt::QueuedConnection); -} - QJniObject NotifyByAndroid::createAndroidNotification(KNotification *notification, const KNotifyConfig ¬ifyConfig) const { QJniEnvironment env; @@ -127,21 +116,42 @@ } // icon - QPixmap pixmap; - if (!notification->iconName().isEmpty()) { - const auto icon = QIcon::fromTheme(notification->iconName()); - pixmap = icon.pixmap(32, 32); - } else { - pixmap = notification->pixmap(); - } - QByteArray iconData; - QBuffer buffer(&iconData); - buffer.open(QIODevice::WriteOnly); - pixmap.save(&buffer, "PNG"); - auto jIconData = env->NewByteArray(iconData.length()); - env->SetByteArrayRegion(jIconData, 0, iconData.length(), reinterpret_cast<const jbyte *>(iconData.constData())); - n.callMethod<void>("setIconFromData", "([BI)V", jIconData, iconData.length()); - env->DeleteLocalRef(jIconData); + { + QPixmap pixmap; + if (!notification->iconName().isEmpty()) { + const auto icon = QIcon::fromTheme(notification->iconName()); + pixmap = icon.pixmap(32, 32); + } else { + pixmap = notification->pixmap(); + } + QByteArray iconData; + QBuffer buffer(&iconData); + buffer.open(QIODevice::WriteOnly); + pixmap.save(&buffer, "PNG"); + n.callMethod<void>("setIconFromData", iconData); + } + + // (symbolic) application icon + { + QPixmap pixmap; + const auto appIconHint = notification->hints().value("x-kde-symbolic-app-icon"_L1); + if (appIconHint.typeId() == QMetaType::QString) { + const auto icon = QIcon::fromTheme(appIconHint.toString()); + pixmap = icon.pixmap(32, 32); + } else if (appIconHint.typeId() == QMetaType::QIcon) { + pixmap = appIconHint.value<QIcon>().pixmap(32, 32); + } else if (appIconHint.typeId() == QMetaType::QPixmap) { + pixmap = appIconHint.value<QPixmap>(); + } + + if (!pixmap.isNull()) { + QByteArray iconData; + QBuffer buffer(&iconData); + buffer.open(QIODevice::WriteOnly); + pixmap.save(&buffer, "PNG"); + n.callMethod<void>("setAppIconFromData", iconData); + } + } // actions const auto actions = notification->actions(); @@ -160,10 +170,9 @@ return n; } -void NotifyByAndroid::notifyDeferred(KNotification *notification) +void NotifyByAndroid::notify(KNotification *notification, const KNotifyConfig ¬ifyConfig) { - KNotifyConfig config(notification->appName(), notification->eventId()); - const auto n = createAndroidNotification(notification, config); + const auto n = createAndroidNotification(notification, notifyConfig); m_notifications.insert(notification->id(), notification); m_backend.callMethod<void>("notify", "(Lorg/kde/knotifications/KNotification;)V", n.object<jobject>()); @@ -188,9 +197,10 @@ if (it == m_notifications.end()) { return; } + const auto n = it.value(); m_notifications.erase(it); - if (it.value()) { - finish(it.value()); + if (n) { + finish(n); } } @@ -204,6 +214,13 @@ { qCDebug(LOG_KNOTIFICATIONS) << id << text; Q_EMIT replied(id, text); + + // confirm we got the reply, and thus stop the spinner animation + const auto it = m_notifications.constFind(id); + if (it != m_notifications.end() && it.value()) { + KNotifyConfig config(it.value()->appName(), it.value()->eventId()); + notify(it.value(), config); + } } #include "moc_notifybyandroid.cpp" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knotifications-6.26.0/src/notifybyandroid.h new/knotifications-6.27.0/src/notifybyandroid.h --- old/knotifications-6.26.0/src/notifybyandroid.h 2026-05-01 13:54:38.000000000 +0200 +++ new/knotifications-6.27.0/src/notifybyandroid.h 2026-06-05 17:48:23.000000000 +0200 @@ -32,7 +32,6 @@ void notificationInlineReply(int id, const QString &text); private: - void notifyDeferred(KNotification *notification); QJniObject createAndroidNotification(KNotification *notification, const KNotifyConfig ¬ifyConfig) const; QJniObject m_backend;
