X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/489468feaa08b8f504735eecca522fb8d0f825d2..945eac794c1b3039dddafc53c5f104f7ba88fadf:/src/osx/carbon/dnd.cpp?ds=inline diff --git a/src/osx/carbon/dnd.cpp b/src/osx/carbon/dnd.cpp index 11709e12ce..172b99a437 100644 --- a/src/osx/carbon/dnd.cpp +++ b/src/osx/carbon/dnd.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: src/mac/carbon/dnd.cpp +// Name: src/osx/carbon/dnd.cpp // Purpose: wxDropTarget, wxDropSource implementations // Author: Stefan Csomor // Modified by: @@ -21,7 +21,7 @@ #include "wx/gdicmn.h" #endif // WX_PRECOMP -#include "wx/mac/private.h" +#include "wx/osx/private.h" // ---------------------------------------------------------------------------- // globals @@ -107,6 +107,7 @@ bool wxDropTarget::CurrentDragHasSupportedFormat() } } +#if wxOSX_USE_CARBON if ( !supported ) { PasteboardRef pasteboard; @@ -116,6 +117,7 @@ bool wxDropTarget::CurrentDragHasSupportedFormat() supported = m_dataObject->HasDataInPasteboard( pasteboard ); } } +#endif return supported; } @@ -164,6 +166,7 @@ bool wxDropTarget::GetData() } } +#if wxOSX_USE_CARBON if ( !transferred ) { PasteboardRef pasteboard; @@ -173,6 +176,7 @@ bool wxDropTarget::GetData() transferred = m_dataObject->GetFromPasteboard( pasteboard ); } } +#endif return transferred; } @@ -231,6 +235,7 @@ wxDragResult wxDropSource::DoDragDrop(int flags) if ((m_data == NULL) || (m_data->GetFormatCount() == 0)) return (wxDragResult)wxDragNone; +#if wxOSX_USE_CARBON DragReference theDrag; RgnHandle dragRegion; OSStatus err = noErr; @@ -305,6 +310,7 @@ wxDragResult wxDropSource::DoDragDrop(int flags) DisposeDrag( theDrag ); CFRelease( pasteboard ); gTrackingGlobals.m_currentSource = NULL; +#endif return gTrackingGlobals.m_result; } @@ -325,15 +331,18 @@ bool gTrackingGlobalsInstalled = false; // passing the globals via refcon is not needed by the CFM and later architectures anymore // but I'll leave it in there, just in case... +#if wxOSX_USE_CARBON pascal OSErr wxMacWindowDragTrackingHandler( DragTrackingMessage theMessage, WindowPtr theWindow, void *handlerRefCon, DragReference theDrag ); pascal OSErr wxMacWindowDragReceiveHandler( WindowPtr theWindow, void *handlerRefCon, DragReference theDrag ); +#endif void wxMacEnsureTrackingHandlersInstalled() { +#if wxOSX_USE_CARBON if ( !gTrackingGlobalsInstalled ) { OSStatus err; @@ -346,8 +355,10 @@ void wxMacEnsureTrackingHandlersInstalled() gTrackingGlobalsInstalled = true; } +#endif } +#if wxOSX_USE_CARBON pascal OSErr wxMacWindowDragTrackingHandler( DragTrackingMessage theMessage, WindowPtr theWindow, void *handlerRefCon, DragReference theDrag ) @@ -359,7 +370,7 @@ pascal OSErr wxMacWindowDragTrackingHandler( GetDragAttributes( theDrag, &attributes ); - wxNonOwnedWindow* toplevel = wxFindWinFromMacWindow( theWindow ); + wxNonOwnedWindow* toplevel = wxNonOwnedWindow::GetFromWXWindow( (WXWindow) theWindow ); bool optionDown = GetCurrentKeyModifiers() & optionKey; wxDragResult result = optionDown ? wxDragCopy : wxDragMove; @@ -385,15 +396,18 @@ pascal OSErr wxMacWindowDragTrackingHandler( break; GetDragMouse( theDrag, &mouse, 0L ); - localMouse = mouse; - wxMacGlobalToLocal( theWindow, &localMouse ); + int x = mouse.h ; + int y = mouse.v ; + toplevel->GetNonOwnedPeer()->ScreenToWindow( &x, &y ); + localMouse.h = x; + localMouse.v = y; { wxWindow *win = NULL; ControlPartCode controlPart; ControlRef control = FindControlUnderMouse( localMouse, theWindow, &controlPart ); if ( control ) - win = wxFindControlFromMacControl( control ); + win = wxFindWindowFromWXWidget( (WXWidget) control ); else win = toplevel; @@ -463,7 +477,7 @@ pascal OSErr wxMacWindowDragTrackingHandler( { if ( !trackingGlobals->m_currentSource->MacInstallDefaultCursor( result ) ) { - int cursorID = wxCURSOR_NONE; + wxStockCursor cursorID = wxCURSOR_NONE; switch (result) { @@ -534,9 +548,11 @@ pascal OSErr wxMacWindowDragReceiveHandler( trackingGlobals->m_currentTarget->SetCurrentDrag( theDrag ); GetDragMouse( theDrag, &mouse, 0L ); localMouse = mouse; - wxMacGlobalToLocal( theWindow, &localMouse ); localx = localMouse.h; localy = localMouse.v; + wxNonOwnedWindow* tlw = wxNonOwnedWindow::GetFromWXWindow((WXWindow) theWindow); + if ( tlw ) + tlw->GetNonOwnedPeer()->ScreenToWindow( &localx, &localy ); // TODO : should we use client coordinates? if ( trackingGlobals->m_currentTargetWindow ) @@ -557,6 +573,7 @@ pascal OSErr wxMacWindowDragReceiveHandler( return noErr; } +#endif #endif // wxUSE_DRAG_AND_DROP