Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIFormEditorWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIFormEditorWidget.cpp	(revision 79719)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIFormEditorWidget.cpp	(revision 79720)
@@ -25,5 +25,4 @@
 #include <QSortFilterProxyModel>
 #include <QSpinBox>
-#include <QStyledItemDelegate>
 #include <QTextEdit>
 #include <QVBoxLayout>
@@ -32,4 +31,5 @@
 #include "QIDialog.h"
 #include "QIDialogButtonBox.h"
+#include "QIStyledItemDelegate.h"
 #include "QITableView.h"
 #include "QIWithRetranslateUI.h"
@@ -202,4 +202,9 @@
     Q_PROPERTY(TextData text READ text WRITE setText USER true);
 
+signals:
+
+    /** Notifies listener about data should be committed. */
+    void sigCommitData(QWidget *pThis);
+
 public:
 
@@ -242,8 +247,18 @@
     Q_PROPERTY(ChoiceData choice READ choice WRITE setChoice USER true);
 
+signals:
+
+    /** Notifies listener about data should be committed. */
+    void sigCommitData(QWidget *pThis);
+
 public:
 
     /** Constructs ChoiceData editor passing @a pParent to the base-class. */
     ChoiceEditor(QWidget *pParent = 0);
+
+private slots:
+
+    /** Handles current index change. */
+    void sltCurrentIndexChanged();
 
 private:
@@ -261,4 +276,9 @@
     Q_OBJECT;
     Q_PROPERTY(RangedIntegerData rangedInteger READ rangedInteger WRITE setRangedInteger USER true);
+
+signals:
+
+    /** Notifies listener about data should be committed. */
+    void sigCommitData(QWidget *pThis);
 
 public:
@@ -584,8 +604,16 @@
     : QComboBox(pParent)
 {
+    connect(this, static_cast<void(ChoiceEditor::*)(int)>(&ChoiceEditor::currentIndexChanged),
+            this, &ChoiceEditor::sltCurrentIndexChanged);
+}
+
+void ChoiceEditor::sltCurrentIndexChanged()
+{
+    emit sigCommitData(this);
 }
 
 void ChoiceEditor::setChoice(const ChoiceData &choice)
 {
+    clear();
     addItems(choice.values().toList());
     setCurrentIndex(choice.selectedIndex());
@@ -1437,7 +1465,10 @@
             {
                 /* But is this also styled item delegate? */
-                QStyledItemDelegate *pStyledItemDelegate = qobject_cast<QStyledItemDelegate*>(pAbstractItemDelegate);
+                QIStyledItemDelegate *pStyledItemDelegate = qobject_cast<QIStyledItemDelegate*>(pAbstractItemDelegate);
                 if (pStyledItemDelegate)
                 {
+                    /* Configure item delegate: */
+                    pStyledItemDelegate->setWatchForEditorDataCommits(true);
+
                     /* Create new item editor factory: */
                     QItemEditorFactory *pNewItemEditorFactory = new QItemEditorFactory;
