VirtualBox

Ignore:
Timestamp:
May 28, 2019 10:54:53 AM (6 years ago)
Author:
vboxsync
Message:

Shared Clipboard/URI: Update.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxClipboard.cpp

    r78725 r78809  
    393393                   if (pWinCtx->URI.cTransfers == 0) /* Only allow one transfer at a time for now. */
    394394                   {
    395                        pWinCtx->URI.Transfer.pDataObj = new VBoxClipboardWinDataObject(&pWinCtx->URI.Transfer.Provider);
     395                       pWinCtx->URI.Transfer.pDataObj = new VBoxClipboardWinDataObject(pWinCtx->URI.Transfer.pProvider);
    396396                       if (pWinCtx->URI.Transfer.pDataObj)
    397397                       {
     
    416416                       }
    417417                   }
     418                   else
     419                       LogRel(("Clipboard: Only one transfer at a time supported (current %RU32 transfer(s) active), skipping\n",
     420                               pWinCtx->URI.cTransfers));
    418421               }
    419422#endif
     
    424427
    425428               VBoxClipboardWinClose();
    426                /* Note: Clipboard must be closed first before calling OleSetClipboard(). */
    427429
    428430               LogFunc(("VBOX_WM_SHCLPB_SET_FORMATS: cfFormat=%u, lastErr=%ld\n", cfFormat, GetLastError()));
     
    662664    }
    663665
    664     pCtx->pEnv = pEnv;
    665 
    666666    if (VbglR3AutoLogonIsRemoteSession())
    667667    {
     
    671671    }
    672672
    673     int rc;
     673    pCtx->pEnv = pEnv;
     674
     675    int rc = VINF_SUCCESS;
    674676
    675677#ifdef VBOX_WITH_SHARED_CLIPBOARD_URI_LIST
     
    681683    }
    682684    else
     685    {
    683686        LogRel(("Clipboard: Initialized OLE\n"));
    684 
    685     rc = pCtx->Win.URI.Transfer.Provider.SetSource(SharedClipboardProvider::SourceType_VbglR3);
    686     AssertRC(rc);
     687        rc = VBoxClipboardWinURIInit(&pCtx->Win.URI, SharedClipboardProvider::SourceType_VbglR3);
     688    }
    687689#endif
    688690
    689     /* Check that new Clipboard API is available */
    690     VBoxClipboardWinCheckAndInitNewAPI(&pCtx->Win.newAPI);
    691 
    692     rc = VbglR3ClipboardConnect(&pCtx->u32ClientID);
    693691    if (RT_SUCCESS(rc))
    694692    {
    695         rc = vboxClipboardCreateWindow(pCtx);
     693        /* Check if new Clipboard API is available. */
     694        /* ignore rc */ VBoxClipboardWinCheckAndInitNewAPI(&pCtx->Win.newAPI);
     695
     696        rc = VbglR3ClipboardConnect(&pCtx->u32ClientID);
    696697        if (RT_SUCCESS(rc))
    697698        {
    698             *ppInstance = pCtx;
    699         }
    700         else
    701         {
    702             VbglR3ClipboardDisconnect(pCtx->u32ClientID);
     699            rc = vboxClipboardCreateWindow(pCtx);
     700            if (RT_SUCCESS(rc))
     701            {
     702                *ppInstance = pCtx;
     703            }
     704            else
     705            {
     706                VbglR3ClipboardDisconnect(pCtx->u32ClientID);
     707            }
    703708        }
    704709    }
     
    821826
    822827    vboxClipboardDestroy(pCtx);
    823     RT_BZERO(pCtx, sizeof(VBOXCLIPBOARDCONTEXT));
    824 
    825 #ifdef VBOX_WITH_SHARED_CLIPBOARD_URI_LIST_ASF
     828
     829#ifdef VBOX_WITH_SHARED_CLIPBOARD_URI_LIST
    826830    OleSetClipboard(NULL); /* Make sure to flush the clipboard on destruction. */
    827831    OleUninitialize();
     832
     833    VBoxClipboardWinURIDestroy(&pCtx->Win.URI);
    828834#endif
    829835
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette