Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.cpp	(revision 74482)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.cpp	(revision 74483)
@@ -308,4 +308,13 @@
     /* Then handle current item change (again!): */
     sltHandleChooserPaneIndexChangeDefault();
+}
+
+void UIVirtualBoxManagerWidget::sltHandleToolMenuRequested(UIToolsClass enmClass, const QPoint &position)
+{
+    m_pPaneTools->setToolsClass(enmClass);
+    if (m_pPaneTools->minimumSize().isValid())
+        m_pPaneTools->resize(m_pPaneTools->minimumSize());
+    m_pPaneTools->move(m_pPaneChooser->mapToGlobal(position));
+    m_pPaneTools->show();
 }
 
@@ -507,7 +516,4 @@
             else
                 m_pPaneTools->setToolsClass(UIToolsClass_Machine);
-
-            /* Add into layout: */
-            pLayoutMain->addWidget(m_pPaneTools);
         }
     }
@@ -536,4 +542,6 @@
     connect(m_pPaneChooser, &UIChooser::sigGroupSavingStateChanged,
             this, &UIVirtualBoxManagerWidget::sigGroupSavingStateChanged);
+    connect(m_pPaneChooser, &UIChooser::sigToolMenuRequested,
+            this, &UIVirtualBoxManagerWidget::sltHandleToolMenuRequested);
 
     /* Details-pane connections: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.h	(revision 74482)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.h	(revision 74483)
@@ -138,4 +138,7 @@
     /** @name Tools stuff.
       * @{ */
+        /** Handles tool menu request. */
+        void sltHandleToolMenuRequested(UIToolsClass enmClass, const QPoint &position);
+
         /** Handles signal abour Tools-pane index change. */
         void sltHandleToolsPaneIndexChange();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooser.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooser.cpp	(revision 74482)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooser.cpp	(revision 74483)
@@ -171,4 +171,6 @@
     connect(m_pChooserModel, &UIChooserModel::sigFocusChanged,
             m_pChooserView, &UIChooserView::sltFocusChanged);
+    connect(m_pChooserModel, &UIChooserModel::sigToolMenuRequested,
+            this, &UIChooser::sigToolMenuRequested);
 
     /* Setup chooser-view connections: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooser.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooser.h	(revision 74482)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooser.h	(revision 74483)
@@ -21,4 +21,7 @@
 /* Qt includes: */
 #include <QWidget>
+
+/* GUI includes: */
+#include "UIExtraDataDefs.h"
 
 /* Forward declarations: */
@@ -49,4 +52,7 @@
         /** Notifies listeners about toggling finished. */
         void sigToggleFinished();
+
+        /** Notifies listeners about tool popup-menu request for certain tool @a enmClass and in specified @a position. */
+        void sigToolMenuRequested(UIToolsClass enmClass, const QPoint &position);
     /** @} */
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserHandlerMouse.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserHandlerMouse.cpp	(revision 74482)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserHandlerMouse.cpp	(revision 74483)
@@ -76,8 +76,20 @@
                 /* Or a global one? */
                 else if (UIChooserItemGlobal *pGlobalItem = qgraphicsitem_cast<UIChooserItemGlobal*>(pItemUnderMouse))
-                    pClickedItem = pGlobalItem;
+                {
+                    const QPoint itemCursorPos = pGlobalItem->mapFromScene(scenePos).toPoint();
+                    if (model()->currentItem() == pGlobalItem && pGlobalItem->isToolsButtonArea(itemCursorPos))
+                        model()->handleToolButtonClick(pGlobalItem);
+                    else
+                        pClickedItem = pGlobalItem;
+                }
                 /* Or a machine one? */
                 else if (UIChooserItemMachine *pMachineItem = qgraphicsitem_cast<UIChooserItemMachine*>(pItemUnderMouse))
-                    pClickedItem = pMachineItem;
+                {
+                    const QPoint itemCursorPos = pMachineItem->mapFromScene(scenePos).toPoint();
+                    if (model()->currentItem() == pMachineItem && pMachineItem->isToolsButtonArea(itemCursorPos))
+                        model()->handleToolButtonClick(pMachineItem);
+                    else
+                        pClickedItem = pMachineItem;
+                }
                 /* If we had clicked one of required item types: */
                 if (pClickedItem && !pClickedItem->isRoot())
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp	(revision 74482)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp	(revision 74483)
@@ -150,4 +150,20 @@
 {
     return scene()->itemAt(position, deviceTransform);
+}
+
+void UIChooserModel::handleToolButtonClick(UIChooserItem *pItem)
+{
+    switch (pItem->type())
+    {
+        case UIChooserItemType_Global:
+            emit sigToolMenuRequested(UIToolsClass_Global, pItem->geometry().topRight().toPoint());
+            break;
+        case UIChooserItemType_Group:
+        case UIChooserItemType_Machine:
+            emit sigToolMenuRequested(UIToolsClass_Machine, pItem->geometry().topRight().toPoint());
+            break;
+        default:
+            break;
+    }
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.h	(revision 74482)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.h	(revision 74483)
@@ -28,4 +28,5 @@
 /* GUI includes: */
 #include "UIChooserItem.h"
+#include "UIExtraDataDefs.h"
 
 /* COM includes: */
@@ -63,4 +64,10 @@
 signals:
 
+    /** @name General stuff.
+      * @{ */
+        /** Notify listeners about tool menu popup request for certain @a enmClass and @a position. */
+        void sigToolMenuRequested(UIToolsClass enmClass, const QPoint &position);
+    /** @} */
+
     /** @name Selection stuff.
       * @{ */
@@ -120,4 +127,7 @@
         /** Returns item at @a position, taking into account possible @a deviceTransform. */
         QGraphicsItem *itemAt(const QPointF &position, const QTransform &deviceTransform = QTransform()) const;
+
+        /** Handles tool button click for certain @a pItem. */
+        void handleToolButtonClick(UIChooserItem *pItem);
     /** @} */
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UITools.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UITools.cpp	(revision 74482)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UITools.cpp	(revision 74483)
@@ -34,5 +34,5 @@
 
 UITools::UITools(UIVirtualBoxManagerWidget *pParent)
-    : QWidget(pParent)
+    : QWidget(pParent, Qt::Popup)
     , m_pManagerWidget(pParent)
     , m_pMainLayout(0)
@@ -122,5 +122,5 @@
     {
         /* Configure main-layout: */
-        m_pMainLayout->setContentsMargins(1, 0, 0, 0);
+        m_pMainLayout->setContentsMargins(1, 1, 1, 1);
         m_pMainLayout->setSpacing(0);
     }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsItem.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsItem.cpp	(revision 74482)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsItem.cpp	(revision 74483)
@@ -764,6 +764,5 @@
 
     /* Draw frame: */
-    pPainter->drawLine(rectangle.topLeft(), rectangle.topRight() + QPoint(1, 0));
-    pPainter->drawLine(rectangle.bottomLeft() + QPoint(0, 1), rectangle.bottomRight() + QPoint(1, 1));
+    pPainter->drawRect(rectangle);
 
     /* Restore painter: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsView.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsView.cpp	(revision 74482)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/tools/UIToolsView.cpp	(revision 74483)
@@ -147,4 +147,7 @@
     m_iMinimumHeightHint = iHint;
 
+    /* Set minimum view height according passed height-hint: */
+    setMinimumHeight(2 * frameWidth() + m_iMinimumHeightHint);
+
     /* Update scene-rect: */
     updateSceneRect();
