Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 55826)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 55827)
@@ -1203,13 +1203,29 @@
                     ControllerItem *ctr = static_cast <ControllerItem*> (item);
                     CSystemProperties sp = vboxGlobal().virtualBox().GetSystemProperties();
-                    switch (m_configurationAccessLevel)
+                    const bool fIsMoreAttachmentsPossible = (ULONG)rowCount(aIndex) <
+                                                            (sp.GetMaxPortCountForStorageBus(ctr->ctrBusType()) *
+                                                             sp.GetMaxDevicesPerPortForStorageBus(ctr->ctrBusType()));
+                    if (fIsMoreAttachmentsPossible)
                     {
-                        case ConfigurationAccessLevel_Full: return ((uint)rowCount(aIndex) < sp.GetMaxPortCountForStorageBus(ctr->ctrBusType()) *
-                                                                                             sp.GetMaxDevicesPerPortForStorageBus(ctr->ctrBusType()));
-                        case ConfigurationAccessLevel_Runtime: return (ctr->ctrBusType() == KStorageBus_SATA) &&
-                                                                      ((uint)rowCount(aIndex) < ctr->portCount());
-                        default: break;
+                        switch (m_configurationAccessLevel)
+                        {
+                            case ConfigurationAccessLevel_Full:
+                                return true;
+                            case ConfigurationAccessLevel_Runtime:
+                            {
+                                switch (ctr->ctrBusType())
+                                {
+                                    case KStorageBus_USB:
+                                        return true;
+                                    case KStorageBus_SATA:
+                                        return (uint)rowCount(aIndex) < ctr->portCount();
+                                    default:
+                                        break;
+                                }
+                            }
+                            default:
+                                break;
+                        }
                     }
-                    return false;
                 }
             }
@@ -2783,5 +2799,5 @@
 
                 /* Fetch hot-pluggable state: */
-                m_pCheckBoxHotPluggable->setVisible(slt.bus == KStorageBus_SATA);
+                m_pCheckBoxHotPluggable->setVisible((slt.bus == KStorageBus_SATA) || (slt.bus == KStorageBus_USB));
                 m_pCheckBoxHotPluggable->setChecked(fIsHotPluggable);
 
@@ -3787,5 +3803,5 @@
                     }
                 }
-                if (controllerBus == KStorageBus_SATA)
+                if ((controllerBus == KStorageBus_SATA) || (controllerBus == KStorageBus_USB))
                 {
                     if (fSuccess && isMachineOffline())
@@ -3876,5 +3892,5 @@
                     }
                 }
-                if (controllerBus == KStorageBus_SATA)
+                if ((controllerBus == KStorageBus_SATA) || (controllerBus == KStorageBus_USB))
                 {
                     if (fSuccess && isMachineOffline())
@@ -3890,6 +3906,6 @@
                 /* Show error message: */
                 msgCenter().cannotAttachDevice(m_machine, mediumTypeToLocal(attachmentDeviceType),
-                                                 vboxMedium.location(),
-                                                 StorageSlot(controllerBus, iAttachmentPort, iAttachmentDevice), this);
+                                               vboxMedium.location(),
+                                               StorageSlot(controllerBus, iAttachmentPort, iAttachmentDevice), this);
             }
         }
