X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6db6bfd1ce8c6c4b06a74e04fad3470ac792a770..9e03e02d0ca493bc65f083600f1427d2ac8028ff:/src/mac/carbon/dnd.cpp diff --git a/src/mac/carbon/dnd.cpp b/src/mac/carbon/dnd.cpp index eac973dd14..a84bce9196 100644 --- a/src/mac/carbon/dnd.cpp +++ b/src/mac/carbon/dnd.cpp @@ -301,7 +301,7 @@ wxDropSource::~wxDropSource() } -wxDragResult wxDropSource::DoDragDrop(int WXUNUSED(flags)) +wxDragResult wxDropSource::DoDragDrop(int flags) { wxASSERT_MSG( m_data, wxT("Drop source: no data") ); @@ -416,7 +416,12 @@ wxDragResult wxDropSource::DoDragDrop(int WXUNUSED(flags)) gTrackingGlobals.m_currentSource = NULL ; bool optionDown = GetCurrentKeyModifiers() & optionKey ; - wxDragResult dndresult = optionDown ? wxDragCopy : wxDragMove; + wxDragResult dndresult = wxDragCopy ; + if ( flags != wxDrag_CopyOnly ) + { + // on mac the option key is always the indication for copy + dndresult = optionDown ? wxDragCopy : wxDragMove; + } return dndresult; } @@ -492,20 +497,20 @@ pascal OSErr wxMacWindowDragTrackingHandler(DragTrackingMessage theMessage, Wind -// if (attributes & kDragHasLeftSenderWindow) { -// wxPoint point(localMouse.h , localMouse.v) ; wxWindow *win = NULL ; ControlPartCode controlPart ; ControlRef control = wxMacFindControlUnderMouse( toplevel , localMouse , theWindow , &controlPart ) ; if ( control ) win = wxFindControlFromMacControl( control ) ; - // TODO toplevel->MacGetWindowFromPointSub( point , &win ) ; + else + win = toplevel ; + int localx , localy ; localx = localMouse.h ; localy = localMouse.v ; - //TODO : should we use client coordinates + if ( win ) win->MacRootWindowToWindow( &localx , &localy ) ; if ( win != trackingGlobals->m_currentTargetWindow ) @@ -596,8 +601,7 @@ pascal OSErr wxMacWindowDragTrackingHandler(DragTrackingMessage theMessage, Wind } } - } - // MyTrackItemUnderMouse(localMouse, theWindow); + } break; case kDragTrackingLeaveWindow: if (trackingGlobals->m_currentTarget)