Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 67968)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 67969)
@@ -1233,4 +1233,12 @@
              .arg(strLocationOld, strLocationNew),
           formatErrorInfo(comProgress));
+}
+
+void UIMessageCenter::cannotChangeMediumDescription(const CMedium &comMedium, const QString &strLocation, QWidget *pParent /* = 0 */) const
+{
+    error(pParent, MessageType_Error,
+          tr("<p>Error changing the description of the disk image <b>%1</b>.</p>")
+             .arg(strLocation),
+          formatErrorInfo(comMedium));
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h	(revision 67968)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h	(revision 67969)
@@ -247,4 +247,5 @@
     void cannotMoveMediumStorage(const CMedium &comMedium, const QString &strLocationOld, const QString &strLocationNew, QWidget *pParent = 0) const;
     void cannotMoveMediumStorage(const CProgress &comProgress, const QString &strLocationOld, const QString &strLocationNew, QWidget *pParent = 0) const;
+    void cannotChangeMediumDescription(const CMedium &comMedium, const QString &strLocation, QWidget *pParent = 0) const;
     bool confirmMediumRelease(const UIMedium &medium, QWidget *pParent = 0) const;
     bool confirmMediumRemoval(const UIMedium &medium, QWidget *pParent = 0) const;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDetailsWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDetailsWidget.cpp	(revision 67968)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDetailsWidget.cpp	(revision 67969)
@@ -26,4 +26,5 @@
 # include <QSlider>
 # include <QStackedLayout>
+# include <QTextEdit>
 # include <QVBoxLayout>
 
@@ -55,4 +56,5 @@
     , m_pLabelLocation(0), m_pSelectorLocation(0), m_pErrorPaneLocation(0)
     , m_pLabelSize(0), m_pEditorSize(0), m_pErrorPaneSize(0)
+    , m_pLabelDescription(0), m_pEditorDescription(0), m_pErrorPaneDescription(0)
     , m_pButtonBox(0)
     , m_pLayoutDetails(0)
@@ -93,4 +95,5 @@
     m_pLabelLocation->setText(tr("&Location:"));
     m_pLabelSize->setText(tr("&Size:"));
+    m_pLabelDescription->setText(tr("&Description:"));
 
     /* Translate fields: */
@@ -100,4 +103,5 @@
     m_pSelectorLocation->setToolTip(tr("Holds the location of this medium."));
     m_pEditorSize->setToolTip(tr("Holds the size of this medium."));
+    m_pEditorDescription->setToolTip(tr("Holds the description of this medium."));
 
     /* Translate button-box: */
@@ -143,4 +147,11 @@
 }
 
+void UIMediumDetailsWidget::sltDescriptionTextChanged()
+{
+    m_newData.m_options.m_strDescription = m_pEditorDescription->toPlainText();
+    revalidate(m_pErrorPaneDescription);
+    updateButtonStates();
+}
+
 void UIMediumDetailsWidget::sltHandleButtonBoxClick(QAbstractButton *pButton)
 {
@@ -373,4 +384,59 @@
             }
 
+            /* Create description label: */
+            m_pLabelDescription = new QLabel;
+            AssertPtrReturnVoid(m_pLabelDescription);
+            {
+                /* Configure label: */
+                m_pLabelDescription->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
+
+                /* Add into layout: */
+                pLayoutOptions->addWidget(m_pLabelDescription, 4, 0);
+            }
+
+            /* Create description layout: */
+            QGridLayout *pLayoutDescription = new QGridLayout;
+            AssertPtrReturnVoid(pLayoutDescription);
+            {
+                /* Configure layout: */
+                pLayoutDescription->setContentsMargins(0, 0, 0, 0);
+
+                /* Create description editor: */
+                m_pEditorDescription = new QTextEdit;
+                AssertPtrReturnVoid(m_pEditorDescription);
+                {
+                    /* Configure editor: */
+                    m_pLabelDescription->setBuddy(m_pEditorDescription);
+                    QFontMetrics fontMetrics = m_pEditorDescription->fontMetrics();
+                    QTextDocument *pTextDocument = m_pEditorDescription->document();
+                    const int iMinimumHeight = fontMetrics.lineSpacing() * 3
+                                             + pTextDocument->documentMargin() * 2
+                                             + m_pEditorDescription->frameWidth() * 2;
+                    m_pEditorDescription->setMaximumHeight(iMinimumHeight);
+                    connect(m_pEditorDescription, &QTextEdit::textChanged,
+                            this, &UIMediumDetailsWidget::sltDescriptionTextChanged);
+
+                    /* Add into layout: */
+                    pLayoutDescription->addWidget(m_pEditorDescription, 0, 0, 2, 1);
+                }
+
+                /* Create description error pane: */
+                m_pErrorPaneDescription = new QLabel;
+                AssertPtrReturnVoid(m_pErrorPaneDescription);
+                {
+                    /* Configure label: */
+                    m_pErrorPaneDescription->setAlignment(Qt::AlignCenter);
+                    m_pErrorPaneDescription->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+                    m_pErrorPaneDescription->setPixmap(UIIconPool::iconSet(":/status_error_16px.png")
+                                                       .pixmap(QSize(iIconMetric, iIconMetric)));
+
+                    /* Add into layout: */
+                    pLayoutDescription->addWidget(m_pErrorPaneDescription, 0, 1, Qt::AlignCenter);
+                }
+
+                /* Add into layout: */
+                pLayoutOptions->addLayout(pLayoutDescription, 4, 1, 2, 1);
+            }
+
             /* Create stretch: */
             QSpacerItem *pSpacer2 = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
@@ -378,5 +444,5 @@
             {
                 /* Add into layout: */
-                pLayoutOptions->addItem(pSpacer2, 4, 0, 1, 2);
+                pLayoutOptions->addItem(pSpacer2, 6, 0, 1, 2);
             }
 
@@ -392,5 +458,5 @@
 
                 /* Add into layout: */
-                pLayoutOptions->addWidget(m_pButtonBox, 5, 0, 1, 2);
+                pLayoutOptions->addWidget(m_pButtonBox, 7, 0, 1, 2);
             }
         }
@@ -531,4 +597,9 @@
     m_pEditorSize->setEnabled(fEnableResize);
     m_pEditorSize->setMediumSize(m_newData.m_options.m_uLogicalSize);
+
+    /* Load description: */
+    m_pLabelDescription->setEnabled(m_newData.m_fValid);
+    m_pEditorDescription->setEnabled(m_newData.m_fValid);
+    m_pEditorDescription->setPlainText(m_newData.m_options.m_strDescription);
 }
 
@@ -570,4 +641,10 @@
         const bool fError = false;
         m_pErrorPaneSize->setVisible(fError);
+    }
+    if (!pWidget || pWidget == m_pErrorPaneDescription)
+    {
+        /* Always valid for now: */
+        const bool fError = false;
+        m_pErrorPaneDescription->setVisible(fError);
     }
 
@@ -588,4 +665,7 @@
 //        m_pErrorPaneSize->setToolTip(tr("Cannot change medium size from <b>%1</b> to <b>%2</b>.")
 //                                         .arg(m_oldData.m_options.m_uLogicalSize).arg(m_newData.m_options.m_uLogicalSize));
+//    if (!pWidget || pWidget == m_pErrorPaneDescription)
+//        m_pErrorPaneDescription->setToolTip(tr("Cannot change medium description from <b>%1</b> to <b>%2</b>.")
+//                                               .arg(m_oldData.m_options.m_strDescription).arg(m_newData.m_options.m_strDescription));
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDetailsWidget.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDetailsWidget.h	(revision 67968)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDetailsWidget.h	(revision 67969)
@@ -35,4 +35,5 @@
 class QLabel;
 class QStackedLayout;
+class QTextEdit;
 class QWidget;
 class QILabel;
@@ -50,4 +51,5 @@
         , m_strLocation(QString())
         , m_uLogicalSize(0)
+        , m_strDescription(QString())
     {}
 
@@ -59,4 +61,5 @@
                && (m_strLocation == other.m_strLocation)
                && (m_uLogicalSize == other.m_uLogicalSize)
+               && (m_strDescription == other.m_strDescription)
                ;
     }
@@ -73,4 +76,6 @@
     /** Holds the logical size. */
     qulonglong m_uLogicalSize;
+    /** Holds the description. */
+    QString m_strDescription;
 };
 
@@ -202,4 +207,6 @@
         /** Handles size editor change. */
         void sltSizeValueChanged(qulonglong uSize);
+        /** Handles description text change. */
+        void sltDescriptionTextChanged();
 
         /** Handles button-box button click. */
@@ -290,4 +297,11 @@
         QLabel             *m_pErrorPaneSize;
 
+        /** Holds the description label. */
+        QLabel    *m_pLabelDescription;
+        /** Holds the description editor. */
+        QTextEdit *m_pEditorDescription;
+        /** Holds the description error pane. */
+        QLabel    *m_pErrorPaneDescription;
+
         /** Holds the button-box instance. */
         QIDialogButtonBox *m_pButtonBox;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 67968)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 67969)
@@ -388,4 +388,5 @@
     m_options.m_strLocation = m_guiMedium.location();
     m_options.m_uLogicalSize = m_guiMedium.logicalSizeInBytes();
+    m_options.m_strDescription = m_guiMedium.description();
     /* Gather medium details data: */
     m_details.m_aFields.clear();
@@ -990,4 +991,17 @@
                                                         this);
         }
+    }
+
+    /* Try to assign new medium description: */
+    if (   comMedium.isOk()
+        && newData.m_options.m_strDescription != oldData.m_options.m_strDescription)
+    {
+        comMedium.SetDescription(newData.m_options.m_strDescription);
+
+        /* Show error message if necessary: */
+        if (!comMedium.isOk())
+            msgCenter().cannotChangeMediumDescription(comMedium,
+                                                      oldData.m_options.m_strLocation,
+                                                      this);
     }
 
