Index: /trunk/src/VBox/Main/include/GuestDnDPrivate.h
===================================================================
--- /trunk/src/VBox/Main/include/GuestDnDPrivate.h	(revision 56652)
+++ /trunk/src/VBox/Main/include/GuestDnDPrivate.h	(revision 56653)
@@ -147,6 +147,6 @@
     /** Target (VM) screen ID. */
     uint32_t                            mScreenID;
-    /** Drag'n drop format to send. */
-    com::Utf8Str                        mFormat;
+    /** Drag'n drop format requested by the guest. */
+    com::Utf8Str                        mFmtReq;
     /** Drag'n drop data to send.
      *  This can be arbitrary data or an URI list. */
@@ -361,6 +361,6 @@
     uint32_t defAction(void) const { return m_defAction; }
 
-    void setFormat(const Utf8Str &strFormat) { m_strFormat = strFormat; }
-    Utf8Str format(void) const { return m_strFormat; }
+    void setFmtReq(const Utf8Str &strFormat) { m_strFmtReq = strFormat; }
+    Utf8Str fmtReq(void) const { return m_strFmtReq; }
 
     void reset(void);
@@ -383,9 +383,14 @@
     /** Pointer to context this class is tied to. */
     void                 *m_pvCtx;
+    /** Event for waiting for response. */
     RTSEMEVENT            m_EventSem;
+    /** Default action to perform in case of a
+     *  successful drop. */
     uint32_t              m_defAction;
+    /** Actions supported by the guest in case of
+     *  a successful drop. */
     uint32_t              m_allActions;
-    Utf8Str               m_strFormat;
-
+    /** Format requested by the guest. */
+    Utf8Str               m_strFmtReq;
     /** Pointer to IGuest parent object. */
     ComObjPtr<Guest>      m_parent;
@@ -451,5 +456,5 @@
     /** @name Static helper methods.
      * @{ */
-    static com::Utf8Str        toFormatString(const std::vector<com::Utf8Str> &lstSupportedFormats, const std::vector<com::Utf8Str> &lstFormats);
+    static com::Utf8Str        toFormatString(const std::vector<com::Utf8Str> &lstSupportedFormats, const std::vector<com::Utf8Str> &lstWantedFormats);
     static void                toFormatVector(const std::vector<com::Utf8Str> &lstSupportedFormats, const com::Utf8Str &strFormats, std::vector<com::Utf8Str> &vecformats);
     static DnDAction_T         toMainAction(uint32_t uAction);
@@ -528,5 +533,8 @@
     const ComObjPtr<Guest>          m_pGuest;
     /** List of supported MIME/Content-type formats. */
-    std::vector<com::Utf8Str>       m_strFormats;
+    std::vector<com::Utf8Str>       m_vecFmtSup;
+    /** List of offered/compatible MIME/Content-type formats to the
+     *  counterpart. */
+    std::vector<com::Utf8Str>       m_vecFmtOff;
     /** @}  */
 
Index: /trunk/src/VBox/Main/src-client/GuestDnDPrivate.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/GuestDnDPrivate.cpp	(revision 56652)
+++ /trunk/src/VBox/Main/src-client/GuestDnDPrivate.cpp	(revision 56653)
@@ -221,5 +221,5 @@
     m_allActions = 0;
 
-    m_strFormat  = "";
+    m_strFmtReq  = "";
 }
 
@@ -382,5 +382,5 @@
 
             if (   pCBData->cbFormat == 0
-                || pCBData->cbFormat >  _64K)
+                || pCBData->cbFormat > _64K)
             {
                 rc = VERR_INVALID_PARAMETER;
@@ -388,5 +388,5 @@
             else
             {
-                setFormat(pCBData->pszFormat);
+                setFmtReq(pCBData->pszFormat);
 
                 rc = VINF_SUCCESS;
@@ -428,5 +428,5 @@
             else
             {
-                setFormat    (pCBData->pszFormat);
+                setFmtReq    (pCBData->pszFormat);
                 setDefAction (pCBData->uDefAction);
                 setAllActions(pCBData->uAllActions);
@@ -492,7 +492,11 @@
 
     /* List of supported default MIME types. */
+    LogRel2(("DnD: Supported default host formats:\n"));
     const com::Utf8Str arrEntries[] = { VBOX_DND_FORMATS_DEFAULT };
     for (size_t i = 0; i < RT_ELEMENTS(arrEntries); i++)
+    {
         m_strDefaultFormats.push_back(arrEntries[i]);
+        LogRel2(("DnD: \t%s\n", arrEntries[i].c_str()));
+    }
 }
 
@@ -577,10 +581,10 @@
 /* static */
 com::Utf8Str GuestDnD::toFormatString(const std::vector<com::Utf8Str> &lstSupportedFormats,
-                                      const std::vector<com::Utf8Str> &lstFormats)
+                                      const std::vector<com::Utf8Str> &lstWantedFormats)
 {
     com::Utf8Str strFormat;
-    for (size_t i = 0; i < lstFormats.size(); ++i)
-    {
-        const com::Utf8Str &f = lstFormats.at(i);
+    for (size_t i = 0; i < lstWantedFormats.size(); ++i)
+    {
+        const com::Utf8Str &f = lstWantedFormats.at(i);
         /* Only keep allowed format types. */
         if (std::find(lstSupportedFormats.begin(),
@@ -707,11 +711,11 @@
      * Initialize public attributes.
      */
-    m_strFormats = GuestDnDInst()->defaultFormats();
+    m_vecFmtSup = GuestDnDInst()->defaultFormats();
 }
 
 HRESULT GuestDnDBase::i_isFormatSupported(const com::Utf8Str &aFormat, BOOL *aSupported)
 {
-    *aSupported = std::find(m_strFormats.begin(),
-                            m_strFormats.end(), aFormat) != m_strFormats.end()
+    *aSupported = std::find(m_vecFmtSup.begin(),
+                            m_vecFmtSup.end(), aFormat) != m_vecFmtSup.end()
                 ? TRUE : FALSE;
     return S_OK;
@@ -720,5 +724,5 @@
 HRESULT GuestDnDBase::i_getFormats(std::vector<com::Utf8Str> &aFormats)
 {
-    aFormats = m_strFormats;
+    aFormats = m_vecFmtSup;
 
     return S_OK;
@@ -730,8 +734,8 @@
     {
         Utf8Str strFormat = aFormats.at(i);
-        if (std::find(m_strFormats.begin(),
-                      m_strFormats.end(), strFormat) == m_strFormats.end())
-        {
-            m_strFormats.push_back(strFormat);
+        if (std::find(m_vecFmtSup.begin(),
+                      m_vecFmtSup.end(), strFormat) == m_vecFmtSup.end())
+        {
+            m_vecFmtSup.push_back(strFormat);
         }
     }
@@ -745,8 +749,8 @@
     {
         Utf8Str strFormat = aFormats.at(i);
-        std::vector<com::Utf8Str>::iterator itFormat = std::find(m_strFormats.begin(),
-                                                                 m_strFormats.end(), strFormat);
-        if (itFormat != m_strFormats.end())
-            m_strFormats.erase(itFormat);
+        std::vector<com::Utf8Str>::iterator itFormat = std::find(m_vecFmtSup.begin(),
+                                                                 m_vecFmtSup.end(), strFormat);
+        if (itFormat != m_vecFmtSup.end())
+            m_vecFmtSup.erase(itFormat);
     }
 
