Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDetailsWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDetailsWidget.cpp	(revision 68325)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDetailsWidget.cpp	(revision 68326)
@@ -58,4 +58,5 @@
     , m_pLabelSize(0), m_pEditorSize(0), m_pErrorPaneSize(0)
     , m_pButtonBox(0)
+    , m_fValid(true)
     , m_pLayoutDetails(0)
 {
@@ -638,4 +639,7 @@
 void UIMediumDetailsWidget::revalidate(QWidget *pWidget /* = 0 */)
 {
+    /* Reset the result: */
+    m_fValid = true;
+
     /* Validate 'Options' tab content: */
     if (!pWidget || pWidget == m_pErrorPaneType)
@@ -644,4 +648,6 @@
         const bool fError = false;
         m_pErrorPaneType->setVisible(fError);
+        if (fError)
+            m_fValid = false;
     }
     if (!pWidget || pWidget == m_pErrorPaneLocation)
@@ -650,4 +656,6 @@
         const bool fError = false;
         m_pErrorPaneLocation->setVisible(fError);
+        if (fError)
+            m_fValid = false;
     }
     if (!pWidget || pWidget == m_pErrorPaneDescription)
@@ -656,4 +664,6 @@
         const bool fError = false;
         m_pErrorPaneDescription->setVisible(fError);
+        if (fError)
+            m_fValid = false;
     }
     if (!pWidget || pWidget == m_pErrorPaneSize)
@@ -662,4 +672,6 @@
         const bool fError = false;
         m_pErrorPaneSize->setVisible(fError);
+        if (fError)
+            m_fValid = false;
     }
 
@@ -706,9 +718,10 @@
     {
         m_pButtonBox->button(QDialogButtonBox::Cancel)->setEnabled(m_oldData != m_newData);
-        m_pButtonBox->button(QDialogButtonBox::Ok)->setEnabled(m_oldData != m_newData);
+        m_pButtonBox->button(QDialogButtonBox::Ok)->setEnabled((m_oldData != m_newData) && m_fValid);
     }
 
     /* Notify listeners as well: */
-    emit sigDataChanged(m_oldData != m_newData);
+    emit sigRejectAllowed(m_oldData != m_newData);
+    emit sigAcceptAllowed((m_oldData != m_newData) && m_fValid);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDetailsWidget.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDetailsWidget.h	(revision 68325)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumDetailsWidget.h	(revision 68326)
@@ -170,6 +170,8 @@
 signals:
 
-    /** Notifies listeners about data changed and whether it @a fDiffers. */
-    void sigDataChanged(bool fDiffers);
+    /** Notifies listeners about accept is allowed. */
+    void sigAcceptAllowed(bool fAllowed);
+    /** Notifies listeners about reject is allowed. */
+    void sigRejectAllowed(bool fAllowed);
 
     /** Notifies listeners about data change rejected and should be reseted. */
@@ -306,4 +308,7 @@
         /** Holds the button-box instance. */
         QIDialogButtonBox *m_pButtonBox;
+
+        /** Holds whether options are valid. */
+        bool m_fValid;
     /** @} */
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 68325)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 68326)
@@ -1560,6 +1560,8 @@
         m_pDetailsWidget->setVisible(false);
         m_pDetailsWidget->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-        connect(m_pDetailsWidget, &UIMediumDetailsWidget::sigDataChanged,
-                this, &UIMediumManagerWidget::sigMediumDetailsDataChanged);
+        connect(m_pDetailsWidget, &UIMediumDetailsWidget::sigAcceptAllowed,
+                this, &UIMediumManagerWidget::sigAcceptAllowed);
+        connect(m_pDetailsWidget, &UIMediumDetailsWidget::sigRejectAllowed,
+                this, &UIMediumManagerWidget::sigRejectAllowed);
         connect(m_pDetailsWidget, &UIMediumDetailsWidget::sigDataChangeRejected,
                 this, &UIMediumManagerWidget::sltResetMediumDetailsChanges);
@@ -2317,7 +2319,7 @@
     connect(widget(), &UIMediumManagerWidget::sigMediumDetailsVisibilityChanged,
             button(ButtonType_Reset), &QPushButton::setVisible);
-    connect(widget(), &UIMediumManagerWidget::sigMediumDetailsDataChanged,
+    connect(widget(), &UIMediumManagerWidget::sigAcceptAllowed,
             button(ButtonType_Apply), &QPushButton::setEnabled);
-    connect(widget(), &UIMediumManagerWidget::sigMediumDetailsDataChanged,
+    connect(widget(), &UIMediumManagerWidget::sigRejectAllowed,
             button(ButtonType_Reset), &QPushButton::setEnabled);
     connect(buttonBox(), &QIDialogButtonBox::clicked,
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h	(revision 68325)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h	(revision 68326)
@@ -64,6 +64,8 @@
     /** Notifies listeners about medium details-widget @a fVisible. */
     void sigMediumDetailsVisibilityChanged(bool fVisible);
-    /** Notifies listeners about medium details data @a fDiffers. */
-    void sigMediumDetailsDataChanged(bool fDiffers);
+    /** Notifies listeners about accept is @a fAllowed. */
+    void sigAcceptAllowed(bool fAllowed);
+    /** Notifies listeners about reject is @a fAllowed. */
+    void sigRejectAllowed(bool fAllowed);
 
 public:
