Merge "Only cancel the group notification if launcher canceled last child" into ub-launcher3-master
This commit is contained in:
commit
f985557937
|
@ -74,6 +74,9 @@ public class NotificationListener extends NotificationListenerService {
|
|||
/** 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 @@ public class NotificationListener extends NotificationListenerService {
|
|||
}
|
||||
|
||||
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
|
||||
|
|
|
@ -206,7 +206,7 @@ public class PopupDataProvider implements NotificationListener.NotificationsChan
|
|||
if (notificationListener == null) {
|
||||
return;
|
||||
}
|
||||
notificationListener.cancelNotification(notificationKey);
|
||||
notificationListener.cancelNotificationFromLauncher(notificationKey);
|
||||
}
|
||||
|
||||
public void setAllWidgets(ArrayList<WidgetListRowEntry> allWidgets) {
|
||||
|
|
Loading…
Reference in New Issue