Index: /trunk/src/VBox/Frontends/VirtualBox4/include/VBoxConsoleWnd.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox4/include/VBoxConsoleWnd.h	(revision 7677)
+++ /trunk/src/VBox/Frontends/VirtualBox4/include/VBoxConsoleWnd.h	(revision 7678)
@@ -156,10 +156,10 @@
     void prepareNetworkMenu();
 
-    void setDynamicMenuItemStatusTip (int aId);
-
-    void captureFloppy (int aId);
-    void captureDVD (int aId);
-    void activateNetworkMenu (int aId);
-    void switchUSB (int aId);
+    void setDynamicMenuItemStatusTip (QAction *aAction);
+
+    void captureFloppy (QAction *aAction);
+    void captureDVD (QAction *aAction);
+    void activateNetworkMenu (QAction *aAction);
+    void switchUSB (QAction *aAction);
 
     void statusTipChanged (const QString &);
@@ -243,29 +243,25 @@
 
     // Devices popup menus
-    QMenu *devicesMenu;
-    QMenu *devicesMountFloppyMenu;
-    QMenu *devicesMountDVDMenu;
-    QMenu *devicesSFMenu;
-    QMenu *devicesNetworkMenu;
-    VBoxUSBMenu *devicesUSBMenu;
-    VBoxSwitchMenu *devicesVRDPMenu;
-
-    int devicesUSBMenuSeparatorId;
-    int devicesVRDPMenuSeparatorId;
-    int devicesSFMenuSeparatorId;
-
     bool waitForStatusBarChange;
     bool statusBarChangedInside;
 
-    QSpacerItem *mShiftingSpacerLeft;
-    QSpacerItem *mShiftingSpacerTop;
-    QSpacerItem *mShiftingSpacerRight;
-    QSpacerItem *mShiftingSpacerBottom;
-    QSize mMaskShift;
-
+    QAction *mDevicesUSBMenuSeparator;
+    QAction *mDevicesVRDPMenuSeparator;
+    QAction *mDevicesSFMenuSeparator;
+
+    QMenu *mVMMenu;
+    QMenu *mDevicesMenu;
+    QMenu *mDevicesMountFloppyMenu;
+    QMenu *mDevicesMountDVDMenu;
+    /* see showIndicatorContextMenu for a description of mDevicesSFMenu */
+    /* QMenu *mDevicesSFMenu; */
+    QMenu *mDevicesNetworkMenu;
+    VBoxUSBMenu *mDevicesUSBMenu;
+    /* VBoxSwitchMenu *mDevicesVRDPMenu; */
 #ifdef VBOX_WITH_DEBUGGER_GUI
     // Debugger popup menu
-    Q3PopupMenu *dbgMenu;
-#endif
+    QMenu *mDbgMenu;
+#endif
+    QMenu *mHelpMenu;
 
     // Menu identifiers
@@ -283,4 +279,10 @@
     };
 
+    QSpacerItem *mShiftingSpacerLeft;
+    QSpacerItem *mShiftingSpacerTop;
+    QSpacerItem *mShiftingSpacerRight;
+    QSpacerItem *mShiftingSpacerBottom;
+    QSize mMaskShift;
+
     CSession csession;
 
@@ -300,6 +302,6 @@
     bool no_auto_close : 1;
 
-    QMap <int, CHostDVDDrive> hostDVDMap;
-    QMap <int, CHostFloppyDrive> hostFloppyMap;
+    QMap <QAction *, CHostDVDDrive> hostDVDMap;
+    QMap <QAction *, CHostFloppyDrive> hostFloppyMap;
 
     QPoint normal_pos;
Index: /trunk/src/VBox/Frontends/VirtualBox4/include/VBoxGlobal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox4/include/VBoxGlobal.h	(revision 7677)
+++ /trunk/src/VBox/Frontends/VirtualBox4/include/VBoxGlobal.h	(revision 7678)
@@ -31,4 +31,5 @@
 #include <qthread.h>
 #include <q3popupmenu.h>
+#include <QMenu>
 #include <qtooltip.h>
 
@@ -717,5 +718,5 @@
  *  This class provides the list of USB devices attached to the host.
  */
-class VBoxUSBMenu : public Q3PopupMenu
+class VBoxUSBMenu : public QMenu
 {
     Q_OBJECT
@@ -723,9 +724,7 @@
 public:
 
-    enum { USBDevicesMenuNoDevicesId = 1 };
-
     VBoxUSBMenu (QWidget *);
 
-    const CUSBDevice& getUSB (int);
+    const CUSBDevice& getUSB (QAction *aAction);
 
     void setConsole (const CConsole &);
@@ -735,12 +734,10 @@
     void processAboutToShow();
 
-    void processHighlighted (int);
-
 private:
-
-    QMap <int, CUSBDevice> mUSBDevicesMap;
+    bool event(QEvent *aEvent);
+
+    QMap <QAction *, CUSBDevice> mUSBDevicesMap;
     CConsole mConsole;
 };
-
 
 /**
Index: /trunk/src/VBox/Frontends/VirtualBox4/src/VBoxConsoleWnd.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox4/src/VBoxConsoleWnd.cpp	(revision 7677)
+++ /trunk/src/VBox/Frontends/VirtualBox4/src/VBoxConsoleWnd.cpp	(revision 7678)
@@ -118,6 +118,4 @@
     , mIsSeamless (false)
     , mIsSeamlessSupported (false)
-#warning port me
-//    , normal_wflags (getWFlags())
     , was_max (false)
     , console_style (0)
@@ -283,82 +281,73 @@
     /* Machine submenu */
 
-    QMenu *vmMenu = new QMenu (this);
+    mVMMenu = menuBar()->addMenu (QString::null);
+    mMainMenu->addMenu (mVMMenu);
 
     /* dynamic & status line popup menus */
-    vmAutoresizeMenu = new VBoxSwitchMenu (vmMenu, vmAutoresizeGuestAction);
-    vmDisMouseIntegrMenu = new VBoxSwitchMenu (vmMenu, vmDisableMouseIntegrAction,
+    vmAutoresizeMenu = new VBoxSwitchMenu (mVMMenu, vmAutoresizeGuestAction);
+    vmDisMouseIntegrMenu = new VBoxSwitchMenu (mVMMenu, vmDisableMouseIntegrAction,
                                                true /* inverted toggle state */);
 
-    vmMenu->addAction (vmFullscreenAction);
-    vmMenu->addAction (vmSeamlessAction);
-    vmMenu->addAction (vmAdjustWindowAction);
-    vmMenu->addAction (vmAutoresizeGuestAction);
-    vmMenu->addSeparator();
-    vmMenu->addAction (vmDisableMouseIntegrAction);
-    vmMenu->addSeparator();
-    vmMenu->addAction (vmTypeCADAction);
+    mVMMenu->addAction (vmFullscreenAction);
+    mVMMenu->addAction (vmSeamlessAction);
+    mVMMenu->addAction (vmAdjustWindowAction);
+    mVMMenu->addAction (vmAutoresizeGuestAction);
+    mVMMenu->addSeparator();
+    mVMMenu->addAction (vmDisableMouseIntegrAction);
+    mVMMenu->addSeparator();
+    mVMMenu->addAction (vmTypeCADAction);
 #if defined(Q_WS_X11)
-    vmMenu->addAction (vmTypeCABSAction);
-#endif
-    vmMenu->addSeparator();
-    vmMenu->addAction (vmTakeSnapshotAction);
-    vmMenu->addSeparator();
-    vmMenu->addAction (vmShowInformationDlgAction);
-    vmMenu->addSeparator();
-    vmMenu->addAction (vmResetAction);
-    vmMenu->addAction (vmPauseAction);
-    vmMenu->addAction (vmACPIShutdownAction);
-    vmMenu->addSeparator();
-    vmMenu->addAction (vmCloseAction);
-
-    menuBar()->insertItem (QString::null, vmMenu, vmMenuId);
-    mMainMenu->insertItem (QString::null, vmMenu, vmMenuId);
+    mVMMenu->addAction (vmTypeCABSAction);
+#endif
+    mVMMenu->addSeparator();
+    mVMMenu->addAction (vmTakeSnapshotAction);
+    mVMMenu->addSeparator();
+    mVMMenu->addAction (vmShowInformationDlgAction);
+    mVMMenu->addSeparator();
+    mVMMenu->addAction (vmResetAction);
+    mVMMenu->addAction (vmPauseAction);
+    mVMMenu->addAction (vmACPIShutdownAction);
+    mVMMenu->addSeparator();
+    mVMMenu->addAction (vmCloseAction);
 
     /* Devices submenu */
 
-    devicesMenu = new QMenu (this);
+    mDevicesMenu = menuBar()->addMenu (QString::null);
+    mMainMenu->addMenu (mDevicesMenu);
 
     /* dynamic & statusline popup menus */
-    devicesMountFloppyMenu = new QMenu (devicesMenu);
-    devicesMountDVDMenu = new QMenu (devicesMenu);
-    devicesSFMenu = new QMenu (devicesMenu);
-    devicesNetworkMenu = new QMenu (devicesMenu);
-    devicesUSBMenu = new VBoxUSBMenu (devicesMenu);
-    devicesVRDPMenu = new VBoxSwitchMenu (devicesMenu, devicesSwitchVrdpAction);
-
-    devicesMenu->insertItem (VBoxGlobal::iconSet (":/cd_16px.png", ":/cd_disabled_16px.png"),
-        QString::null, devicesMountDVDMenu, devicesMountDVDMenuId);
-    devicesMenu->addAction (devicesUnmountDVDAction);
-    devicesMenu->addSeparator();
-
-    devicesMenu->insertItem (VBoxGlobal::iconSet (":/fd_16px.png", ":/fd_disabled_16px.png"),
-        QString::null, devicesMountFloppyMenu, devicesMountFloppyMenuId);
-    devicesMenu->addAction (devicesUnmountFloppyAction);
-    devicesMenu->addSeparator();
-
-    devicesMenu->insertItem (VBoxGlobal::iconSet (":/nw_16px.png", ":/nw_disabled_16px.png"),
-        QString::null, devicesNetworkMenu, devicesNetworkMenuId);
-    devicesMenu->addSeparator();
-
-    devicesMenu->insertItem (VBoxGlobal::iconSet (":/usb_16px.png", ":/usb_disabled_16px.png"),
-        QString::null, devicesUSBMenu, devicesUSBMenuId);
-    devicesUSBMenuSeparatorId = devicesMenu->insertSeparator();
-
-    devicesMenu->addAction (devicesSFDialogAction);
-    devicesSFMenuSeparatorId = devicesMenu->insertSeparator();
-    devicesMenu->addAction (devicesSFDialogAction);
-
-    devicesMenu->addAction (devicesSwitchVrdpAction);
-    devicesVRDPMenuSeparatorId = devicesMenu->insertSeparator();
-
-    devicesMenu->addAction (devicesInstallGuestToolsAction);
-
-    menuBar()->insertItem (QString::null, devicesMenu, devicesMenuId);
-    mMainMenu->insertItem (QString::null, devicesMenu, devicesMenuId);
+
+    mDevicesMountDVDMenu = mDevicesMenu->addMenu (VBoxGlobal::iconSet (":/cd_16px.png", ":/cd_disabled_16px.png"), QString::null);
+    mDevicesMenu->addAction (devicesUnmountDVDAction);
+    mDevicesMenu->addSeparator();
+
+    mDevicesMountFloppyMenu = mDevicesMenu->addMenu (VBoxGlobal::iconSet (":/fd_16px.png", ":/fd_disabled_16px.png"), QString::null);
+    mDevicesMenu->addAction (devicesUnmountFloppyAction);
+    mDevicesMenu->addSeparator();
+
+    mDevicesNetworkMenu = mDevicesMenu->addMenu (VBoxGlobal::iconSet (":/nw_16px.png", ":/nw_disabled_16px.png"), QString::null);
+    mDevicesMenu->addSeparator();
+
+    mDevicesUSBMenu = new VBoxUSBMenu (mDevicesMenu);
+    mDevicesMenu->addMenu (mDevicesUSBMenu);
+    mDevicesUSBMenu->setIcon (VBoxGlobal::iconSet (":/usb_16px.png", ":/usb_disabled_16px.png"));
+    mDevicesUSBMenuSeparator = mDevicesMenu->addSeparator();
+
+    /* see showIndicatorContextMenu for a description of mDevicesSFMenu */
+    /* mDevicesSFMenu = mDevicesMenu->addMenu (QString::null); */
+    mDevicesMenu->addAction (devicesSFDialogAction);
+    mDevicesSFMenuSeparator = mDevicesMenu->addSeparator();
+
+    /* Currently not needed cause there is no state icon in the statusbar */
+    /* mDevicesVRDPMenu = new VBoxSwitchMenu (mDevicesMenu, devicesSwitchVrdpAction); */
+    mDevicesMenu->addAction (devicesSwitchVrdpAction);
+    mDevicesVRDPMenuSeparator = mDevicesMenu->addSeparator();
+
+    mDevicesMenu->addAction (devicesInstallGuestToolsAction);
 
     /* reset the "context menu" flag */
-    devicesMenu->setItemParameter (devicesMountFloppyMenuId, 0);
-    devicesMenu->setItemParameter (devicesMountDVDMenuId, 0);
-    devicesMenu->setItemParameter (devicesUSBMenuId, 0);
+    mDevicesMountFloppyMenu->menuAction()->setData (false);
+    mDevicesMountDVDMenu->menuAction()->setData (false);
+    mDevicesUSBMenu->menuAction()->setData (false);
 
 #ifdef VBOX_WITH_DEBUGGER_GUI
@@ -378,20 +367,18 @@
     /* Help submenu */
 
-    QMenu *helpMenu = new QMenu (this);
-
-    helpMenu->addAction (helpContentsAction);
-    helpMenu->addAction (helpWebAction);
-    helpMenu->addSeparator();
+    mHelpMenu = menuBar()->addMenu (QString::null);
+    mMainMenu->addMenu (mHelpMenu);
+
+    mHelpMenu->addAction (helpContentsAction);
+    mHelpMenu->addAction (helpWebAction);
+    mHelpMenu->addSeparator();
 #ifdef VBOX_WITH_REGISTRATION
-    helpMenu->addAction (helpRegisterAction);
+    mHelpMenu->addAction (helpRegisterAction);
     helpRegisterAction->setEnabled (vboxGlobal().virtualBox().
         GetExtraData (VBoxDefs::GUI_RegistrationDlgWinID).isEmpty());
 #endif
-    helpMenu->addAction (helpAboutAction);
-    helpMenu->addSeparator();
-    helpMenu->addAction (helpResetMessagesAction);
-
-    menuBar()->insertItem( QString::null, helpMenu, helpMenuId );
-    mMainMenu->insertItem (QString::null, helpMenu, helpMenuId);
+    mHelpMenu->addAction (helpAboutAction);
+    mHelpMenu->addSeparator();
+    mHelpMenu->addAction (helpResetMessagesAction);
 
     ///// Status bar ////////////////////////////////////////////////////////
@@ -522,21 +509,21 @@
 
 
-    connect (devicesMountFloppyMenu, SIGNAL(aboutToShow()), this, SLOT(prepareFloppyMenu()));
-    connect (devicesMountDVDMenu, SIGNAL(aboutToShow()), this, SLOT(prepareDVDMenu()));
-    connect (devicesNetworkMenu, SIGNAL(aboutToShow()), this, SLOT(prepareNetworkMenu()));
+    connect (mDevicesMountFloppyMenu, SIGNAL(aboutToShow()), this, SLOT(prepareFloppyMenu()));
+    connect (mDevicesMountDVDMenu, SIGNAL(aboutToShow()), this, SLOT(prepareDVDMenu()));
+    connect (mDevicesNetworkMenu, SIGNAL(aboutToShow()), this, SLOT(prepareNetworkMenu()));
 
     connect (statusBar(), SIGNAL(messageChanged (const QString &)), this, SLOT(statusTipChanged (const QString &)));
 
-    connect (devicesMountFloppyMenu, SIGNAL(activated(int)), this, SLOT(captureFloppy(int)));
-    connect (devicesMountDVDMenu, SIGNAL(activated(int)), this, SLOT(captureDVD(int)));
-    connect (devicesUSBMenu, SIGNAL(activated(int)), this, SLOT(switchUSB(int)));
-    connect (devicesNetworkMenu, SIGNAL(activated(int)), this, SLOT(activateNetworkMenu(int)));
-
-    connect (devicesMountFloppyMenu, SIGNAL (highlighted (int)),
-             this, SLOT (setDynamicMenuItemStatusTip (int)));
-    connect (devicesMountDVDMenu, SIGNAL (highlighted (int)),
-             this, SLOT (setDynamicMenuItemStatusTip (int)));
-    connect (devicesNetworkMenu, SIGNAL (highlighted (int)),
-             this, SLOT (setDynamicMenuItemStatusTip (int)));
+    connect (mDevicesMountFloppyMenu, SIGNAL(triggered(QAction *)), this, SLOT(captureFloppy(QAction *)));
+    connect (mDevicesMountDVDMenu, SIGNAL(triggered(QAction *)), this, SLOT(captureDVD(QAction *)));
+    connect (mDevicesUSBMenu, SIGNAL(triggered(QAction *)), this, SLOT(switchUSB(QAction *)));
+    connect (mDevicesNetworkMenu, SIGNAL(triggered(QAction *)), this, SLOT(activateNetworkMenu(QAction *)));
+
+    connect (mDevicesMountFloppyMenu, SIGNAL (hovered (QAction *)),
+             this, SLOT (setDynamicMenuItemStatusTip (QAction *)));
+    connect (mDevicesMountDVDMenu, SIGNAL (hovered (QAction *)),
+             this, SLOT (setDynamicMenuItemStatusTip (QAction *)));
+    connect (mDevicesNetworkMenu, SIGNAL (hovered (QAction *)),
+             this, SLOT (setDynamicMenuItemStatusTip (QAction *)));
 
     /* Cleanup the status bar tip when a menu with dynamic items is
@@ -544,9 +531,9 @@
      * for normal menus (because Qt will not do it on pressing ESC if the menu
      * is constructed of dynamic items only) */
-    connect (devicesMountFloppyMenu, SIGNAL (aboutToHide()),
+    connect (mDevicesMountFloppyMenu, SIGNAL (aboutToHide()),
              this, SLOT (clearStatusBar()));
-    connect (devicesMountDVDMenu, SIGNAL (aboutToHide()),
+    connect (mDevicesMountDVDMenu, SIGNAL (aboutToHide()),
              this, SLOT (clearStatusBar()));
-    connect (devicesNetworkMenu, SIGNAL (aboutToHide()),
+    connect (mDevicesNetworkMenu, SIGNAL (aboutToHide()),
              this, SLOT (clearStatusBar()));
 
@@ -764,6 +751,6 @@
     {
         /* hide usb_menu & usb_separator & usb_status_led */
-        devicesMenu->setItemVisible (devicesUSBMenuId, false);
-        devicesMenu->setItemVisible (devicesUSBMenuSeparatorId, false);
+        mDevicesUSBMenu->setVisible (false);
+        mDevicesUSBMenuSeparator->setVisible (false);
         usb_light->setHidden (true);
     }
@@ -771,6 +758,6 @@
     {
         bool isUSBEnabled = usbctl.GetEnabled();
-        devicesUSBMenu->setEnabled (isUSBEnabled);
-        devicesUSBMenu->setConsole (cconsole);
+        mDevicesUSBMenu->setEnabled (isUSBEnabled);
+        mDevicesUSBMenu->setConsole (cconsole);
         usb_light->setState (isUSBEnabled ? KDeviceActivity_Idle
                                           : KDeviceActivity_Null);
@@ -783,5 +770,5 @@
         /* hide vrdp_menu_action & vrdp_separator & vrdp_status_icon */
         devicesSwitchVrdpAction->setVisible (false);
-        devicesMenu->setItemVisible (devicesVRDPMenuSeparatorId, false);
+        mDevicesVRDPMenuSeparator->setVisible (false);
 #if 0
         vrdp_state->setHidden (true);
@@ -795,5 +782,5 @@
         /* hide shared folders menu action & sf_separator & sf_status_icon */
         devicesSFDialogAction->setVisible (false);
-        devicesMenu->setItemVisible (devicesSFMenuSeparatorId, false);
+        mDevicesSFMenuSeparator->setVisible (false);
         sf_light->setHidden (true);
     }
@@ -1134,5 +1121,5 @@
     mMainMenu->popup (pos);
     mMainMenu->activateWindow();
-    mMainMenu->setActiveItem (0);
+    mMainMenu->setActiveAction (mMainMenu->actions().first());
 }
 
@@ -1538,6 +1525,6 @@
         tr ("Unmount the currently mounted CD/DVD-ROM media"));
 
-    devicesVRDPMenu->setToolTip (tr ("Remote Desktop (RDP) Server",
-                                     "enable/disable..."));
+    /* mDevicesVRDPMenu->setToolTip (tr ("Remote Desktop (RDP) Server",
+                                     "enable/disable...")); */
     devicesSwitchVrdpAction->setText (tr ("Remote Dis&play"));
     devicesSwitchVrdpAction->setStatusTip (
@@ -1583,18 +1570,17 @@
     /* Devices menu submenus */
 
-    devicesMenu->changeItem (devicesMountFloppyMenuId, tr ("Mount &Floppy"));
-    devicesMenu->changeItem (devicesMountDVDMenuId, tr ("Mount &CD/DVD-ROM"));
-    devicesMenu->changeItem (devicesNetworkMenuId, tr ("&Network Adapters"));
-    devicesMenu->changeItem (devicesUSBMenuId, tr ("&USB Devices"));
+    mDevicesMountFloppyMenu->setTitle (tr ("Mount &Floppy"));
+    mDevicesMountDVDMenu->setTitle (tr ("Mount &CD/DVD-ROM"));
+    mDevicesNetworkMenu->setTitle (tr ("&Network Adapters"));
+    mDevicesUSBMenu->setTitle (tr ("&USB Devices"));
 
     /* main menu & seamless popup menu */
 
-    menuBar()->changeItem (vmMenuId, tr ("&Machine"));
-#warning port me: check this if the menu popups in the vm. (H+HOME?)
-//    mMainMenu->changeItem (vmMenuId,
-//        VBoxGlobal::iconSet (":/machine_16px.png"), tr ("&Machine"));
-    menuBar()->changeItem (devicesMenuId, tr ("&Devices"));
-//    mMainMenu->changeItem (devicesMenuId,
-//        VBoxGlobal::iconSet (":/settings_16px.png"), tr ("&Devices"));
+    mVMMenu->setTitle (tr ("&Machine")); 
+//    mVMMenu->setIcon (VBoxGlobal::iconSet (":/machine_16px.png"));
+
+    mDevicesMenu->setTitle (tr ("&Devices"));
+//    mDevicesMenu->setIcon (VBoxGlobal::iconSet (":/settings_16px.png"));
+
 #ifdef VBOX_WITH_DEBUGGER_GUI
     if (vboxGlobal().isDebuggerEnabled())
@@ -1604,7 +1590,6 @@
     }
 #endif
-    menuBar()->changeItem (helpMenuId, tr ("&Help"));
-//    mMainMenu->changeItem (helpMenuId,
-//        VBoxGlobal::iconSet (":/help_16px.png"), tr ("&Help"));
+    mHelpMenu->setTitle (tr ("&Help"));
+//    mHelpMenu->setIcon (VBoxGlobal::iconSet (":/help_16px.png"));
 
     /* status bar widgets */
@@ -1665,5 +1650,5 @@
     if (element & FloppyStuff)
     {
-        devicesMountFloppyMenu->setEnabled (isRunningOrPaused);
+        mDevicesMountFloppyMenu->setEnabled (isRunningOrPaused);
         CFloppyDrive floppy = cmachine.GetFloppyDrive();
         KDriveState state = floppy.GetState();
@@ -1709,5 +1694,5 @@
     if (element & DVDStuff)
     {
-        devicesMountDVDMenu->setEnabled (isRunningOrPaused);
+        mDevicesMountDVDMenu->setEnabled (isRunningOrPaused);
         CDVDDrive dvd = cmachine.GetDVDDrive();
         KDriveState state = dvd.GetState();
@@ -1787,5 +1772,5 @@
                                        : KDeviceActivity_Null);
 
-        devicesNetworkMenu->setEnabled (isRunningOrPaused && count > 0);
+        mDevicesNetworkMenu->setEnabled (isRunningOrPaused && count > 0);
 
         /* update tooltip */
@@ -1829,5 +1814,5 @@
             if (isUSBEnabled)
             {
-                devicesUSBMenu->setEnabled (isRunningOrPaused);
+                mDevicesUSBMenu->setEnabled (isRunningOrPaused);
 
                 CUSBDeviceEnumerator en = cconsole.GetUSBDevices().Enumerate();
@@ -1844,5 +1829,5 @@
             else
             {
-                devicesUSBMenu->setEnabled (false);
+                mDevicesUSBMenu->setEnabled (false);
 
                 info = tr ("<br><nobr><b>USB Controller is disabled</b></nobr>",
@@ -1982,13 +1967,9 @@
         ULONG64 usedBits = screen.width() /* display width */
                          * screen.height() /* display height */
-#warning port me: check this
                          * depth(); /* bit per pixel */
-//                         * QColor::numBitPlanes(); /* bit per pixel */
         if (aOn && (availBits < usedBits))
         {
             vboxProblem().cannotEnterSeamlessMode (screen.width(),
-#warning port me: check this
                 screen.height(), depth());
-//                screen.height(), QColor::numBitPlanes());
             return false;
         }
@@ -2212,5 +2193,4 @@
         clearMask();
         centralWidget()->setPalette (mErasePalette);
-        centralWidget()->setBackgroundMode (Qt::PaletteBackground);
         centralWidget()->setAutoFillBackground (false);
         console->setFrameStyle (console_style);
@@ -2461,5 +2441,5 @@
         CProgress progress =
             cconsole.TakeSnapshot (dlg.mLeName->text().trimmed(),
-                                   dlg.mTeDescription->text());
+                                   dlg.mTeDescription->toPlainText());
 
         if (cconsole.isOk())
@@ -2769,5 +2749,5 @@
     if (!console) return;
 
-    devicesMountFloppyMenu->clear();
+    mDevicesMountFloppyMenu->clear();
 
     CHostFloppyDrive selected = csession.GetMachine().GetFloppyDrive().GetHostDrive();
@@ -2785,23 +2765,24 @@
             drvName :
             QString ("%1 (%2)").arg (description, drvName);
-        int id = devicesMountFloppyMenu->insertItem (
-            tr ("Host Drive ") + fullName);
-        hostFloppyMap [id] = hostFloppy;
+        QAction *action = mDevicesMountFloppyMenu->addAction (tr ("Host Drive ") + fullName);
+        action->setStatusTip (tr ("Mount the selected physical drive of the host PC",
+                                  "Floppy tip"));
+        hostFloppyMap [action] = hostFloppy;
         if (machine_state != KMachineState_Running && machine_state != KMachineState_Paused)
-            devicesMountFloppyMenu->setItemEnabled (id, false);
+            action->setEnabled (false);
         else if (!selected.isNull())
             if (!selected.GetName().compare (hostFloppy.GetName()))
-                devicesMountFloppyMenu->setItemEnabled (id, false);
-    }
-
-    if (devicesMountFloppyMenu->count() > 0)
-        devicesMountFloppyMenu->addSeparator();
-    devicesMountFloppyMenu->addAction (devicesMountFloppyImageAction);
+                action->setEnabled (false);
+    }
+
+    if (mDevicesMountFloppyMenu->actions().count() > 0)
+        mDevicesMountFloppyMenu->addSeparator();
+    mDevicesMountFloppyMenu->addAction (devicesMountFloppyImageAction);
 
     /* if shown as a context menu */
-    if (devicesMenu->itemParameter (devicesMountFloppyMenuId))
-    {
-        devicesMountFloppyMenu->addSeparator();
-        devicesMountFloppyMenu->addAction (devicesUnmountFloppyAction);
+    if(mDevicesMountFloppyMenu->menuAction()->data().toBool())
+    {
+        mDevicesMountFloppyMenu->addSeparator();
+        mDevicesMountFloppyMenu->addAction (devicesUnmountFloppyAction);
     }
 }
@@ -2815,5 +2796,5 @@
     if (!console) return;
 
-    devicesMountDVDMenu->clear();
+    mDevicesMountDVDMenu->clear();
 
     CHostDVDDrive selected = csession.GetMachine().GetDVDDrive().GetHostDrive();
@@ -2831,24 +2812,25 @@
             drvName :
             QString ("%1 (%2)").arg (description, drvName);
-        int id = devicesMountDVDMenu->insertItem (
+        QAction *action = mDevicesMountDVDMenu->addAction (
             tr ("Host Drive ") + fullName);
-        hostDVDMap [id] = hostDVD;
+        action->setStatusTip (tr ("Mount the selected physical drive of the host PC",
+                                  "CD/DVD tip"));
+        hostDVDMap [action] = hostDVD;
         if (machine_state != KMachineState_Running && machine_state != KMachineState_Paused)
-            devicesMountDVDMenu->setItemEnabled (id, false);
+            action->setEnabled (false);
         else if (!selected.isNull())
             if (!selected.GetName().compare (hostDVD.GetName()))
-                devicesMountDVDMenu->setItemEnabled (id, false);
-    }
-
-    if (devicesMountDVDMenu->count() > 0)
-        devicesMountDVDMenu->addSeparator();
-    devicesMountDVDMenu->addAction (devicesMountDVDImageAction);
+                action->setEnabled (false);
+    }
+
+    if (mDevicesMountDVDMenu->actions().count() > 0)
+        mDevicesMountDVDMenu->addSeparator();
+    mDevicesMountDVDMenu->addAction (devicesMountDVDImageAction);
 
     /* if shown as a context menu */
-
-    if (devicesMenu->itemParameter (devicesMountDVDMenuId))
-    {
-        devicesMountDVDMenu->addSeparator();
-        devicesMountDVDMenu->addAction (devicesUnmountDVDAction);
+    if(mDevicesMountDVDMenu->menuAction()->data().toBool())
+    {
+        mDevicesMountDVDMenu->addSeparator();
+        mDevicesMountDVDMenu->addAction (devicesUnmountDVDAction);
     }
 }
@@ -2859,34 +2841,24 @@
 void VBoxConsoleWnd::prepareNetworkMenu()
 {
-    devicesNetworkMenu->clear();
+    mDevicesNetworkMenu->clear();
     ulong count = vboxGlobal().virtualBox().GetSystemProperties().GetNetworkAdapterCount();
     for (ulong slot = 0; slot < count; ++ slot)
     {
         CNetworkAdapter adapter = csession.GetMachine().GetNetworkAdapter (slot);
-        int id = devicesNetworkMenu->insertItem (tr ("Adapter %1", "network").arg (slot));
-        devicesNetworkMenu->setItemEnabled (id, adapter.GetEnabled());
-        devicesNetworkMenu->setItemChecked (id, adapter.GetEnabled() && adapter.GetCableConnected());
-    }
-}
-
-void VBoxConsoleWnd::setDynamicMenuItemStatusTip (int aId)
+        QAction *action = mDevicesNetworkMenu->addAction (tr ("Adapter %1", "network").arg (slot));
+        action->setEnabled (adapter.GetEnabled());
+        action->setCheckable (true);
+        action->setChecked (adapter.GetEnabled() && adapter.GetCableConnected());
+        action->setData (static_cast<qulonglong> (slot));
+    }
+}
+
+void VBoxConsoleWnd::setDynamicMenuItemStatusTip (QAction *aAction)
 {
     QString tip;
 
-    if (sender() == devicesMountFloppyMenu)
-    {
-        if (hostFloppyMap.find (aId) != hostFloppyMap.end())
-            tip = tr ("Mount the selected physical drive of the host PC",
-                      "Floppy tip");
-    }
-    else if (sender() == devicesMountDVDMenu)
-    {
-        if (hostDVDMap.find (aId) != hostDVDMap.end())
-            tip = tr ("Mount the selected physical drive of the host PC",
-                      "CD/DVD tip");
-    }
-    else if (sender() == devicesNetworkMenu)
-    {
-        tip = devicesNetworkMenu->isItemChecked (aId) ?
+    if (sender() == mDevicesNetworkMenu)
+    {
+        tip = aAction->isChecked() ?
             tr ("Disconnect the cable from the selected virtual network adapter") :
             tr ("Connect the cable to the selected virtual network adapter");
@@ -2914,11 +2886,11 @@
 
 /**
- *  Captures a floppy device corresponding to a given menu id.
+ *  Captures a floppy device corresponding to a given menu action.
  */
-void VBoxConsoleWnd::captureFloppy (int aId)
+void VBoxConsoleWnd::captureFloppy (QAction *aAction)
 {
     if (!console) return;
 
-    CHostFloppyDrive d = hostFloppyMap [aId];
+    CHostFloppyDrive d = hostFloppyMap [aAction];
     /* if null then some other item but host drive is selected */
     if (d.isNull()) return;
@@ -2941,11 +2913,11 @@
 
 /**
- *  Captures a CD/DVD-ROM device corresponding to a given menu id.
+ *  Captures a CD/DVD-ROM device corresponding to a given menu action.
  */
-void VBoxConsoleWnd::captureDVD (int aId)
+void VBoxConsoleWnd::captureDVD (QAction *aAction)
 {
     if (!console) return;
 
-    CHostDVDDrive d = hostDVDMap [aId];
+    CHostDVDDrive d = hostDVDMap [aAction];
     /* if null then some other item but host drive is selected */
     if (d.isNull()) return;
@@ -2970,18 +2942,11 @@
  *  Switch the cable connected/disconnected for the selected network adapter
  */
-void VBoxConsoleWnd::activateNetworkMenu (int aId)
-{
-    ulong count = vboxGlobal().virtualBox().GetSystemProperties().GetNetworkAdapterCount();
-    for (ulong slot = 0; slot < count; ++ slot)
-    {
-        if (aId == devicesNetworkMenu->idAt (slot))
-        {
-            CNetworkAdapter adapter = csession.GetMachine().GetNetworkAdapter (slot);
-            bool connected = adapter.GetCableConnected();
-            if (adapter.GetEnabled())
-                adapter.SetCableConnected (!connected);
-            break;
-        }
-    }
+void VBoxConsoleWnd::activateNetworkMenu (QAction *aAction)
+{
+    ulong slot = aAction->data().toULongLong();
+    CNetworkAdapter adapter = csession.GetMachine().GetNetworkAdapter (slot);
+    bool connected = adapter.GetCableConnected();
+    if (adapter.GetEnabled())
+        adapter.SetCableConnected (!connected);
 }
 
@@ -2989,5 +2954,5 @@
  *  Attach/Detach selected USB Device.
  */
-void VBoxConsoleWnd::switchUSB (int aId)
+void VBoxConsoleWnd::switchUSB (QAction *aAction)
 {
     if (!console) return;
@@ -2996,10 +2961,10 @@
     AssertWrapperOk (csession);
 
-    CUSBDevice usb = devicesUSBMenu->getUSB (aId);
+    CUSBDevice usb = mDevicesUSBMenu->getUSB (aAction);
     /* if null then some other item but a USB device is selected */
     if (usb.isNull())
         return;
 
-    if (devicesUSBMenu->isItemChecked (aId))
+    if (!aAction->isChecked())
     {
         cconsole.DetachUSBDevice (usb.GetId());
@@ -3030,7 +2995,7 @@
     {
         /* set "this is a context menu" flag */
-        devicesMenu->setItemParameter (devicesMountDVDMenuId, 1);
-        devicesMountDVDMenu->exec (e->globalPos());
-        devicesMenu->setItemParameter (devicesMountDVDMenuId, 0);
+        mDevicesMountDVDMenu->menuAction()->setData (true);
+        mDevicesMountDVDMenu->exec (e->globalPos());
+        mDevicesMountDVDMenu->menuAction()->setData (false);
     }
     else
@@ -3038,25 +3003,25 @@
     {
         /* set "this is a context menu" flag */
-        devicesMenu->setItemParameter (devicesMountFloppyMenuId, 1);
-        devicesMountFloppyMenu->exec (e->globalPos());
-        devicesMenu->setItemParameter (devicesMountFloppyMenuId, 0);
+        mDevicesMountFloppyMenu->menuAction()->setData (true);
+        mDevicesMountFloppyMenu->exec (e->globalPos());
+        mDevicesMountFloppyMenu->menuAction()->setData (false);
     }
     else
     if (ind == usb_light)
     {
-        if (devicesUSBMenu->isEnabled())
+        if (mDevicesUSBMenu->isEnabled())
         {
             /* set "this is a context menu" flag */
-            devicesMenu->setItemParameter (devicesUSBMenuId, 1);
-            devicesUSBMenu->exec (e->globalPos());
-            devicesMenu->setItemParameter (devicesUSBMenuId, 0);
+            mDevicesUSBMenu->menuAction()->setData (true);
+            mDevicesUSBMenu->exec (e->globalPos());
+            mDevicesUSBMenu->menuAction()->setData (false);
         }
     }
     else
-    if (ind == vrdp_state)
-    {
-        devicesVRDPMenu->exec (e->globalPos());
-    }
-    else
+    /* if (ind == vrdp_state)
+    {
+        mDevicesVRDPMenu->exec (e->globalPos());
+    }
+    else */
     if (ind == autoresize_state)
     {
@@ -3075,20 +3040,17 @@
          * menu itself is kept just in case if we need more than one item in
          * the future. */
-#if 0
-        devicesSFMenu->exec (e->globalPos());
-#else
+        /* mDevicesSFMenu->exec (e->globalPos()); */
         if (devicesSFDialogAction->isEnabled())
             devicesSFDialogAction->trigger();
-#endif
     }
     else
     if (ind == net_light)
     {
-        if (devicesNetworkMenu->isEnabled())
+        if (mDevicesNetworkMenu->isEnabled())
         {
             /* set "this is a context menu" flag */
-            devicesMenu->setItemParameter (devicesNetworkMenuId, 1);
-            devicesNetworkMenu->exec (e->globalPos());
-            devicesMenu->setItemParameter (devicesNetworkMenuId, 0);
+            mDevicesNetworkMenu->menuAction()->setData (true);
+            mDevicesNetworkMenu->exec (e->globalPos());
+            mDevicesNetworkMenu->menuAction()->setData (false);
         }
     }
@@ -3261,5 +3223,5 @@
         /* If seamless mode should be enabled then check if it is enabled
          * currently and re-enable it if open-view procedure is finished */
-        if (vmSeamlessAction->isOn() && mIsOpenViewFinished && aSeamlessSupported)
+        if (vmSeamlessAction->isChecked() && mIsOpenViewFinished && aSeamlessSupported)
             toggleFullscreenMode (true, true);
     }
@@ -3332,5 +3294,11 @@
 void VBoxConsoleWnd::tryClose()
 {
-#warning port me
+#warning "port me"
+    /* @todo: I'm not sure if it is the right way to force an shutdown if modal
+     * child widgets are open. Anyway, currently I didn't know how to achieve
+     * this. So for now we simply call close. */
+     
+     close();
+
 //    LogFlowFunc (("eventLoopLevel=%d\n", qApp->eventLoop()->loopLevel()));
 //
@@ -3354,5 +3322,5 @@
 //    }
 //    else
-//        close();
+//     close();
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox4/src/VBoxFBQuartz2D.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox4/src/VBoxFBQuartz2D.cpp	(revision 7677)
+++ /trunk/src/VBox/Frontends/VirtualBox4/src/VBoxFBQuartz2D.cpp	(revision 7678)
@@ -172,8 +172,8 @@
     QRect Q2DViewRect = mapYOrigin (QRect (p.x(), p.y(), mView->width(), mView->height()), pMain->height());
     /* We have to pay special attention to the scrollbars */
-    if (mView->horizontalScrollBar()->isVisible())
-        Q2DViewRect.setY (Q2DViewRect.y() + (mView->horizontalScrollBar()->frameSize().height() + 2));
-    if (mView->verticalScrollBar()->isVisible())
-        Q2DViewRect.setWidth (Q2DViewRect.width() - (mView->verticalScrollBar()->frameSize().width() + 2));
+//    if (mView->horizontalScrollBar()->isVisible())
+//        Q2DViewRect.setY (Q2DViewRect.y() + (mView->horizontalScrollBar()->frameSize().height() + 2));
+//    if (mView->verticalScrollBar()->isVisible())
+//        Q2DViewRect.setWidth (Q2DViewRect.width() - (mView->verticalScrollBar()->frameSize().width() + 2));
 
     /* Create the context to draw on */
Index: /trunk/src/VBox/Frontends/VirtualBox4/src/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox4/src/VBoxGlobal.cpp	(revision 7677)
+++ /trunk/src/VBox/Frontends/VirtualBox4/src/VBoxGlobal.cpp	(revision 7678)
@@ -2665,12 +2665,12 @@
     QIcon iconSet;
 
-    iconSet.setPixmap (QPixmap (aNormal),
-                       QIcon::Automatic, QIcon::Normal);
+    iconSet.addFile (aNormal, QSize(), 
+                     QIcon::Normal);
     if (aDisabled != NULL)
-        iconSet.setPixmap (QPixmap (aDisabled),
-                           QIcon::Automatic, QIcon::Disabled);
+        iconSet.addFile (aDisabled, QSize(), 
+                         QIcon::Disabled);
     if (aActive != NULL)
-        iconSet.setPixmap (QPixmap (aActive),
-                           QIcon::Automatic, QIcon::Active);
+        iconSet.addFile (aActive, QSize(), 
+                         QIcon::Active);
     return iconSet;
 }
@@ -4201,15 +4201,15 @@
  *  This class provides the list of USB devices attached to the host.
  */
-VBoxUSBMenu::VBoxUSBMenu (QWidget *aParent) : Q3PopupMenu (aParent)
+VBoxUSBMenu::VBoxUSBMenu (QWidget *aParent) : QMenu (aParent)
 {
     connect (this, SIGNAL (aboutToShow()),
              this, SLOT   (processAboutToShow()));
-    connect (this, SIGNAL (highlighted (int)),
-             this, SLOT   (processHighlighted (int)));
-}
-
-const CUSBDevice& VBoxUSBMenu::getUSB (int aIndex)
-{
-    return mUSBDevicesMap [aIndex];
+//    connect (this, SIGNAL (hovered (QAction *)),
+//             this, SLOT   (processHighlighted (QAction *)));
+}
+
+const CUSBDevice& VBoxUSBMenu::getUSB (QAction *aAction)
+{
+    return mUSBDevicesMap [aAction];
 }
 
@@ -4229,8 +4229,8 @@
     if (isUSBEmpty)
     {
-        insertItem (
-            tr ("<no available devices>", "USB devices"),
-            USBDevicesMenuNoDevicesId);
-        setItemEnabled (USBDevicesMenuNoDevicesId, false);
+        QAction *action = addAction (tr ("<no available devices>", "USB devices"));
+        action->setEnabled (false);
+        action->setToolTip (tr ("No supported devices connected to the host PC",
+                                "USB device tooltip"));
     }
     else
@@ -4241,6 +4241,7 @@
             CHostUSBDevice iterator = en.GetNext();
             CUSBDevice usb = CUnknown (iterator);
-            int id = insertItem (vboxGlobal().details (usb));
-            mUSBDevicesMap [id] = usb;
+            QAction *action = addAction (vboxGlobal().details (usb));
+            action->setCheckable (true);
+            mUSBDevicesMap [action] = usb;
             /* check if created item was alread attached to this session */
             if (!mConsole.isNull())
@@ -4248,7 +4249,7 @@
                 CUSBDevice attachedUSB =
                     mConsole.GetUSBDevices().FindById (usb.GetId());
-                setItemChecked (id, !attachedUSB.isNull());
-                setItemEnabled (id, iterator.GetState() !=
-                                KUSBDeviceState_Unavailable);
+                action->setChecked (!attachedUSB.isNull());
+                action->setEnabled (iterator.GetState() !=
+                                    KUSBDeviceState_Unavailable);
             }
         }
@@ -4256,27 +4257,23 @@
 }
 
-void VBoxUSBMenu::processHighlighted (int aIndex)
-{
-    /* the <no available devices> item is highlighted */
-    if (aIndex == USBDevicesMenuNoDevicesId)
-    {
-        QToolTip::add (this,
-            tr ("No supported devices connected to the host PC",
-                "USB device tooltip"));
-        return;
-    }
-
-    CUSBDevice usb = mUSBDevicesMap [aIndex];
-    /* if null then some other item but a USB device is highlighted */
-    if (usb.isNull())
-    {
-        QToolTip::remove (this);
-        return;
-    }
-
-    QToolTip::remove (this);
-    QToolTip::add (this, vboxGlobal().toolTip (usb));
-}
-
+bool VBoxUSBMenu::event(QEvent *aEvent)
+{
+    /* We provide dynamic tooltips for the usb devices */
+    if (aEvent->type() == QEvent::ToolTip) 
+    {
+        QHelpEvent *helpEvent = static_cast<QHelpEvent *> (aEvent);
+        QAction *action = actionAt (helpEvent->pos());
+        if (action)
+        {
+            CUSBDevice usb = mUSBDevicesMap [action];
+            if (!usb.isNull())
+            {
+                QToolTip::showText (helpEvent->globalPos(), vboxGlobal().toolTip (usb));
+                return true;
+            }
+        }
+    }
+    return QMenu::event (aEvent);
+}
 
 /**
Index: /trunk/src/VBox/Frontends/VirtualBox4/ui/VBoxGlobalSettingsDlg.ui
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox4/ui/VBoxGlobalSettingsDlg.ui	(revision 7677)
+++ /trunk/src/VBox/Frontends/VirtualBox4/ui/VBoxGlobalSettingsDlg.ui	(revision 7678)
@@ -1337,5 +1337,5 @@
     <slot>tbAddUSBFilter_clicked()</slot>
     <slot>tbAddUSBFilterFrom_clicked()</slot>
-    <slot>menuAddUSBFilterFrom_activated( int )</slot>
+    <slot>menuAddUSBFilterFrom_activated( QAction * )</slot>
     <slot>tbRemoveUSBFilter_clicked()</slot>
     <slot>tbUSBFilterUp_clicked()</slot>
Index: /trunk/src/VBox/Frontends/VirtualBox4/ui/VBoxGlobalSettingsDlg.ui.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox4/ui/VBoxGlobalSettingsDlg.ui.h	(revision 7677)
+++ /trunk/src/VBox/Frontends/VirtualBox4/ui/VBoxGlobalSettingsDlg.ui.h	(revision 7678)
@@ -971,7 +971,7 @@
 }
 
-void VBoxGlobalSettingsDlg::menuAddUSBFilterFrom_activated (int aIndex)
-{
-    CUSBDevice usb = usbDevicesMenu->getUSB (aIndex);
+void VBoxGlobalSettingsDlg::menuAddUSBFilterFrom_activated (QAction *aAction)
+{
+    CUSBDevice usb = usbDevicesMenu->getUSB (aAction);
 
     // if null then some other item but a USB device is selected
Index: /trunk/src/VBox/Frontends/VirtualBox4/ui/VBoxVMSettingsDlg.ui
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox4/ui/VBoxVMSettingsDlg.ui	(revision 7677)
+++ /trunk/src/VBox/Frontends/VirtualBox4/ui/VBoxVMSettingsDlg.ui	(revision 7678)
@@ -3295,5 +3295,5 @@
     <slot>tbAddUSBFilter_clicked()</slot>
     <slot>tbAddUSBFilterFrom_clicked()</slot>
-    <slot>menuAddUSBFilterFrom_activated( int )</slot>
+    <slot>menuAddUSBFilterFrom_activated( QAction * )</slot>
     <slot>tbRemoveUSBFilter_clicked()</slot>
     <slot>tbUSBFilterUp_clicked()</slot>
Index: /trunk/src/VBox/Frontends/VirtualBox4/ui/VBoxVMSettingsDlg.ui.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox4/ui/VBoxVMSettingsDlg.ui.h	(revision 7677)
+++ /trunk/src/VBox/Frontends/VirtualBox4/ui/VBoxVMSettingsDlg.ui.h	(revision 7678)
@@ -776,5 +776,5 @@
                                                       ":/usb_movedown_disabled_16px.png"));
     usbDevicesMenu = new VBoxUSBMenu (this);
-    connect (usbDevicesMenu, SIGNAL(activated(int)), this, SLOT(menuAddUSBFilterFrom_activated(int)));
+    connect (usbDevicesMenu, SIGNAL(triggered(QAction *)), this, SLOT(menuAddUSBFilterFrom_activated(QAction *)));
     mUSBFilterListModified = false;
 
@@ -2686,7 +2686,7 @@
 }
 
-void VBoxVMSettingsDlg::menuAddUSBFilterFrom_activated (int aIndex)
-{
-    CUSBDevice usb = usbDevicesMenu->getUSB (aIndex);
+void VBoxVMSettingsDlg::menuAddUSBFilterFrom_activated (QAction *aAction)
+{
+    CUSBDevice usb = usbDevicesMenu->getUSB (aAction);
     /* if null then some other item but a USB device is selected */
     if (usb.isNull())
