View | Details | Raw Unified | Return to issue 117990
Collapse All | Expand All

(-)a/vcl/aqua/source/dtrans/DataFlavorMapping.cxx (-8 / +42 lines)
Lines 523-528 Link Here
523
	throw RuntimeException(OUString(RTL_CONSTASCII_USTRINGPARAM("AquaClipboard: Cannot create com.sun.star.datatransfer.MimeContentTypeFactory")), NULL);
523
	throw RuntimeException(OUString(RTL_CONSTASCII_USTRINGPARAM("AquaClipboard: Cannot create com.sun.star.datatransfer.MimeContentTypeFactory")), NULL);
524
}
524
}
525
525
526
DataFlavorMapper::~DataFlavorMapper()
527
{
528
    // release potential NSStrings
529
    for( std::hash_map< rtl::OUString, NSString*, rtl::OUStringHash >::iterator it
530
         = maOfficeOnlyTypes.begin(); it != maOfficeOnlyTypes.end(); ++it )
531
    {
532
        [it->second release];
533
        it->second = nil;
534
    }    
535
}
536
526
DataFlavor DataFlavorMapper::systemToOpenOfficeFlavor(NSString* systemDataFlavor) const
537
DataFlavor DataFlavorMapper::systemToOpenOfficeFlavor(NSString* systemDataFlavor) const
527
{
538
{
528
  DataFlavor oOOFlavor;
539
  DataFlavor oOOFlavor;
Lines 538-559 Link Here
538
		}
549
		}
539
	} // for
550
	} // for
540
551
541
  return oOOFlavor;
552
	// look if this might be an internal type; if it comes in here it must have
553
	// been through openOfficeToSystemFlavor before, so it should then be in the map
554
	rtl::OUString aTryFlavor( NSStringToOUString( systemDataFlavor ) );
555
	if( maOfficeOnlyTypes.find( aTryFlavor ) != maOfficeOnlyTypes.end() )
556
	{
557
	    oOOFlavor.MimeType = aTryFlavor;
558
	    oOOFlavor.HumanPresentableName = rtl::OUString();
559
	    oOOFlavor.DataType = CPPUTYPE_SEQINT8;
560
	}
561
	
562
	return oOOFlavor;
542
}
563
}
543
564
544
NSString* DataFlavorMapper::openOfficeToSystemFlavor(const DataFlavor& oOOFlavor) const
565
NSString* DataFlavorMapper::openOfficeToSystemFlavor(const DataFlavor& oOOFlavor) const
545
{
566
{
546
  NSString* sysFlavor = NULL;
567
    NSString* sysFlavor = NULL;
547
568
    
548
  for (size_t i = 0; i < SIZE_FLAVOR_MAP; i++)
569
    for (size_t i = 0; i < SIZE_FLAVOR_MAP; i++)
549
	{
570
	{
550
	  if (oOOFlavor.MimeType.compareToAscii(flavorMap[i].OOoFlavor, strlen(flavorMap[i].OOoFlavor)) == 0)
571
	    if (oOOFlavor.MimeType.compareToAscii(flavorMap[i].OOoFlavor, strlen(flavorMap[i].OOoFlavor)) == 0)
551
		{
572
		{
552
		  sysFlavor = flavorMap[i].SystemFlavor;
573
		    sysFlavor = flavorMap[i].SystemFlavor;
553
		}
574
		}
554
	}
575
	}
555
576
	
556
  return sysFlavor;
577
	if( ! sysFlavor )
578
	{
579
	    std::hash_map<rtl::OUString, NSString*, rtl::OUStringHash >::const_iterator it
580
	    = maOfficeOnlyTypes.find( oOOFlavor.MimeType );
581
	    if( it == maOfficeOnlyTypes.end() )
582
	    {
583
	        sysFlavor = maOfficeOnlyTypes[ oOOFlavor.MimeType ] = OUStringToNSString( oOOFlavor.MimeType );
584
	    }
585
	    else
586
	        sysFlavor = it->second;
587
	}
588
	
589
	return sysFlavor;
557
}
590
}
558
591
559
NSString* DataFlavorMapper::openOfficeImageToSystemFlavor(NSPasteboard* pPasteboard) const
592
NSString* DataFlavorMapper::openOfficeImageToSystemFlavor(NSPasteboard* pPasteboard) const
Lines 690-695 Link Here
690
          
723
          
691
          if (str != NULL)
724
          if (str != NULL)
692
          {
725
          {
726
              [str retain];
693
              [array addObject: str];
727
              [array addObject: str];
694
          }
728
          }
695
      }
729
      }
(-)a/vcl/aqua/source/dtrans/DataFlavorMapping.hxx (+3 lines)
Lines 37-42 Link Here
37
#import <Cocoa/Cocoa.h>
37
#import <Cocoa/Cocoa.h>
38
#include <postmac.h>
38
#include <postmac.h>
39
39
40
#include <hash_map>
40
#include <memory>
41
#include <memory>
41
#include <boost/shared_ptr.hpp>
42
#include <boost/shared_ptr.hpp>
42
43
Lines 73-78 Link Here
73
	 cannot be created.
74
	 cannot be created.
74
   */
75
   */
75
  DataFlavorMapper();
76
  DataFlavorMapper();
77
  ~DataFlavorMapper();
76
78
77
79
78
  /* Map a system data flavor to an OpenOffice data flavor. 
80
  /* Map a system data flavor to an OpenOffice data flavor. 
Lines 136-141 Link Here
136
138
137
private:
139
private:
138
  ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XMimeContentTypeFactory> mrXMimeCntFactory;
140
  ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XMimeContentTypeFactory> mrXMimeCntFactory;
141
  mutable std::hash_map< rtl::OUString, NSString*, rtl::OUStringHash > maOfficeOnlyTypes;
139
};
142
};
140
143
141
typedef boost::shared_ptr<DataFlavorMapper> DataFlavorMapperPtr_t;
144
typedef boost::shared_ptr<DataFlavorMapper> DataFlavorMapperPtr_t;

Return to issue 117990