Index: trunk/src/VBox/Main/src-client/GuestDnDTargetImpl.cpp
===================================================================
--- trunk/src/VBox/Main/src-client/GuestDnDTargetImpl.cpp	(revision 82968)
+++ trunk/src/VBox/Main/src-client/GuestDnDTargetImpl.cpp	(revision 84998)
@@ -882,5 +882,5 @@
     AssertPtr(pObj);
 
-    RTCString strPath = pObj->GetDestPathAbs();
+    RTCString strPath = pObj->GetPath();
     if (strPath.isEmpty())
         return VERR_INVALID_PARAMETER;
@@ -909,5 +909,5 @@
     AssertPtr(pObj);
 
-    RTCString strPathSrc = pObj->GetSourcePathAbs();
+    RTCString strPathSrc = pObj->GetPath();
     if (strPathSrc.isEmpty())
         return VERR_INVALID_PARAMETER;
@@ -922,6 +922,8 @@
     {
         LogRel2(("DnD: Opening host file '%s' for transferring to guest\n", strPathSrc.c_str()));
-        rc = pObj->OpenEx(strPathSrc, DnDURIObject::View_Source,
-                          RTFILE_O_OPEN | RTFILE_O_READ | RTFILE_O_DENY_WRITE);
+        rc = pObj->Init(DnDURIObject::Type_File, strPathSrc);
+        if (RT_SUCCESS(rc))
+            rc = pObj->Open(RTFILE_O_OPEN | RTFILE_O_READ | RTFILE_O_DENY_WRITE);
+
         if (RT_FAILURE(rc))
             LogRel(("DnD: Opening host file '%s' failed, rc=%Rrc\n", strPathSrc.c_str(), rc));
@@ -943,13 +945,13 @@
                 pMsg->setType(HOST_DND_HG_SND_FILE_HDR);
                 pMsg->setNextUInt32(0); /** @todo ContextID not used yet. */
-                pMsg->setNextString(pObj->GetDestPathAbs().c_str());                  /* pvName */
-                pMsg->setNextUInt32((uint32_t)(pObj->GetDestPathAbs().length() + 1)); /* cbName */
-                pMsg->setNextUInt32(0);                                            /* uFlags */
-                pMsg->setNextUInt32(pObj->GetMode());                              /* fMode */
-                pMsg->setNextUInt64(pObj->GetSize());                              /* uSize */
+                pMsg->setNextString(pObj->GetPath().c_str());                  /* pvName */
+                pMsg->setNextUInt32((uint32_t)(pObj->GetPath().length() + 1)); /* cbName */
+                pMsg->setNextUInt32(0);                                        /* uFlags */
+                pMsg->setNextUInt32(pObj->GetMode());                          /* fMode */
+                pMsg->setNextUInt64(pObj->GetSize());                          /* uSize */
 
                 LogFlowFunc(("Sending file header ...\n"));
-                LogRel2(("DnD: Transferring host file to guest: %s (%RU64 bytes, mode 0x%x)\n",
-                         strPathSrc.c_str(), pObj->GetSize(), pObj->GetMode()));
+                LogRel2(("DnD: Transferring host file '%s' to guest (%RU64 bytes, mode 0x%x)\n",
+                         pObj->GetPath().c_str(), pObj->GetSize(), pObj->GetMode()));
 
                 /** @todo Set progress object title to current file being transferred? */
@@ -1007,6 +1009,6 @@
     if (mDataBase.m_uProtocolVersion <= 1)
     {
-        pMsg->setNextString(pObj->GetDestPathAbs().c_str());                  /* pvName */
-        pMsg->setNextUInt32((uint32_t)(pObj->GetDestPathAbs().length() + 1)); /* cbName */
+        pMsg->setNextString(pObj->GetPath().c_str());                  /* pvName */
+        pMsg->setNextUInt32((uint32_t)(pObj->GetPath().length() + 1)); /* cbName */
     }
     else if (mDataBase.m_uProtocolVersion >= 2)
@@ -1044,6 +1046,6 @@
         if (pObj->IsComplete()) /* Done reading? */
         {
-            LogRel2(("DnD: Transferring file '%s' to guest complete\n", pObj->GetSourcePathAbs().c_str()));
-            LogFlowFunc(("File '%s' complete\n", pObj->GetSourcePathAbs().c_str()));
+            LogRel2(("DnD: Transferring file '%s' to guest complete\n", pObj->GetPath().c_str()));
+            LogFlowFunc(("File '%s' complete\n", pObj->GetPath().c_str()));
 
             /* DnDURIObject::Read() returns VINF_EOF when finished reading the entire fire,
@@ -1054,5 +1056,5 @@
 
     if (RT_FAILURE(rc))
-        LogRel(("DnD: Reading from host file '%s' failed, rc=%Rrc\n", pObj->GetSourcePathAbs().c_str(), rc));
+        LogRel(("DnD: Reading from host file '%s' failed, rc=%Rrc\n", pObj->GetPath().c_str(), rc));
 
     LogFlowFuncLeaveRC(rc);
@@ -1449,7 +1451,8 @@
     AssertPtr(pCurObj);
 
-    DnDURIObject::Type enmType = pCurObj->GetType();
+    const DnDURIObject::Type enmType = pCurObj->GetType();
+
     LogRel3(("DnD: Processing: srcPath=%s, dstPath=%s, enmType=%RU32, cbSize=%RU32\n",
-             pCurObj->GetSourcePathAbs().c_str(), pCurObj->GetDestPathAbs().c_str(),
+             pCurObj->GetPath().c_str(), pCurObj->GetPath().c_str(),
              enmType, pCurObj->GetSize()));
 
@@ -1465,5 +1468,5 @@
     {
         AssertMsgFailed(("enmType=%RU32 is not supported for srcPath=%s, dstPath=%s\n",
-                         enmType, pCurObj->GetSourcePathAbs().c_str(), pCurObj->GetDestPathAbs().c_str()));
+                         enmType, pCurObj->GetPath().c_str(), pCurObj->GetPath().c_str()));
         rc = VERR_NOT_SUPPORTED;
     }
@@ -1478,5 +1481,5 @@
     if (fRemove)
     {
-        LogFlowFunc(("Removing \"%s\" from list, rc=%Rrc\n", pCurObj->GetSourcePathAbs().c_str(), rc));
+        LogFlowFunc(("Removing \"%s\" from list, rc=%Rrc\n", pCurObj->GetPath().c_str(), rc));
         pCtx->mURI.removeObjCurrent();
     }
