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 
&notifyConfig)
-{
-    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 &notifyConfig) 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 
&notifyConfig)
 {
-    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 &notifyConfig) const;
 
     QJniObject m_backend;

Reply via email to