Changeset 80905 in vbox for trunk/src/VBox/Additions/WINNT
- Timestamp:
- Sep 19, 2019 12:14:07 PM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 133480
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxClipboard.cpp
r80886 r80905 94 94 *********************************************************************************************************************************/ 95 95 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS 96 static DECLCALLBACK(void) vboxClipboardTransferCompleteCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc); 97 static DECLCALLBACK(void) vboxClipboardTransferErrorCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc); 96 static DECLCALLBACK(int) vboxClipboardOnTransferStartCallback(PSHCLTRANSFERCALLBACKDATA pData); 97 static DECLCALLBACK(void) vboxClipboardOnTransferCompleteCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc); 98 static DECLCALLBACK(void) vboxClipboardOnTransferErrorCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc); 98 99 #endif 99 100 … … 183 184 } 184 185 185 static DECLCALLBACK(void) vboxClipboardTransferCompleteCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc) 186 { 187 RT_NOREF(rc); 188 189 LogFlowFunc(("pData=%p, rc=%Rrc\n", pData, rc)); 186 static DECLCALLBACK(int) vboxClipboardOnTransferStartCallback(PSHCLTRANSFERCALLBACKDATA pData) 187 { 188 PSHCLCONTEXT pCtx = (PSHCLCONTEXT)pData->pvUser; 189 AssertPtr(pCtx); 190 191 LogFlowFunc(("pCtx=%p\n", pCtx)); 192 193 int rc = SharedClipboardWinOpen(pCtx->Win.hWnd); 194 if (RT_SUCCESS(rc)) 195 { 196 PSHCLTRANSFER pTransfer; 197 rc = SharedClipboardTransferCreate(&pTransfer); 198 if (RT_SUCCESS(rc)) 199 rc = SharedClipboardTransferInit(pTransfer, 0 /* uID */, 200 SHCLTRANSFERDIR_WRITE, SHCLSOURCE_LOCAL); 201 if (RT_SUCCESS(rc)) 202 { 203 /* The data data in CF_HDROP format, as the files are locally present and don't need to be 204 * presented as a IDataObject or IStream. */ 205 HANDLE hClip = hClip = GetClipboardData(CF_HDROP); 206 if (hClip) 207 { 208 HDROP hDrop = (HDROP)GlobalLock(hClip); 209 if (hDrop) 210 { 211 char *papszList = NULL; 212 uint32_t cbList; 213 rc = SharedClipboardWinDropFilesToStringList((DROPFILES *)hDrop, &papszList, &cbList); 214 215 GlobalUnlock(hClip); 216 217 if (RT_SUCCESS(rc)) 218 { 219 rc = SharedClipboardTransferRootsSet(pTransfer, 220 papszList, cbList + 1 /* Include termination */); 221 RTStrFree(papszList); 222 } 223 } 224 else 225 { 226 hClip = NULL; 227 } 228 } 229 } 230 231 SharedClipboardWinClose(); 232 } 233 234 LogFlowFuncLeaveRC(rc); 235 return rc; 236 } 237 238 static DECLCALLBACK(void) vboxClipboardOnTransferCompleteCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc) 239 { 240 PSHCLCONTEXT pCtx = (PSHCLCONTEXT)pData->pvUser; 241 AssertPtr(pCtx); 242 243 RT_NOREF(pCtx, rc); 244 245 LogFlowFunc(("pCtx=%p, rc=%Rrc\n", pCtx, rc)); 190 246 191 247 LogRel2(("Shared Clipboard: Transfer to destination complete\n")); … … 194 250 } 195 251 196 static DECLCALLBACK(void) vboxClipboardTransferErrorCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc) 197 { 198 RT_NOREF(rc); 199 200 LogFlowFunc(("pData=%p, rc=%Rrc\n", pData, rc)); 252 static DECLCALLBACK(void) vboxClipboardOnTransferErrorCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc) 253 { 254 PSHCLCONTEXT pCtx = (PSHCLCONTEXT)pData->pvUser; 255 AssertPtr(pCtx); 256 257 RT_NOREF(pCtx, rc); 258 259 LogFlowFunc(("pCtx=%p, rc=%Rrc\n", pCtx, rc)); 201 260 202 261 LogRel(("Shared Clipboard: Transfer to destination failed with %Rrc\n", rc)); … … 770 829 } 771 830 } 772 #if def VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS831 #if 0 773 832 else if (uFormat == VBOX_SHCL_FMT_URI_LIST) 774 833 { … … 979 1038 creationCtx.enmSource = SHCLSOURCE_REMOTE; 980 1039 981 creationCtx.Interface.pfn GetRoots= vboxClipboardTransferGetRoots;1040 creationCtx.Interface.pfnRootsGet = vboxClipboardTransferGetRoots; 982 1041 creationCtx.Interface.pfnListOpen = vboxClipboardTransferListOpen; 983 1042 creationCtx.Interface.pfnListClose = vboxClipboardTransferListClose; … … 1151 1210 } 1152 1211 else 1212 { 1153 1213 LogRel(("Shared Clipboard: Initialized OLE\n")); 1214 1215 /* Install callbacks. */ 1216 RT_ZERO(pCtx->CmdCtx.Transfers.Callbacks); 1217 1218 pCtx->CmdCtx.Transfers.Callbacks.pvUser = pCtx; /* Assign context as user-provided callback data. */ 1219 1220 pCtx->CmdCtx.Transfers.Callbacks.pfnTransferStart = vboxClipboardOnTransferStartCallback; 1221 pCtx->CmdCtx.Transfers.Callbacks.pfnTransferComplete = vboxClipboardOnTransferCompleteCallback; 1222 pCtx->CmdCtx.Transfers.Callbacks.pfnTransferError = vboxClipboardOnTransferErrorCallback; 1223 } 1154 1224 #endif 1155 1225
Note:
See TracChangeset
for help on using the changeset viewer.