X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f2af4afb8269a5ca583278a7d7139bb8f1321535..bf60426831535738b1b784629f08e9dd00bf9ecc:/src/mac/dnd.cpp?ds=sidebyside diff --git a/src/mac/dnd.cpp b/src/mac/dnd.cpp index 5369a1cf34..09a2f1d373 100644 --- a/src/mac/dnd.cpp +++ b/src/mac/dnd.cpp @@ -194,8 +194,12 @@ bool wxDropTarget::GetData() Size dataSize ; Ptr theData ; GetFlavorDataSize((DragReference)m_currentDrag, theItem, theType, &dataSize); - if ( theType == 'TEXT' ) - dataSize++ ; + if ( theType == 'TEXT' ) + { + // this increment is only valid for allocating, on the next GetFlavorData + // call it is reset again to the original value + dataSize++ ; + } theData = new char[dataSize]; GetFlavorData((DragReference)m_currentDrag, theItem, theType, (void*) theData, &dataSize, 0L); if( theType == 'TEXT' ) @@ -203,7 +207,7 @@ bool wxDropTarget::GetData() theData[dataSize]=0 ; if ( wxApp::s_macDefaultEncodingIsPC ) { - wxMacConvertToPC((char*)theData) ; + wxMacConvertToPC((char*)theData,(char*)theData,dataSize) ; } m_dataObject->SetData( format, dataSize, theData ); } @@ -292,7 +296,7 @@ wxDragResult wxDropSource::DoDragDrop(int WXUNUSED(flags)) dataSize-- ; if ( wxApp::s_macDefaultEncodingIsPC ) { - wxMacConvertFromPC((char*)dataPtr) ; + wxMacConvertFromPC((char*)dataPtr,(char*)dataPtr,dataSize) ; } AddDragItemFlavor(theDrag, theItem, type , dataPtr, dataSize, 0); } @@ -336,7 +340,14 @@ wxDragResult wxDropSource::DoDragDrop(int WXUNUSED(flags)) dragRegion = NewRgn(); RgnHandle tempRgn = NewRgn() ; - EventRecord* ev = (EventRecord*) wxTheApp->MacGetCurrentEvent() ; + EventRecord* ev = NULL ; +#if !TARGET_CARBON // TODO + ev = (EventRecord*) wxTheApp->MacGetCurrentEvent() ; +#else + EventRecord rec ; + ev = &rec ; + wxMacConvertEventToRecord( (EventRef) wxTheApp->MacGetCurrentEvent() , &rec ) ; +#endif const short dragRegionOuterBoundary = 10 ; const short dragRegionInnerBoundary = 9 ;