Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxDefs.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxDefs.cpp	(revision 35896)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxDefs.cpp	(revision 35897)
@@ -79,4 +79,7 @@
 const char* VBoxDefs::GUI_Export_Bucket = "GUI/Export/Bucket";
 const char* VBoxDefs::GUI_PreventBetaWarning = "GUI/PreventBetaWarning";
+const char* VBoxDefs::GUI_RecentFolderHD = "GUI/RecentFolderHD";
+const char* VBoxDefs::GUI_RecentFolderCD = "GUI/RecentFolderCD";
+const char* VBoxDefs::GUI_RecentFolderFD = "GUI/RecentFolderFD";
 const char* VBoxDefs::GUI_RecentListHD = "GUI/RecentListHD";
 const char* VBoxDefs::GUI_RecentListCD = "GUI/RecentListCD";
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxDefs.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxDefs.h	(revision 35896)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxDefs.h	(revision 35897)
@@ -155,4 +155,7 @@
     static const char* GUI_PreventBetaWarning;
 
+    static const char* GUI_RecentFolderHD;
+    static const char* GUI_RecentFolderCD;
+    static const char* GUI_RecentFolderFD;
     static const char* GUI_RecentListHD;
     static const char* GUI_RecentListCD;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 35896)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 35897)
@@ -2634,6 +2634,4 @@
 {
     /* Initialize variables: */
-    QString strHomeFolder = fUseLastFolder && !m_strLastFolder.isEmpty() ? m_strLastFolder :
-                            strDefaultFolder.isEmpty() ? vboxGlobal().virtualBox().GetHomeFolder() : strDefaultFolder;
     QList < QPair <QString, QString> > filters;
     QStringList backends;
@@ -2642,4 +2640,5 @@
     QString strTitle;
     QString allType;
+    QString strLastFolder;
     switch (mediumType)
     {
@@ -2649,4 +2648,9 @@
             strTitle = tr ("Choose a virtual hard disk file");
             allType = tr ("hard disk");
+            strLastFolder = virtualBox().GetExtraData(VBoxDefs::GUI_RecentFolderHD);
+            if (strLastFolder.isEmpty())
+                strLastFolder = virtualBox().GetExtraData(VBoxDefs::GUI_RecentFolderCD);
+            if (strLastFolder.isEmpty())
+                strLastFolder = virtualBox().GetExtraData(VBoxDefs::GUI_RecentFolderFD);
             break;
         }
@@ -2656,4 +2660,9 @@
             strTitle = tr ("Choose a virtual CD/DVD disk file");
             allType = tr ("CD/DVD-ROM disk");
+            strLastFolder = virtualBox().GetExtraData(VBoxDefs::GUI_RecentFolderCD);
+            if (strLastFolder.isEmpty())
+                strLastFolder = virtualBox().GetExtraData(VBoxDefs::GUI_RecentFolderHD);
+            if (strLastFolder.isEmpty())
+                strLastFolder = virtualBox().GetExtraData(VBoxDefs::GUI_RecentFolderFD);
             break;
         }
@@ -2663,4 +2672,9 @@
             strTitle = tr ("Choose a virtual floppy disk file");
             allType = tr ("floppy disk");
+            strLastFolder = virtualBox().GetExtraData(VBoxDefs::GUI_RecentFolderFD);
+            if (strLastFolder.isEmpty())
+                strLastFolder = virtualBox().GetExtraData(VBoxDefs::GUI_RecentFolderCD);
+            if (strLastFolder.isEmpty())
+                strLastFolder = virtualBox().GetExtraData(VBoxDefs::GUI_RecentFolderHD);
             break;
         }
@@ -2668,4 +2682,6 @@
             break;
     }
+    QString strHomeFolder = fUseLastFolder && !strLastFolder.isEmpty() ? strLastFolder :
+                            strDefaultFolder.isEmpty() ? vboxGlobal().virtualBox().GetHomeFolder() : strDefaultFolder;
 
     /* Prepare filters and backends: */
@@ -2703,17 +2719,21 @@
 
     /* Remember the path of the last chosen medium: */
-    m_strLastFolder = QFileInfo(strMediumLocation).absolutePath();
+    QString strRecentFolderKey = mediumType == VBoxDefs::MediumType_HardDisk ? VBoxDefs::GUI_RecentFolderHD :
+                                 mediumType == VBoxDefs::MediumType_DVD ? VBoxDefs::GUI_RecentFolderCD :
+                                 mediumType == VBoxDefs::MediumType_Floppy ? VBoxDefs::GUI_RecentFolderFD :
+                                 QString();
+    vbox.SetExtraData(strRecentFolderKey, QFileInfo(strMediumLocation).absolutePath());
 
     /* Update recently used list: */
-    QString strRecentAddress = mediumType == VBoxDefs::MediumType_HardDisk ? VBoxDefs::GUI_RecentListHD :
+    QString strRecentListKey = mediumType == VBoxDefs::MediumType_HardDisk ? VBoxDefs::GUI_RecentListHD :
                                mediumType == VBoxDefs::MediumType_DVD ? VBoxDefs::GUI_RecentListCD :
                                mediumType == VBoxDefs::MediumType_Floppy ? VBoxDefs::GUI_RecentListFD :
                                QString();
-    QStringList recentMediumList = virtualBox().GetExtraData(strRecentAddress).split(';');
+    QStringList recentMediumList = vbox.GetExtraData(strRecentListKey).split(';');
     if (recentMediumList.contains(strMediumLocation))
         recentMediumList.removeAll(strMediumLocation);
     recentMediumList.prepend(strMediumLocation);
     while(recentMediumList.size() > 5) recentMediumList.removeLast();
-    virtualBox().SetExtraData(strRecentAddress, recentMediumList.join(";"));
+    vbox.SetExtraData(strRecentListKey, recentMediumList.join(";"));
 
     /* Open corresponding medium: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h	(revision 35896)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h	(revision 35897)
@@ -862,6 +862,4 @@
     QString mUserDefinedPortName;
 
-    mutable QString m_strLastFolder;
-
     QPixmap mWarningIcon, mErrorIcon;
 
