Index: trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationModel.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationModel.cpp	(revision 90687)
+++ trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationModel.cpp	(revision 90688)
@@ -16,6 +16,10 @@
  */
 
+/* Qt includes: */
+#include <QSet>
+
 /* GUI includes: */
 #include "UICommon.h"
+#include "UIExtraDataManager.h"
 #include "UINotificationModel.h"
 #include "UINotificationObject.h"
@@ -75,9 +79,18 @@
 }
 
-void UINotificationModel::sltHandleAboutToClose()
+void UINotificationModel::sltHandleAboutToClose(bool fDismiss)
 {
     /* Determine sender: */
     UINotificationObject *pSender = qobject_cast<UINotificationObject*>(sender());
     AssertPtrReturnVoid(pSender);
+
+    /* Dismiss message if requested: */
+    if (fDismiss && !pSender->internalName().isEmpty())
+    {
+        QSet<QString> suppressedMessages = gEDataManager->suppressedMessages().toSet();
+        suppressedMessages << pSender->internalName();
+        gEDataManager->setSuppressedMessages(suppressedMessages.toList());
+    }
+
     /* Revoke it from internal storage: */
     const QUuid uId = m_objects.key(pSender);
Index: trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationModel.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationModel.h	(revision 90687)
+++ trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationModel.h	(revision 90688)
@@ -63,6 +63,7 @@
 private slots:
 
-    /** Handles request about to close sender() notification object. */
-    void sltHandleAboutToClose();
+    /** Handles request about to close sender() notification object.
+      * @param  fDismiss  Brings whether message closed as dismissed. */
+    void sltHandleAboutToClose(bool fDismiss);
 
     /** Handles broadcast request to detach COM stuff. */
Index: trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObject.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObject.cpp	(revision 90687)
+++ trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObject.cpp	(revision 90688)
@@ -34,7 +34,12 @@
 }
 
+void UINotificationObject::dismiss()
+{
+    emit sigAboutToClose(true);
+}
+
 void UINotificationObject::close()
 {
-    emit sigAboutToClose();
+    emit sigAboutToClose(false);
 }
 
@@ -70,4 +75,9 @@
 }
 
+QString UINotificationSimple::internalName() const
+{
+    return m_strInternalName;
+}
+
 void UINotificationSimple::handle()
 {
@@ -122,4 +132,9 @@
 {
     return true;
+}
+
+QString UINotificationProgress::internalName() const
+{
+    return QString();
 }
 
@@ -195,4 +210,9 @@
 {
     return true;
+}
+
+QString UINotificationDownloader::internalName() const
+{
+    return QString();
 }
 
@@ -292,4 +312,9 @@
 }
 
+QString UINotificationNewVersionChecker::internalName() const
+{
+    return QString();
+}
+
 void UINotificationNewVersionChecker::handle()
 {
Index: trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObject.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObject.h	(revision 90687)
+++ trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObject.h	(revision 90688)
@@ -45,6 +45,7 @@
 signals:
 
-    /** Notifies model about closing. */
-    void sigAboutToClose();
+    /** Notifies model about closing.
+      * @param  fDismiss  Brings whether message closed as dismissed. */
+    void sigAboutToClose(bool fDismiss);
 
 public:
@@ -59,4 +60,6 @@
     /** Returns object details. */
     virtual QString details() const = 0;
+    /** Returns object internal name. */
+    virtual QString internalName() const = 0;
     /** Handles notification-object being added. */
     virtual void handle() = 0;
@@ -64,4 +67,6 @@
 public slots:
 
+    /** Notifies model about dismissing. */
+    virtual void dismiss();
     /** Notifies model about closing. */
     virtual void close();
@@ -91,4 +96,6 @@
     /** Returns object details. */
     virtual QString details() const /* override final */;
+    /** Returns object internal name. */
+    virtual QString internalName() const /* override final */;
     /** Handles notification-object being added. */
     virtual void handle() /* override final */;
@@ -143,4 +150,6 @@
     /** Returns whether object is critical. */
     virtual bool isCritical() const /* override */;
+    /** Returns object internal name. */
+    virtual QString internalName() const /* override final */;
     /** Handles notification-object being added. */
     virtual void handle() /* override final */;
@@ -205,4 +214,6 @@
     /** Returns whether object is critical. */
     virtual bool isCritical() const /* override */;
+    /** Returns object internal name. */
+    virtual QString internalName() const /* override final */;
     /** Handles notification-object being added. */
     virtual void handle() /* override final */;
@@ -268,4 +279,6 @@
     /** Returns whether object is critical. */
     virtual bool isCritical() const /* override */;
+    /** Returns object internal name. */
+    virtual QString internalName() const /* override final */;
     /** Handles notification-object being added. */
     virtual void handle() /* override final */;
Index: trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjectItem.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjectItem.cpp	(revision 90687)
+++ trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjectItem.cpp	(revision 90688)
@@ -44,4 +44,5 @@
     , m_pLayoutUpper(0)
     , m_pLabelName(0)
+    , m_pButtonForget(0)
     , m_pButtonClose(0)
     , m_pLabelDetails(0)
@@ -66,4 +67,17 @@
                 m_pLabelName->setText(m_pObject->name());
                 m_pLayoutUpper->addWidget(m_pLabelName);
+            }
+
+            /* Prepare forget button: */
+            if (!m_pObject->internalName().isEmpty())
+                m_pButtonForget = new QIToolButton(this);
+            if (m_pButtonForget)
+            {
+                m_pButtonForget->setIcon(UIIconPool::iconSet(":/close_popup_16px.png"));
+                m_pButtonForget->setIconSize(QSize(10, 10));
+                connect(m_pButtonForget, &QIToolButton::clicked,
+                        m_pObject, &UINotificationObject::dismiss);
+
+                m_pLayoutUpper->addWidget(m_pButtonForget);
             }
 
@@ -92,7 +106,9 @@
             m_pLabelDetails->setBrowserFont(myFont);
             m_pLabelDetails->setVisible(false);
-            const int iHint = m_pLabelName->minimumSizeHint().width()
-                            + m_pLayoutUpper->spacing()
-                            + m_pButtonClose->minimumSizeHint().width();
+            int iHint = m_pLabelName->minimumSizeHint().width();
+            if (m_pButtonForget)
+                iHint += m_pLayoutUpper->spacing() + m_pButtonForget->minimumSizeHint().width();
+            if (m_pButtonClose)
+                iHint += m_pLayoutUpper->spacing() + m_pButtonClose->minimumSizeHint().width();
             m_pLabelDetails->setMinimumTextWidth(iHint);
             m_pLabelDetails->setText(m_pObject->details());
Index: trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjectItem.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjectItem.h	(revision 90687)
+++ trunk/src/VBox/Frontends/VirtualBox/src/notificationcenter/UINotificationObjectItem.h	(revision 90688)
@@ -67,4 +67,6 @@
     /** Holds the name label instance. */
     QLabel          *m_pLabelName;
+    /** Holds the forget button instance. */
+    QIToolButton    *m_pButtonForget;
     /** Holds the close button instance. */
     QIToolButton    *m_pButtonClose;
