Index: trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationCenter.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationCenter.cpp	(revision 92294)
+++ trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationCenter.cpp	(revision 92295)
@@ -152,4 +152,5 @@
     , m_pOpenButton(0)
     , m_pKeepButton(0)
+    , m_pRemoveFinishedButton(0)
     , m_pLayoutItems(0)
     , m_pStateMachineSliding(0)
@@ -279,4 +280,6 @@
     if (m_pKeepButton)
         m_pKeepButton->setToolTip(tr("Keep finished progresses"));
+    if (m_pRemoveFinishedButton)
+        m_pRemoveFinishedButton->setToolTip(tr("Delete finished notifications"));
 }
 
@@ -362,4 +365,9 @@
 }
 
+void UINotificationCenter::sltHandleRemoveFinishedButtonClicked()
+{
+    m_pModel->revokeFinishedObjects();
+}
+
 void UINotificationCenter::sltHandleOpenTimerTimeout()
 {
@@ -469,4 +477,7 @@
                 m_pLayoutButtons->addWidget(m_pOpenButton);
             }
+
+            /* Add stretch: */
+            m_pLayoutButtons->addStretch(1);
 
             /* Prepare keep-button: */
@@ -481,5 +492,12 @@
             }
 
-            m_pLayoutButtons->addStretch();
+            /* Prepare remove-finished-button: */
+            m_pRemoveFinishedButton = new QIToolButton(this);
+            if (m_pRemoveFinishedButton)
+            {
+                m_pRemoveFinishedButton->setIcon(UIIconPool::iconSet(":/edata_remove_16px_x3.png"));
+                connect(m_pRemoveFinishedButton, &QIToolButton::clicked, this, &UINotificationCenter::sltHandleRemoveFinishedButtonClicked);
+                m_pLayoutButtons->addWidget(m_pRemoveFinishedButton);
+            }
 
             /* Add to layout: */
Index: trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationCenter.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationCenter.h	(revision 92294)
+++ trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationCenter.h	(revision 92295)
@@ -105,4 +105,6 @@
     /** Toggles notification-progresses keep approach. */
     void sltHandleKeepButtonToggled(bool fToggled);
+    /** Removes finished notifications. */
+    void sltHandleRemoveFinishedButtonClicked();
 
     /** Handles open-timer timeout. */
@@ -154,8 +156,10 @@
     /** Holds the buttons layout instance. */
     QHBoxLayout  *m_pLayoutButtons;
-    /** Holds the open button instance. */
+    /** Holds the open-button instance. */
     QIToolButton *m_pOpenButton;
-    /** Holds the keep button instance. */
+    /** Holds the keep-button instance. */
     QIToolButton *m_pKeepButton;
+    /** Holds the remove-finished-button instance. */
+    QIToolButton *m_pRemoveFinishedButton;
     /** Holds the items layout instance. */
     QVBoxLayout  *m_pLayoutItems;
Index: trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationModel.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationModel.cpp	(revision 92294)
+++ trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationModel.cpp	(revision 92295)
@@ -74,4 +74,25 @@
 }
 
+void UINotificationModel::revokeFinishedObjects()
+{
+    /* Check whether there are done objects: */
+    bool fChanged = false;
+    foreach (const QUuid &uId, m_ids)
+    {
+        UINotificationObject *pObject = m_objects.value(uId);
+        AssertPtrReturnVoid(pObject);
+        if (pObject->isDone())
+        {
+            /* Remove ID and object: */
+            delete m_objects.take(uId);
+            m_ids.removeAll(uId);
+            fChanged = true;
+        }
+    }
+    /* Notify listeners: */
+    if (fChanged)
+        emit sigChanged();
+}
+
 QList<QUuid> UINotificationModel::ids() const
 {
Index: trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationModel.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationModel.h	(revision 92294)
+++ trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationModel.h	(revision 92295)
@@ -57,4 +57,6 @@
     /** Returns whether there is a notification object referenced by @a uId. */
     bool hasObject(const QUuid &uId) const;
+    /** Revokes finished notification objects. */
+    void revokeFinishedObjects();
 
     /** Returns a list of registered notification object IDs. */
