Index: trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 51642)
+++ trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 51649)
@@ -478,4 +478,5 @@
 	src/selector/UIVMDesktop.cpp \
 	src/settings/UISettingsDialogSpecific.cpp \
+	src/settings/global/UIGlobalSettingsInput.cpp \
 	src/settings/machine/UIMachineSettingsStorage.cpp \
 	src/settings/machine/UIMachineSettingsUSB.cpp \
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInput.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInput.cpp	(revision 51642)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInput.cpp	(revision 51649)
@@ -534,4 +534,34 @@
 
 
+/** Own QStyledItemDelegate implementation. */
+class UIStyledItemDelegate : public QStyledItemDelegate
+{
+    Q_OBJECT;
+
+public:
+
+    /** Constructor. */
+    UIStyledItemDelegate(QObject *pParent) : QStyledItemDelegate(pParent) {}
+
+private:
+
+    /** Returns the widget used to edit the item specified by @a index for editing.
+      * The @a pParent widget and style @a option are used to control how the editor widget appears.
+      * Besides Qt description copy-pasted above we are installing the hook to redirect editor's sigCommitData signal. */
+    QWidget* createEditor(QWidget *pParent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
+};
+
+QWidget* UIStyledItemDelegate::createEditor(QWidget *pParent, const QStyleOptionViewItem &option, const QModelIndex &index) const
+{
+    /* Call to base-class to get actual editor created: */
+    QWidget *pEditor = QStyledItemDelegate::createEditor(pParent, option, index);
+    /* All the stuff we actually need from UIStyledItemDelegate is to redirect this one signal: */
+    if (qobject_cast<UIHotKeyEditor*>(pEditor) || qobject_cast<UIHostComboEditor*>(pEditor))
+        connect(pEditor, SIGNAL(sigCommitData(QWidget*)), this, SIGNAL(commitData(QWidget*)));
+    /* Return actual editor: */
+    return pEditor;
+}
+
+
 UIHotKeyTable::UIHotKeyTable(QWidget *pParent, UIHotKeyTableModel *pModel, const QString &strObjectName)
     : QTableView(pParent)
@@ -558,26 +588,24 @@
     horizontalHeader()->setResizeMode(UIHotKeyTableSection_Value, QHeaderView::Stretch);
 
-    /* Register delegate editor: */
-    if (QAbstractItemDelegate *pAbstractItemDelegate = itemDelegate())
-    {
-        if (QStyledItemDelegate *pStyledItemDelegate = qobject_cast<QStyledItemDelegate*>(pAbstractItemDelegate))
-        {
-            /* Create new item editor factory: */
-            QItemEditorFactory *pNewItemEditorFactory = new QItemEditorFactory;
-
-            /* Register UIHotKeyEditor as the UIHotKey editor: */
-            int iHotKeyTypeId = qRegisterMetaType<UIHotKey>();
-            QStandardItemEditorCreator<UIHotKeyEditor> *pHotKeyItemEditorCreator = new QStandardItemEditorCreator<UIHotKeyEditor>();
-            pNewItemEditorFactory->registerEditor((QVariant::Type)iHotKeyTypeId, pHotKeyItemEditorCreator);
-
-            /* Register UIHostComboEditor as the UIHostComboWrapper: */
-            int iHostComboTypeId = qRegisterMetaType<UIHostComboWrapper>();
-            QStandardItemEditorCreator<UIHostComboEditor> *pHostComboItemEditorCreator = new QStandardItemEditorCreator<UIHostComboEditor>();
-            pNewItemEditorFactory->registerEditor((QVariant::Type)iHostComboTypeId, pHostComboItemEditorCreator);
-
-            /* Set configured item editor factory for table delegate: */
-            pStyledItemDelegate->setItemEditorFactory(pNewItemEditorFactory);
-        }
-    }
+    /* Reinstall delegate: */
+    delete itemDelegate();
+    UIStyledItemDelegate *pStyledItemDelegate = new UIStyledItemDelegate(this);
+    setItemDelegate(pStyledItemDelegate);
+
+    /* Create new item editor factory: */
+    QItemEditorFactory *pNewItemEditorFactory = new QItemEditorFactory;
+
+    /* Register UIHotKeyEditor as the UIHotKey editor: */
+    int iHotKeyTypeId = qRegisterMetaType<UIHotKey>();
+    QStandardItemEditorCreator<UIHotKeyEditor> *pHotKeyItemEditorCreator = new QStandardItemEditorCreator<UIHotKeyEditor>();
+    pNewItemEditorFactory->registerEditor((QVariant::Type)iHotKeyTypeId, pHotKeyItemEditorCreator);
+
+    /* Register UIHostComboEditor as the UIHostComboWrapper: */
+    int iHostComboTypeId = qRegisterMetaType<UIHostComboWrapper>();
+    QStandardItemEditorCreator<UIHostComboEditor> *pHostComboItemEditorCreator = new QStandardItemEditorCreator<UIHostComboEditor>();
+    pNewItemEditorFactory->registerEditor((QVariant::Type)iHostComboTypeId, pHostComboItemEditorCreator);
+
+    /* Set configured item editor factory for table delegate: */
+    pStyledItemDelegate->setItemEditorFactory(pNewItemEditorFactory);
 }
 
@@ -592,2 +620,4 @@
 }
 
+#include "UIGlobalSettingsInput.moc"
+
Index: trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.cpp	(revision 51642)
+++ trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.cpp	(revision 51649)
@@ -323,4 +323,10 @@
 }
 
+void UIHostComboEditor::sltCommitData()
+{
+    /* Commit data to the listener: */
+    emit sigCommitData(this);
+}
+
 void UIHostComboEditor::prepare()
 {
@@ -338,4 +344,5 @@
             /* Configure UIHostComboEditorPrivate instance: */
             setFocusProxy(m_pEditor);
+            connect(m_pEditor, SIGNAL(sigDataChanged()), this, SLOT(sltCommitData()));
         }
         /* Create 'clear' tool-button: */
@@ -446,4 +453,6 @@
     /* Move the focus to text-field: */
     setFocus();
+    /* Notify data changed: */
+    emit sigDataChanged();
 }
 
@@ -704,4 +713,6 @@
         if (m_pressedKeys.isEmpty())
             m_fStartNewSequence = true;
+        /* Notify data changed: */
+        emit sigDataChanged();
     }
     /* Make sure the user see what happens: */
@@ -732,7 +743,8 @@
             m_pressedKeys << iKeyCode;
             m_shownKeys.insert(iKeyCode, UINativeHotKey::toString(iKeyCode));
-
             /* Remember what we already started a sequence: */
             m_fStartNewSequence = false;
+            /* Notify data changed: */
+            emit sigDataChanged();
         }
     }
Index: trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.h	(revision 51642)
+++ trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.h	(revision 51649)
@@ -82,8 +82,18 @@
     Q_PROPERTY(UIHostComboWrapper combo READ combo WRITE setCombo USER true);
 
+signals:
+
+    /** Notifies listener about data should be committed. */
+    void sigCommitData(QWidget *pThis);
+
 public:
 
     /** Constructs host-combo editor for passed @a pParent. */
     UIHostComboEditor(QWidget *pParent);
+
+private slots:
+
+    /** Notifies listener about data should be committed. */
+    void sltCommitData();
 
 private:
@@ -110,4 +120,9 @@
 {
     Q_OBJECT;
+
+signals:
+
+    /** Notifies parent about data changed. */
+    void sigDataChanged();
 
 public:
Index: trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIHotKeyEditor.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIHotKeyEditor.cpp	(revision 51642)
+++ trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIHotKeyEditor.cpp	(revision 51649)
@@ -152,4 +152,6 @@
     /* Move the focut to text-field: */
     m_pLineEdit->setFocus();
+    /* Commit data to the listener: */
+    emit sigCommitData(this);
 }
 
@@ -162,4 +164,6 @@
     /* Move the focut to text-field: */
     m_pLineEdit->setFocus();
+    /* Commit data to the listener: */
+    emit sigCommitData(this);
 }
 
@@ -436,4 +440,6 @@
     /* Save what we've got: */
     m_hotKey.setSequence(strSequence);
+    /* Commit data to the listener: */
+    emit sigCommitData(this);
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIHotKeyEditor.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIHotKeyEditor.h	(revision 51642)
+++ trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIHotKeyEditor.h	(revision 51649)
@@ -94,4 +94,9 @@
     Q_PROPERTY(UIHotKey hotKey READ hotKey WRITE setHotKey USER true);
 
+signals:
+
+    /** Notifies listener about data should be committed. */
+    void sigCommitData(QWidget *pThis);
+
 public:
 
