Merge "Only cancel the group notification if launcher canceled last child" into ub-launcher3-master
diff --git a/src/com/android/launcher3/notification/NotificationListener.java b/src/com/android/launcher3/notification/NotificationListener.java
index cbdabf3..1fd7078 100644
--- a/src/com/android/launcher3/notification/NotificationListener.java
+++ b/src/com/android/launcher3/notification/NotificationListener.java
@@ -74,6 +74,9 @@
/** Maps keys to their corresponding current group key */
private final Map<String, String> mNotificationGroupKeyMap = new HashMap<>();
+ /** The last notification key that was dismissed from launcher UI */
+ private String mLastKeyDismissedByLauncher;
+
private SettingsObserver mNotificationBadgingObserver;
private final Handler.Callback mWorkerCallback = new Handler.Callback() {
@@ -251,13 +254,25 @@
}
NotificationGroup notificationGroup = mNotificationGroupMap.get(sbn.getGroupKey());
+ String key = sbn.getKey();
if (notificationGroup != null) {
- notificationGroup.removeChildKey(sbn.getKey());
+ notificationGroup.removeChildKey(key);
if (notificationGroup.isEmpty()) {
- cancelNotification(notificationGroup.getGroupSummaryKey());
+ if (key.equals(mLastKeyDismissedByLauncher)) {
+ // Only cancel the group notification if launcher dismissed the last child.
+ cancelNotification(notificationGroup.getGroupSummaryKey());
+ }
mNotificationGroupMap.remove(sbn.getGroupKey());
}
}
+ if (key.equals(mLastKeyDismissedByLauncher)) {
+ mLastKeyDismissedByLauncher = null;
+ }
+ }
+
+ public void cancelNotificationFromLauncher(String key) {
+ mLastKeyDismissedByLauncher = key;
+ cancelNotification(key);
}
@Override
diff --git a/src/com/android/launcher3/popup/PopupDataProvider.java b/src/com/android/launcher3/popup/PopupDataProvider.java
index 335426c..f1b8ec0 100644
--- a/src/com/android/launcher3/popup/PopupDataProvider.java
+++ b/src/com/android/launcher3/popup/PopupDataProvider.java
@@ -206,7 +206,7 @@
if (notificationListener == null) {
return;
}
- notificationListener.cancelNotification(notificationKey);
+ notificationListener.cancelNotificationFromLauncher(notificationKey);
}
public void setAllWidgets(ArrayList<WidgetListRowEntry> allWidgets) {