X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2245b2b2c3339ecf023e5880caa803610a5d1907..94311eef78b66304c9a2f78bcbdd396c798f19a6:/src/mac/dnd.cpp diff --git a/src/mac/dnd.cpp b/src/mac/dnd.cpp index 33ad69d413..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 ; @@ -490,8 +501,9 @@ pascal OSErr wxMacWindowDragTrackingHandler(DragTrackingMessage theMessage, Wind return(noErr); } -pascal OSErr wxMacWindowDragReceiveHandler(WindowPtr theWindow, void *handlerRefCon, -DragReference theDrag) +pascal OSErr wxMacWindowDragReceiveHandler(WindowPtr theWindow, + void *handlerRefCon, + DragReference theDrag) { MacTrackingGlobals* trackingGlobals = (MacTrackingGlobals*) handlerRefCon; if ( trackingGlobals->m_currentTarget )