]> git.saurik.com Git - wxWidgets.git/commitdiff
native hook for supported datatypes
authorStefan Csomor <csomor@advancedconcepts.ch>
Sun, 1 Jul 2012 15:46:26 +0000 (15:46 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Sun, 1 Jul 2012 15:46:26 +0000 (15:46 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71915 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/osx/dataobj.h
src/osx/carbon/dataobj.cpp

index b01694a15ef0507ec5315154119da90a78c2b509..8d9ea7a5c035d4ab622d2f9ec5193a21d4252454 100644 (file)
@@ -31,6 +31,10 @@ public:
     // returns true if any of the accepted formats of this dataobj is in the pasteboard
     bool HasDataInPasteboard( void * pasteboardRef );
     bool GetFromPasteboard( void * pasteboardRef );
+    
+#if wxOSX_USE_COCOA
+    virtual void AddSupportedTypes( void* cfarray);
+#endif
 };
 
 #endif // _WX_MAC_DATAOBJ_H_
index 754b6386c82a5cbe1577c04033dfab632ca7337a..db8e5dd5482f6121b6a11220c423a831cef2ce83 100644 (file)
@@ -594,6 +594,46 @@ bool wxDataObject::HasDataInPasteboard( void * pb )
     return hasData;
 }
 
+#if wxOSX_USE_COCOA
+
+void wxDataObject::AddSupportedTypes( void* cfarray)
+{
+    wxDataFormat *array = new wxDataFormat[ GetFormatCount() ];
+    GetAllFormats( array );
+    
+    for (size_t i = 0; i < GetFormatCount(); i++)
+    {
+        wxDataFormat dataFormat = array[ i ];
+        
+        if ( dataFormat.GetType() == wxDF_UNICODETEXT || dataFormat.GetType() == wxDF_TEXT )
+        {
+            CFArrayAppendValue((CFMutableArrayRef)cfarray, kUTTypeUTF16PlainText);
+            CFArrayAppendValue((CFMutableArrayRef)cfarray, kUTTypePlainText);
+        }
+        else if ( dataFormat.GetType() == wxDF_FILENAME )
+        {
+            CFArrayAppendValue((CFMutableArrayRef)cfarray, kUTTypeFileURL);
+            CFArrayAppendValue((CFMutableArrayRef)cfarray, kPasteboardTypeFileURLPromise);
+        }
+        else if ( dataFormat.GetType() == wxDF_HTML )
+        {
+            CFArrayAppendValue((CFMutableArrayRef)cfarray, kUTTypeHTML);
+        }
+        else if ( dataFormat.GetType() == wxDF_BITMAP )
+        {
+            CFArrayAppendValue((CFMutableArrayRef)cfarray, kUTTypeTIFF);
+            CFArrayAppendValue((CFMutableArrayRef)cfarray, kUTTypePICT);
+        }
+        else if ( dataFormat.GetType() == wxDF_METAFILE )
+        {
+            CFArrayAppendValue((CFMutableArrayRef)cfarray, kUTTypePDF);
+        }
+    }
+    delete[] array;
+}
+
+#endif
+
 // ----------------------------------------------------------------------------
 // wxTextDataObject
 // ----------------------------------------------------------------------------