Index: /trunk/src/VBox/Frontends/VirtualBox/include/VBoxGlobal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/include/VBoxGlobal.h	(revision 2184)
+++ /trunk/src/VBox/Frontends/VirtualBox/include/VBoxGlobal.h	(revision 2185)
@@ -134,17 +134,4 @@
 };
 
-class QIConstrainKeeper : public QObject
-{
-    Q_OBJECT
-
-public:
-
-    QIConstrainKeeper (QWidget*);
-
-private:
-
-    bool eventFilter (QObject*, QEvent*);
-};
-
 // VBoxGlobal
 ////////////////////////////////////////////////////////////////////////////////
Index: /trunk/src/VBox/Frontends/VirtualBox/include/VBoxUtils.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/include/VBoxUtils.h	(revision 2184)
+++ /trunk/src/VBox/Frontends/VirtualBox/include/VBoxUtils.h	(revision 2185)
@@ -126,4 +126,45 @@
 };
 
+/** 
+ *  Watches the given widget and makes sure the minimum widget size set by the layout
+ *  manager does never get smaller than the previous minimum size set by the
+ *  layout manager. This way, widgets with dynamic contents (i.e. text on some
+ *  toggle buttons) will be able only to grow, never shrink, to avoid flicker
+ *  during alternate contents updates (Pause -> Resume -> Pause -> ...).
+ * 
+ *  @todo not finished
+ */
+class QIConstraintKeeper : public QObject
+{
+    Q_OBJECT
+
+public:
+
+    QIConstraintKeeper (QWidget *aParent) : QObject (aParent)
+    {
+        aParent->setMinimumSize (aParent->size());
+        aParent->installEventFilter (this);
+    }
+
+private:
+
+    bool eventFilter (QObject *aObject, QEvent *aEvent)
+    {
+        if (aObject == parent() && aEvent->type() == QEvent::Resize)
+        {
+            QResizeEvent *ev = static_cast<QResizeEvent*> (aEvent);
+            QSize oldSize = ev->oldSize();
+            QSize newSize = ev->size();
+            int maxWidth = newSize.width() > oldSize.width() ?
+                newSize.width() : oldSize.width();
+            int maxHeight = newSize.height() > oldSize.height() ?
+                newSize.height() : oldSize.height();
+            if (maxWidth > oldSize.width() || maxHeight > oldSize.height())
+                ((QWidget*)parent())->setMinimumSize (maxWidth, maxHeight);
+        }
+        return QObject::eventFilter (aObject, aEvent);
+    }
+};
+
 #endif // __VBoxUtils_h__
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp	(revision 2184)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp	(revision 2185)
@@ -470,30 +470,4 @@
 
 #endif /* Q_WS_WIN */
-
-// QIConstrainKeeper
-////////////////////////////////////////////////////////////////////////////////
-
-QIConstrainKeeper::QIConstrainKeeper (QWidget *aParent) : QObject (aParent)
-{
-    aParent->setMinimumSize (aParent->size());
-    aParent->installEventFilter (this);
-}
-
-bool QIConstrainKeeper::eventFilter (QObject *aObject, QEvent *aEvent)
-{
-    if (aObject == parent() && aEvent->type() == QEvent::Resize)
-    {
-        QResizeEvent *ev = static_cast<QResizeEvent*> (aEvent);
-        QSize oldSize = ev->oldSize();
-        QSize newSize = ev->size();
-        int maxWidth = newSize.width() > oldSize.width() ?
-            newSize.width() : oldSize.width();
-        int maxHeight = newSize.height() > oldSize.height() ?
-            newSize.height() : oldSize.height();
-        if (maxWidth > oldSize.width() || maxHeight > oldSize.height())
-            ((QWidget*)parent())->setMinimumSize (maxWidth, maxHeight);
-    }
-    return QObject::eventFilter (aObject, aEvent);
-}
 
 // VBoxGlobal
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxSelectorWnd.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxSelectorWnd.cpp	(revision 2184)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxSelectorWnd.cpp	(revision 2185)
@@ -982,4 +982,6 @@
         case QEvent::Show:
         {
+        /// @todo improve
+#if 0
             /* Constrain StartVM button size */
             QObjectList *list = queryList ("QToolButton",
@@ -988,5 +990,6 @@
                 static_cast<QToolButton*> (list->first()) : 0;
             if (actionButton)
-                new QIConstrainKeeper (actionButton);
+                new QIConstraintKeeper (actionButton);
+#endif
             break;
         }
Index: /trunk/src/VBox/Frontends/VirtualBox/ui/VBoxVMSettingsDlg.ui
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/ui/VBoxVMSettingsDlg.ui	(revision 2184)
+++ /trunk/src/VBox/Frontends/VirtualBox/ui/VBoxVMSettingsDlg.ui	(revision 2185)
@@ -2805,5 +2805,5 @@
     <variable access="private">VBoxMediaComboBox *cbISOFloppy;</variable>
     <variable access="private">VBoxUSBMenu *usbDevicesMenu;</variable>
-    <variable access="private">QLabel *whatsThisLabel;</variable>
+    <variable access="private">QIRichLabel *whatsThisLabel;</variable>
     <variable access="private">BootItemsList *tblBootOrder;</variable>
 </variables>
@@ -2841,4 +2841,5 @@
     <slot>cdMediaChanged()</slot>
     <slot>fdMediaChanged()</slot>
+    <slot>processAdjustSize()</slot>
     <slot>updateInterfaces( QWidget* )</slot>
     <slot>networkPageUpdate( QWidget* )</slot>
Index: /trunk/src/VBox/Frontends/VirtualBox/ui/VBoxVMSettingsDlg.ui.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/ui/VBoxVMSettingsDlg.ui.h	(revision 2184)
+++ /trunk/src/VBox/Frontends/VirtualBox/ui/VBoxVMSettingsDlg.ui.h	(revision 2185)
@@ -404,10 +404,9 @@
     whatsThisCandidate = NULL;
 
-    whatsThisLabel = new QLabel (this, "whatsThisLabel");
-    whatsThisLabel->setTextFormat (Qt::RichText);
+    whatsThisLabel = new QIRichLabel (this, "whatsThisLabel");
     VBoxVMSettingsDlgLayout->addWidget (whatsThisLabel, 2, 1);
 
     whatsThisLabel->setFocusPolicy (QWidget::NoFocus);
-    whatsThisLabel->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Expanding);
+    whatsThisLabel->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Fixed);
     whatsThisLabel->setBackgroundMode (QLabel::PaletteMidlight);
     whatsThisLabel->setFrameShape (QLabel::Box);
@@ -419,5 +418,5 @@
                                        QLabel::AlignTop));
 
-    whatsThisLabel->setMinimumHeight (whatsThisLabel->frameWidth() * 2 +
+    whatsThisLabel->setFixedHeight (whatsThisLabel->frameWidth() * 2 +
                                       6 /* seems that RichText adds some margin */ +
                                       whatsThisLabel->fontMetrics().lineSpacing() * 3);
@@ -425,4 +424,6 @@
                                      6 /* seems that RichText adds some margin */ +
                                      whatsThisLabel->fontMetrics().width ('m') * 40);
+    /// @todo possibly, remove after QIConstraintKeeper is properly done
+    connect (whatsThisLabel, SIGNAL (textChanged()), this, SLOT (processAdjustSize())); 
 
     /*
@@ -799,6 +800,19 @@
     VBoxGlobal::centerWidget (this, parentWidget());
 
-    new QIConstrainKeeper (whatsThisLabel);
-}
+    /// @todo improve
+#if 0
+    new QIConstraintKeeper (whatsThisLabel);
+#endif
+}
+
+/// @todo possibly, remove after QIConstraintKeeper is properly done
+/// (should be at least possible to move this functionality into it)
+void VBoxVMSettingsDlg::processAdjustSize() 	 	 
+{ 	 	 
+    int newHeight = minimumSize().height(); 	 	 
+    int oldHeight = height(); 	 	 
+    if (newHeight > oldHeight) 	 	 
+        resize (minimumSize()); 	 	 
+} 	 	 
 
 void VBoxVMSettingsDlg::updateShortcuts()
