supporting promised file urls for transfer, see #14281

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71804 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2012-06-18 15:13:53 +00:00
parent 37a181d500
commit fb35086d8c

View File

@@ -26,6 +26,7 @@
#include "wx/mstream.h"
#include "wx/metafile.h"
#include "wx/tokenzr.h"
#include "wx/filename.h"
#include "wx/osx/private.h"
@@ -33,7 +34,6 @@
#include <QuickTime/QuickTime.h>
#endif
// ----------------------------------------------------------------------------
// wxDataFormat
// ----------------------------------------------------------------------------
@@ -186,7 +186,8 @@ void wxDataFormat::SetId( NativeFormat format )
{
m_type = wxDF_METAFILE;
}
else if ( UTTypeConformsTo( (CFStringRef)format, CFSTR("public.file-url") ) )
else if ( UTTypeConformsTo( (CFStringRef)format, CFSTR("public.file-url") ) ||
UTTypeConformsTo( (CFStringRef)format, kPasteboardTypeFileURLPromise))
{
m_type = wxDF_FILENAME;
}
@@ -424,6 +425,17 @@ bool wxDataObject::GetFromPasteboard( void * pb )
if ( dataFormat == flavorFormat )
{
if ( UTTypeConformsTo( (CFStringRef)flavorType, kPasteboardTypeFileURLPromise) )
{
wxString tempdir = wxFileName::GetTempDir() + wxFILE_SEP_PATH + "wxtemp.XXXXXX";
char* result = mkdtemp((char*)tempdir.fn_str().data());
if (!result)
continue;
wxCFRef<CFURLRef> dest(CFURLCreateFromFileSystemRepresentation(NULL,(const UInt8*)result,strlen(result),true));
PasteboardSetPasteLocation(pasteboard, dest);
}
err = PasteboardCopyItemFlavorData( pasteboard, itemID, flavorType , &flavorData );
if ( err == noErr )
{