summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Fischer <af@apache.org>2012-08-22 07:37:16 +0000
committerCaolán McNamara <caolanm@redhat.com>2013-05-24 14:58:21 +0100
commite31d408ca6bdaaa3eef9fc2eaa50e4745ebd33ff (patch)
treeb799c1b3536fadb02ab8b8d45030de14f665c53c
parent7766874d7180b17ab0901b1540db9ffe33991cec (diff)
Resolves: #i120481# Add registered transferable flavor...
to make the Writer accept column headers dragged from database tables. (cherry picked from commit a32aabba57b53f581691f60e5484a6ddf3deb9f2) Change-Id: I63d41c8000cdfc7f0b2ca28e83aaedf2e822e64d
-rw-r--r--vcl/aqua/source/dtrans/DataFlavorMapping.cxx27
-rw-r--r--vcl/aqua/source/dtrans/DataFlavorMapping.hxx2
2 files changed, 20 insertions, 9 deletions
diff --git a/vcl/aqua/source/dtrans/DataFlavorMapping.cxx b/vcl/aqua/source/dtrans/DataFlavorMapping.cxx
index 7b5787149844..d61d09bfe1b2 100644
--- a/vcl/aqua/source/dtrans/DataFlavorMapping.cxx
+++ b/vcl/aqua/source/dtrans/DataFlavorMapping.cxx
@@ -564,14 +564,17 @@ NSString* DataFlavorMapper::openOfficeToSystemFlavor(const DataFlavor& oOOFlavor
}
}
- if( ! sysFlavor )
- {
- OfficeOnlyTypes::const_iterator it = maOfficeOnlyTypes.find( oOOFlavor.MimeType );
- if( it == maOfficeOnlyTypes.end() )
- sysFlavor = maOfficeOnlyTypes[ oOOFlavor.MimeType ] = OUStringToNSString( oOOFlavor.MimeType );
- else
- sysFlavor = it->second;
- }
+ return sysFlavor;
+}
+
+NSString* DataFlavorMapper::internalOpenOfficeToSystemFlavor(const DataFlavor& oOOFlavor) const
+{
+ NSString* sysFlavor = NULL;
+ OfficeOnlyTypes::const_iterator it = maOfficeOnlyTypes.find( oOOFlavor.MimeType );
+ if( it == maOfficeOnlyTypes.end() )
+ sysFlavor = maOfficeOnlyTypes[ oOOFlavor.MimeType ] = OUStringToNSString( oOOFlavor.MimeType );
+ else
+ sysFlavor = it->second;
return sysFlavor;
}
@@ -699,6 +702,8 @@ NSArray* DataFlavorMapper::flavorSequenceToTypesArray(const com::sun::star::uno:
sal_uInt32 nFlavors = flavors.getLength();
NSMutableArray* array = [[NSMutableArray alloc] initWithCapacity: 1];
+ bool bNeedDummyInternalFlavor (true);
+
for (sal_uInt32 i = 0; i < nFlavors; i++)
{
if( flavors[i].MimeType.startsWith("image/bmp") )
@@ -709,6 +714,10 @@ NSArray* DataFlavorMapper::flavorSequenceToTypesArray(const com::sun::star::uno:
else
{
NSString* str = openOfficeToSystemFlavor(flavors[i]);
+ if (str == NULL)
+ str = internalOpenOfficeToSystemFlavor(flavors[i]);
+ else
+ bNeedDummyInternalFlavor = false;
if (str != NULL)
{
@@ -721,7 +730,7 @@ NSArray* DataFlavorMapper::flavorSequenceToTypesArray(const com::sun::star::uno:
// #i89462# #i90747#
// in case no system flavor was found to report
// report at least one so D&D between OOo targets works
- if( [array count] == 0 )
+ if( [array count] == 0 || bNeedDummyInternalFlavor)
{
[array addObject: PBTYPE_DUMMY_INTERNAL];
}
diff --git a/vcl/aqua/source/dtrans/DataFlavorMapping.hxx b/vcl/aqua/source/dtrans/DataFlavorMapping.hxx
index ed78689c426c..3c1ee87b7c6f 100644
--- a/vcl/aqua/source/dtrans/DataFlavorMapping.hxx
+++ b/vcl/aqua/source/dtrans/DataFlavorMapping.hxx
@@ -128,6 +128,8 @@ private:
*/
bool isValidMimeContentType(const OUString& contentType) const;
+ NSString* internalOpenOfficeToSystemFlavor(const com::sun::star::datatransfer::DataFlavor& oooDataFlavor) const;
+
private:
::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XMimeContentTypeFactory> mrXMimeCntFactory;
typedef boost::unordered_map< OUString, NSString*, OUStringHash > OfficeOnlyTypes;