Index: trunk/src/VBox/Frontends/VirtualBox4/include/VBoxGlobal.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox4/include/VBoxGlobal.h	(revision 15664)
+++ trunk/src/VBox/Frontends/VirtualBox4/include/VBoxGlobal.h	(revision 15669)
@@ -1051,6 +1051,8 @@
 
 #ifdef VBOX_GUI_WITH_SYSTRAY
-    bool mIsTrayMenu;           /* Tray icon active/desired? */
+    bool mIsTrayMenu : 1; /*< Tray icon active/desired? */
+    bool mIncreasedWindowCounter : 1;
 #endif
+
     QThread *mMediaEnumThread;
     VBoxMediaList mMediaList;
Index: trunk/src/VBox/Frontends/VirtualBox4/src/VBoxGlobal.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox4/src/VBoxGlobal.cpp	(revision 15664)
+++ trunk/src/VBox/Frontends/VirtualBox4/src/VBoxGlobal.cpp	(revision 15669)
@@ -1256,4 +1256,5 @@
 #ifdef VBOX_GUI_WITH_SYSTRAY
     , mIsTrayMenu (false)
+    , mIncreasedWindowCounter (false)
 #endif
     , mMediaEnumThread (NULL)
@@ -2077,14 +2078,16 @@
     static const char *sSectionHrefTpl =
         "<tr><td width=22 rowspan=%1 align=left><img src='%2'></td>"
-            "<td colspan=2><b><a href='%3'><nobr>%4</nobr></a></b></td></tr>"
+            "<td colspan=3><b><a href='%3'><nobr>%4</nobr></a></b></td></tr>"
             "%5"
-        "<tr><td colspan=2><font size=1>&nbsp;</font></td></tr>";
+        "<tr><td colspan=3><font size=1>&nbsp;</font></td></tr>";
     static const char *sSectionBoldTpl =
         "<tr><td width=22 rowspan=%1 align=left><img src='%2'></td>"
-            "<td colspan=2><!-- %3 --><b><nobr>%4</nobr></b></td></tr>"
+            "<td colspan=3><!-- %3 --><b><nobr>%4</nobr></b></td></tr>"
             "%5"
-        "<tr><td colspan=2><font size=1>&nbsp;</font></td></tr>";
-    static const char *sSectionItemTpl =
-        "<tr><td width=40%><nobr>%1</nobr></td><td>%2</td></tr>";
+        "<tr><td colspan=3><font size=1>&nbsp;</font></td></tr>";
+    static const char *sSectionItemTpl1 =
+        "<tr><td width=40%><nobr><i>%1</i></nobr></td><td/><td/></tr>";
+    static const char *sSectionItemTpl2 =
+        "<tr><td width=40%><nobr>%1:</nobr></td><td/><td>%2</td></tr>";
 
     static QString sGeneralBasicHrefTpl, sGeneralBasicBoldTpl;
@@ -2098,8 +2101,8 @@
 
         QString generalItems
-            = QString (sSectionItemTpl).arg (tr ("Name", "details report"), "%1")
-            + QString (sSectionItemTpl).arg (tr ("OS Type", "details report"), "%2")
-            + QString (sSectionItemTpl).arg (tr ("Base Memory", "details report"),
-                                             tr ("<nobr>%3 MB</nobr>", "details report"));
+            = QString (sSectionItemTpl2).arg (tr ("Name", "details report"), "%1")
+            + QString (sSectionItemTpl2).arg (tr ("OS Type", "details report"), "%2")
+            + QString (sSectionItemTpl2).arg (tr ("Base Memory", "details report"),
+                                              tr ("<nobr>%3 MB</nobr>", "details report"));
         sGeneralBasicHrefTpl = QString (sSectionHrefTpl)
                 .arg (2 + 3) /* rows */
@@ -2116,12 +2119,12 @@
 
         generalItems
-           += QString (sSectionItemTpl).arg (tr ("Video Memory", "details report"),
-                                             tr ("<nobr>%4 MB</nobr>", "details report"))
-            + QString (sSectionItemTpl).arg (tr ("Boot Order", "details report"), "%5")
-            + QString (sSectionItemTpl).arg (tr ("ACPI", "details report"), "%6")
-            + QString (sSectionItemTpl).arg (tr ("IO APIC", "details report"), "%7")
-            + QString (sSectionItemTpl).arg (tr ("VT-x/AMD-V", "details report"), "%8")
-            + QString (sSectionItemTpl).arg (tr ("PAE/NX", "details report"), "%9")
-            + QString (sSectionItemTpl).arg (tr ("3D Acceleration", "details report"), "%10");
+           += QString (sSectionItemTpl2).arg (tr ("Video Memory", "details report"),
+                                              tr ("<nobr>%4 MB</nobr>", "details report"))
+            + QString (sSectionItemTpl2).arg (tr ("Boot Order", "details report"), "%5")
+            + QString (sSectionItemTpl2).arg (tr ("ACPI", "details report"), "%6")
+            + QString (sSectionItemTpl2).arg (tr ("IO APIC", "details report"), "%7")
+            + QString (sSectionItemTpl2).arg (tr ("VT-x/AMD-V", "details report"), "%8")
+            + QString (sSectionItemTpl2).arg (tr ("PAE/NX", "details report"), "%9")
+            + QString (sSectionItemTpl2).arg (tr ("3D Acceleration", "details report"), "%10");
 
         sGeneralFullHrefTpl = QString (sSectionHrefTpl)
@@ -2162,5 +2165,5 @@
                 LONG channel = hda.GetChannel();
                 LONG device = hda.GetDevice();
-                hardDisks += QString (sSectionItemTpl)
+                hardDisks += QString (sSectionItemTpl2)
                     .arg (toFullString (bus, channel, device))
                     .arg (details (hd, aIsNewVM));
@@ -2171,6 +2174,6 @@
         if (hardDisks.isNull())
         {
-            hardDisks = QString (sSectionItemTpl)
-                .arg (tr ("Not Attached", "details report (HDDs)")).arg ("");
+            hardDisks = QString (sSectionItemTpl1)
+                .arg (tr ("Not Attached", "details report (HDDs)"));
             ++ rows;
         }
@@ -2267,15 +2270,16 @@
         /* DVD */
         CDVDDrive dvd = aMachine.GetDVDDrive();
-        item = QString (sSectionItemTpl);
         switch (dvd.GetState())
         {
             case KDriveState_NotMounted:
-                item = item.arg (tr ("Not mounted", "details report (DVD)"), "");
+                item = QString (sSectionItemTpl1)
+                    .arg (tr ("Not mounted", "details report (DVD)"));
                 break;
             case KDriveState_ImageMounted:
             {
                 CDVDImage2 img = dvd.GetImage();
-                item = item.arg (tr ("Image", "details report (DVD)"),
-                                 locationForHTML (img.GetName()));
+                item = QString (sSectionItemTpl2)
+                    .arg (tr ("Image", "details report (DVD)"),
+                          locationForHTML (img.GetName()));
                 break;
             }
@@ -2288,6 +2292,7 @@
                     drvName :
                     QString ("%1 (%2)").arg (description, drvName);
-                item = item.arg (tr ("Host Drive", "details report (DVD)"),
-                                 fullName);
+                item = QString (sSectionItemTpl2)
+                    .arg (tr ("Host Drive", "details report (DVD)"),
+                          fullName);
                 break;
             }
@@ -2304,15 +2309,16 @@
         /* Floppy */
         CFloppyDrive floppy = aMachine.GetFloppyDrive();
-        item = QString (sSectionItemTpl);
         switch (floppy.GetState())
         {
             case KDriveState_NotMounted:
-                item = item.arg (tr ("Not mounted", "details report (floppy)"), "");
+                item = QString (sSectionItemTpl1)
+                    .arg (tr ("Not mounted", "details report (floppy)"));
                 break;
             case KDriveState_ImageMounted:
             {
                 CFloppyImage2 img = floppy.GetImage();
-                item = item.arg (tr ("Image", "details report (floppy)"),
-                                 locationForHTML (img.GetName()));
+                item = QString (sSectionItemTpl2)
+                    .arg (tr ("Image", "details report (floppy)"),
+                          locationForHTML (img.GetName()));
                 break;
             }
@@ -2325,6 +2331,7 @@
                     drvName :
                     QString ("%1 (%2)").arg (description, drvName);
-                item = item.arg (tr ("Host Drive", "details report (floppy)"),
-                                 fullName);
+                item = QString (sSectionItemTpl2)
+                    .arg (tr ("Host Drive", "details report (floppy)"),
+                          fullName);
                 break;
             }
@@ -2344,13 +2351,13 @@
             int rows = audio.GetEnabled() ? 3 : 2;
             if (audio.GetEnabled())
-                item = QString (sSectionItemTpl)
+                item = QString (sSectionItemTpl2)
                        .arg (tr ("Host Driver", "details report (audio)"),
                              toString (audio.GetAudioDriver())) +
-                       QString (sSectionItemTpl)
+                       QString (sSectionItemTpl2)
                        .arg (tr ("Controller", "details report (audio)"),
                              toString (audio.GetAudioController()));
             else
-                item = QString (sSectionItemTpl)
-                    .arg (tr ("Disabled", "details report (audio)"), "");
+                item = QString (sSectionItemTpl1)
+                    .arg (tr ("Disabled", "details report (audio)"));
 
             detailsReport += sectionTpl
@@ -2386,5 +2393,5 @@
                         attType = attType.arg (vboxGlobal().toString (type));
 
-                    item += QString (sSectionItemTpl)
+                    item += QString (sSectionItemTpl2)
                         .arg (tr ("Adapter %1", "details report (network)")
                               .arg (adapter.GetSlot() + 1))
@@ -2395,6 +2402,6 @@
             if (item.isNull())
             {
-                item = QString (sSectionItemTpl)
-                    .arg (tr ("Disabled", "details report (network)"), "");
+                item = QString (sSectionItemTpl1)
+                    .arg (tr ("Disabled", "details report (network)"));
                 ++ rows;
             }
@@ -2428,5 +2435,5 @@
                         data += toString (mode);
 
-                    item += QString (sSectionItemTpl)
+                    item += QString (sSectionItemTpl2)
                         .arg (tr ("Port %1", "details report (serial ports)")
                               .arg (port.GetSlot() + 1))
@@ -2437,6 +2444,6 @@
             if (item.isNull())
             {
-                item = QString (sSectionItemTpl)
-                    .arg (tr ("Disabled", "details report (serial ports)"), "");
+                item = QString (sSectionItemTpl1)
+                    .arg (tr ("Disabled", "details report (serial ports)"));
                 ++ rows;
             }
@@ -2464,5 +2471,5 @@
                         .arg (QDir::toNativeSeparators (port.GetPath()));
 
-                    item += QString (sSectionItemTpl)
+                    item += QString (sSectionItemTpl2)
                         .arg (tr ("Port %1", "details report (parallel ports)")
                               .arg (port.GetSlot() + 1))
@@ -2473,6 +2480,6 @@
             if (item.isNull())
             {
-                item = QString (sSectionItemTpl)
-                    .arg (tr ("Disabled", "details report (parallel ports)"), "");
+                item = QString (sSectionItemTpl1)
+                    .arg (tr ("Disabled", "details report (parallel ports)"));
                 ++ rows;
             }
@@ -2502,5 +2509,5 @@
                             active ++;
 
-                    item = QString (sSectionItemTpl)
+                    item = QString (sSectionItemTpl2)
                         .arg (tr ("Device Filters", "details report (USB)"),
                               tr ("%1 (%2 active)", "details report (USB)")
@@ -2508,6 +2515,6 @@
                 }
                 else
-                    item = QString (sSectionItemTpl)
-                        .arg (tr ("Disabled", "details report (USB)"), "");
+                    item = QString (sSectionItemTpl1)
+                        .arg (tr ("Disabled", "details report (USB)"));
 
                 detailsReport += sectionTpl
@@ -2524,12 +2531,11 @@
             if (count > 0)
             {
-                item = QString (sSectionItemTpl)
-                    .arg (tr ("Shared Folders", "details report (shared folders)"),
-                          tr ("%1", "details report (shadef folders)")
-                              .arg (count));
+                item = QString (sSectionItemTpl2)
+                    .arg (tr ("Shared Folders", "details report (shared folders)"))
+                    .arg (count);
             }
             else
-                item = QString (sSectionItemTpl)
-                    .arg (tr ("None", "details report (shared folders)"), "");
+                item = QString (sSectionItemTpl1)
+                    .arg (tr ("None", "details report (shared folders)"));
 
             detailsReport += sectionTpl
@@ -2548,11 +2554,10 @@
 
                 if (srv.GetEnabled())
-                    item = QString (sSectionItemTpl)
-                        .arg (tr ("VRDP Server Port", "details report (VRDP)"),
-                              tr ("%1", "details report (VRDP)")
-                                  .arg (srv.GetPort()));
+                    item = QString (sSectionItemTpl2)
+                        .arg (tr ("VRDP Server Port", "details report (VRDP)"))
+                        .arg (srv.GetPort());
                 else
-                    item = QString (sSectionItemTpl)
-                        .arg (tr ("Disabled", "details report (VRDP)"), "");
+                    item = QString (sSectionItemTpl1)
+                        .arg (tr ("Disabled", "details report (VRDP)"));
 
                 detailsReport += sectionTpl
@@ -5305,10 +5310,39 @@
     }
 
+    /* create default non-null global settings */
+    gset = VBoxGlobalSettings (false);
+
+    /* try to load global settings */
+    gset.load (mVBox);
+    if (!mVBox.isOk() || !gset)
+    {
+        vboxProblem().cannotLoadGlobalConfig (mVBox, gset.lastError());
+        return;
+    }
+
+    /* Load the customized language as early as possible to get possible error
+     * messages translated */
+    QString languageId = gset.languageId();
+    if (!languageId.isNull())
+        loadLanguage (languageId);
+
+    retranslateUi();
+
+    /* Note: the settings conversion check must be done before anything else
+     * that may unconditionally overwrite settings files in the new format (like
+     * SetExtraData()). But after loading the proper the language. */
+    if (!checkForAutoConvertedSettings())
+        return;
+
 #ifdef VBOX_GUI_WITH_SYSTRAY
-    /* Increase open Fe/Qt4 windows reference count. */
-    int c = mVBox.GetExtraData (VBoxDefs::GUI_MainWindowCount).toInt() + 1;
-    AssertMsg ((c>=0) || (mVBox.isOk()),
-        ("Something went wrong with the window reference count!"));
-    mVBox.SetExtraData (VBoxDefs::GUI_MainWindowCount, QString ("%1").arg (c));
+    {
+        /* Increase open Fe/Qt4 windows reference count. */
+        int c = mVBox.GetExtraData (VBoxDefs::GUI_MainWindowCount).toInt() + 1;
+        AssertMsgReturnVoid ((c >= 0) || (mVBox.isOk()),
+            ("Something went wrong with the window reference count!"));
+        mVBox.SetExtraData (VBoxDefs::GUI_MainWindowCount, QString ("%1").arg (c));
+        mIncreasedWindowCounter = mVBox.isOk();
+        AssertReturnVoid (mIncreasedWindowCounter);
+    }
 #endif
 
@@ -5467,22 +5501,4 @@
     qApp->installEventFilter (this);
 
-    /* create default non-null global settings */
-    gset = VBoxGlobalSettings (false);
-
-    /* try to load global settings */
-    gset.load (mVBox);
-    if (!mVBox.isOk() || !gset)
-    {
-        vboxProblem().cannotLoadGlobalConfig (mVBox, gset.lastError());
-        return;
-    }
-
-    /* Load customized language if any */
-    QString languageId = gset.languageId();
-    if (!languageId.isNull())
-        loadLanguage (languageId);
-
-    retranslateUi();
-
     /* process command line */
 
@@ -5601,4 +5617,24 @@
     }
 
+#ifdef VBOX_GUI_WITH_SYSTRAY
+    if (mIncreasedWindowCounter)
+    {
+        /* Decrease open Fe/Qt4 windows reference count. */
+        int c = mVBox.GetExtraData (VBoxDefs::GUI_MainWindowCount).toInt() - 1;
+        AssertMsg ((c >= 0) || (mVBox.isOk()),
+            ("Something went wrong with the window reference count!"));
+        if (c < 0)
+            c = 0;   /* Clean up the mess. */
+        mVBox.SetExtraData (VBoxDefs::GUI_MainWindowCount,
+                            (c > 0) ? QString ("%1").arg (c) : NULL);
+        AssertWrapperOk (mVBox);
+        if (c == 0)
+        {
+            mVBox.SetExtraData (VBoxDefs::GUI_TrayIconWinID, NULL);
+            AssertWrapperOk (mVBox);
+        }
+    }
+#endif
+
     if (!callback.isNull())
     {
@@ -5625,16 +5661,4 @@
     if (mSelectorWnd)
         delete mSelectorWnd;
-
-#ifdef VBOX_GUI_WITH_SYSTRAY
-    /* Decrease open Fe/Qt4 windows reference count. */
-    int c = mVBox.GetExtraData (VBoxDefs::GUI_MainWindowCount).toInt() - 1;
-    AssertMsg ((c>=0) || (mVBox.isOk()),
-        ("Something went wrong with the window reference count!"));
-    if (c < 0)
-        c = 0;   /* Clean up the mess. */
-    mVBox.SetExtraData (VBoxDefs::GUI_MainWindowCount, (c > 0) ? QString ("%1").arg (c) : NULL);
-    if (c == 0)
-        mVBox.SetExtraData (VBoxDefs::GUI_TrayIconWinID, NULL);
-#endif
 
     /* ensure CGuestOSType objects are no longer used */
Index: trunk/src/VBox/Frontends/VirtualBox4/src/main.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox4/src/main.cpp	(revision 15664)
+++ trunk/src/VBox/Frontends/VirtualBox4/src/main.cpp	(revision 15669)
@@ -346,10 +346,4 @@
                 break;
 
-            /* Note: the settings conversion check must be done before
-             * anything else that can unconditionally overwrite settings files
-             * int he new format (like the license thingy below) */
-            if (!vboxGlobal().checkForAutoConvertedSettings())
-                break;
-
 #ifndef VBOX_OSE
 #ifdef Q_WS_X11
