Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIToolPaneMachine.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIToolPaneMachine.cpp	(revision 73675)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIToolPaneMachine.cpp	(revision 73676)
@@ -134,5 +134,5 @@
             {
                 /* Create Snapshots pane: */
-                m_pPaneSnapshots = new UISnapshotPane(m_pActionPool);
+                m_pPaneSnapshots = new UISnapshotPane(m_pActionPool, false /* show toolbar? */);
                 AssertPtrReturnVoid(m_pPaneSnapshots);
                 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp	(revision 73675)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp	(revision 73676)
@@ -112,4 +112,5 @@
     , m_pGroupMenuAction(0)
     , m_pMachineMenuAction(0)
+    , m_pSnapshotMenuAction(0)
     , m_pManagerVirtualMedia(0)
     , m_pManagerHostNetwork(0)
@@ -1227,4 +1228,8 @@
     m_pMachineMenuAction = menuBar()->addMenu(actionPool()->action(UIActionIndexST_M_Machine)->menu());
 
+    /* Prepare Snapshot-menu: */
+    prepareMenuSnapshot(actionPool()->action(UIActionIndexST_M_Snapshot)->menu());
+    m_pSnapshotMenuAction = menuBar()->addMenu(actionPool()->action(UIActionIndexST_M_Snapshot)->menu());
+
 #ifdef VBOX_WS_MAC
     /* Prepare 'Window' menu: */
@@ -1599,4 +1604,39 @@
 }
 
+void UIVirtualBoxManager::prepareMenuSnapshot(QMenu *pMenu)
+{
+    /* Do not touch if filled already: */
+    if (!pMenu->isEmpty())
+        return;
+
+#ifdef VBOX_WS_X11
+    // WORKAROUND:
+    // There is an issue under Ubuntu which uses special kind of QPA
+    // plugin (appmenu-qt5) which redirects actions added to Qt menu-bar
+    // directly to Ubuntu Application menu-bar. In that case action
+    // shortcuts are not being handled by the Qt and that way ignored.
+    // As a workaround we can add those actions into QMainWindow as well.
+    addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Take));
+    addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Delete));
+    addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Restore));
+    addAction(actionPool()->action(UIActionIndexST_M_Snapshot_T_Properties));
+    addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Clone));
+#endif /* VBOX_WS_X11 */
+
+    /* Populate Snapshot-menu: */
+    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Take));
+    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Delete));
+    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Restore));
+    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_T_Properties));
+    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Clone));
+
+    /* Remember action list: */
+    m_snapshotActions << actionPool()->action(UIActionIndexST_M_Snapshot_S_Take)
+                      << actionPool()->action(UIActionIndexST_M_Snapshot_S_Delete)
+                      << actionPool()->action(UIActionIndexST_M_Snapshot_S_Restore)
+                      << actionPool()->action(UIActionIndexST_M_Snapshot_T_Properties)
+                      << actionPool()->action(UIActionIndexST_M_Snapshot_S_Clone);
+}
+
 void UIVirtualBoxManager::prepareStatusBar()
 {
@@ -1888,4 +1928,13 @@
     m_pGroupMenuAction->setVisible(fMachineOrGroupMenuShown && !fMachineMenuShown);
 
+    /* Determine whether Snapshot actions should be visible: */
+    const bool fSnapshotMenuShown = fMachineOrGroupMenuShown && m_pWidget->currentMachineTool() == ToolTypeMachine_Snapshots;
+    m_pSnapshotMenuAction->setVisible(fSnapshotMenuShown);
+    actionPool()->action(UIActionIndexST_M_Snapshot_S_Take)->setVisible(fSnapshotMenuShown);
+    actionPool()->action(UIActionIndexST_M_Snapshot_S_Delete)->setVisible(fSnapshotMenuShown);
+    actionPool()->action(UIActionIndexST_M_Snapshot_S_Restore)->setVisible(fSnapshotMenuShown);
+    actionPool()->action(UIActionIndexST_M_Snapshot_T_Properties)->setVisible(fSnapshotMenuShown);
+    actionPool()->action(UIActionIndexST_M_Snapshot_S_Clone)->setVisible(fSnapshotMenuShown);
+
     /* Hide action shortcuts: */
     if (!fMachineMenuShown)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.h	(revision 73675)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.h	(revision 73676)
@@ -248,4 +248,6 @@
         /** Prepares @a pMenu Machine => Close. */
         void prepareMenuMachineClose(QMenu *pMenu);
+        /** Prepares @a pMenu Snapshot. */
+        void prepareMenuSnapshot(QMenu *pMenu);
         /** Prepares status-bar. */
         void prepareStatusBar();
@@ -348,4 +350,9 @@
     QAction          *m_pMachineMenuAction;
 
+    /** Holds the list of Snapshot menu actions. */
+    QList<UIAction*>  m_snapshotActions;
+    /** Holds the Snapshot menu parent action. */
+    QAction          *m_pSnapshotMenuAction;
+
     /** Holds the Virtual Media Manager window instance. */
     QIManagerDialog *m_pManagerVirtualMedia;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.cpp	(revision 73675)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.cpp	(revision 73676)
@@ -104,4 +104,14 @@
 }
 
+ToolTypeMachine UIVirtualBoxManagerWidget::currentMachineTool() const
+{
+    return m_pPaneToolsMachine->currentTool();
+}
+
+ToolTypeGlobal UIVirtualBoxManagerWidget::currentGlobalTool() const
+{
+    return m_pPaneToolsGlobal->currentTool();
+}
+
 bool UIVirtualBoxManagerWidget::isToolOpened(ToolTypeMachine enmType) const
 {
@@ -393,8 +403,17 @@
         m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Discard));
         m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow));
+
+        /* Add Snapshot actions block: */
+        m_pToolBar->addSeparator();
+        m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Take));
+        m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Delete));
+        m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Restore));
+        m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_T_Properties));
+        m_pToolBar->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Clone));
+
 #ifdef VBOX_WS_MAC
         // WORKAROUND:
         // Actually Qt should do that itself but by some unknown reason it sometimes
-        // forget to update toolbar after changing its actions on cocoa platform.
+        // forget to update toolbar after changing its actions on Cocoa platform.
         connect(actionPool()->action(UIActionIndexST_M_Machine_S_New), &UIAction::changed,
                 m_pToolBar, static_cast<void(UIToolBar::*)(void)>(&UIToolBar::update));
@@ -405,7 +424,5 @@
         connect(actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow), &UIAction::changed,
                 m_pToolBar, static_cast<void(UIToolBar::*)(void)>(&UIToolBar::update));
-#endif /* VBOX_WS_MAC */
-
-#ifdef VBOX_WS_MAC
+
         // WORKAROUND:
         // There is a bug in Qt Cocoa which result in showing a "more arrow" when
@@ -414,5 +431,5 @@
         // after changing the text.
         m_pToolBar->updateLayout();
-#endif
+#endif /* VBOX_WS_MAC */
     }
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.h	(revision 73675)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManagerWidget.h	(revision 73676)
@@ -86,4 +86,8 @@
         bool isSingleGroupSelected() const;
 
+        /** Returns a type of curent Machine tool. */
+        ToolTypeMachine currentMachineTool() const;
+        /** Returns a type of curent Global tool. */
+        ToolTypeGlobal currentGlobalTool() const;
         /** Returns whether Machine tool of passed @a enmType is opened. */
         bool isToolOpened(ToolTypeMachine enmType) const;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotPane.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotPane.cpp	(revision 73675)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotPane.cpp	(revision 73676)
@@ -452,7 +452,8 @@
 *********************************************************************************************************************************/
 
-UISnapshotPane::UISnapshotPane(UIActionPool *pActionPool, QWidget *pParent /* = 0 */)
+UISnapshotPane::UISnapshotPane(UIActionPool *pActionPool, bool fShowToolbar /* = true */, QWidget *pParent /* = 0 */)
     : QIWithRetranslateUI<QWidget>(pParent)
     , m_pActionPool(pActionPool)
+    , m_fShowToolbar(fShowToolbar)
     , m_enmSessionState(KSessionState_Null)
     , m_fShapshotOperationsAllowed(false)
@@ -1220,6 +1221,7 @@
 #endif
 
-        /* Prepare toolbar: */
-        prepareToolbar();
+        /* Prepare toolbar, if requested: */
+        if (m_fShowToolbar)
+            prepareToolbar();
         /* Prepare snapshot tree: */
         prepareTreeWidget();
@@ -1233,5 +1235,5 @@
     /* Create snapshot toolbar: */
     m_pToolBar = new UIToolBar(this);
-    AssertPtrReturnVoid(m_pToolBar);
+    if (m_pToolBar)
     {
         /* Configure toolbar: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotPane.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotPane.h	(revision 73675)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/snapshots/UISnapshotPane.h	(revision 73676)
@@ -58,5 +58,5 @@
 
     /** Constructs snapshot pane passing @a pParent to the base-class. */
-    UISnapshotPane(UIActionPool *pActionPool, QWidget *pParent = 0);
+    UISnapshotPane(UIActionPool *pActionPool, bool fShowToolbar = true, QWidget *pParent = 0);
     /** Destructs snapshot pane. */
     virtual ~UISnapshotPane() /* override */;
@@ -198,4 +198,6 @@
         /** Holds the action-pool reference. */
         UIActionPool  *m_pActionPool;
+        /** Holds whether we should show toolbar. */
+        bool           m_fShowToolbar;
         /** Holds the COM machine object. */
         CMachine       m_comMachine;
