diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
index a51ee4d..9778a3a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
@@ -119,11 +119,22 @@
             group.expanded = added.row.areChildrenExpanded();
             updateSuppression(group);
             if (!group.children.isEmpty()) {
+                HashSet<NotificationData.Entry> childrenCopy =
+                        (HashSet<NotificationData.Entry>) group.children.clone();
+                for (NotificationData.Entry child : childrenCopy) {
+                    onEntryBecomingChild(child);
+                }
                 mListener.onGroupCreatedFromChildren(group);
             }
         }
     }
 
+    private void onEntryBecomingChild(NotificationData.Entry entry) {
+        if (entry.row.isHeadsUp()) {
+            onHeadsUpStateChanged(entry, true);
+        }
+    }
+
     public void onEntryBundlingUpdated(final NotificationData.Entry updated,
             final String overrideGroupKey) {
         final StatusBarNotification oldSbn = updated.notification.clone();
@@ -188,6 +199,8 @@
                 updateSuppression(mGroupMap.get(oldKey));
                 updateSuppression(mGroupMap.get(newKey));
             }
+        } else if (!isGroupChild(oldNotification) && isGroupChild(entry.notification)) {
+            onEntryBecomingChild(entry);
         }
     }
 
@@ -354,7 +367,6 @@
                 mListener.onGroupsChanged();
             } else {
                 handleSuppressedSummaryHeadsUpped(entry);
-
             }
         } else {
             if (mIsolatedEntries.containsKey(sbn.getKey())) {
