]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/dnd.cpp
allowing shaped windows again
[wxWidgets.git] / src / mac / carbon / dnd.cpp
index f82e12418ff8e5b215f366027563e4ac70760a71..5744c01f3dde21370c37ef40136328884cf5f5a9 100644 (file)
@@ -206,7 +206,7 @@ bool wxDropTarget::GetData()
                         if( theType == 'TEXT' )
                         {
                             theData[dataSize]=0 ; 
                         if( theType == 'TEXT' )
                         {
                             theData[dataSize]=0 ; 
-                            wxString convert = wxMacMakeStringFromCString( theData ) ;    
+                            wxString convert( theData , wxConvLocal ) ;    
                             m_dataObject->SetData( format, convert.Length() * sizeof(wxChar), (const wxChar*) convert );
                         }
                         else if ( theType == kDragFlavorTypeHFS )
                             m_dataObject->SetData( format, convert.Length() * sizeof(wxChar), (const wxChar*) convert );
                         }
                         else if ( theType == kDragFlavorTypeHFS )
@@ -302,7 +302,7 @@ wxDragResult wxDropSource::DoDragDrop(int WXUNUSED(flags))
             dataSize-- ;
             dataPtr[ dataSize ] = 0 ;
             wxString st( (wxChar*) dataPtr ) ;
             dataSize-- ;
             dataPtr[ dataSize ] = 0 ;
             wxString st( (wxChar*) dataPtr ) ;
-            wxCharBuffer buf = wxMacStringToCString( st ) ;
+            wxCharBuffer buf = st.mb_str( wxConvLocal) ;
             AddDragItemFlavor(theDrag, theItem, type , buf.data(), strlen(buf), 0);
         }
         else if (type == kDragFlavorTypeHFS )
             AddDragItemFlavor(theDrag, theItem, type , buf.data(), strlen(buf), 0);
         }
         else if (type == kDragFlavorTypeHFS )
@@ -379,7 +379,7 @@ wxDragResult wxDropSource::DoDragDrop(int WXUNUSED(flags))
     gTrackingGlobals.m_currentSource = NULL ;
     
     KeyMap keymap;
     gTrackingGlobals.m_currentSource = NULL ;
     
     KeyMap keymap;
-    GetKeys((BigEndianLong*)&keymap);
+    GetKeys(keymap);
     bool optionDown = keymap[1] & 4;
     wxDragResult dndresult = optionDown ? wxDragCopy : wxDragMove;
     return dndresult;
     bool optionDown = keymap[1] & 4;
     wxDragResult dndresult = optionDown ? wxDragCopy : wxDragMove;
     return dndresult;
@@ -435,7 +435,7 @@ pascal OSErr wxMacWindowDragTrackingHandler(DragTrackingMessage theMessage, Wind
     wxTopLevelWindowMac* toplevel = wxFindWinFromMacWindow( theWindow ) ; 
 
     KeyMap keymap;
     wxTopLevelWindowMac* toplevel = wxFindWinFromMacWindow( theWindow ) ; 
 
     KeyMap keymap;
-    GetKeys((BigEndianLong*)&keymap);
+    GetKeys(keymap);
     bool optionDown = keymap[1] & 4;
     wxDragResult result = optionDown ? wxDragCopy : wxDragMove;
 
     bool optionDown = keymap[1] & 4;
     wxDragResult result = optionDown ? wxDragCopy : wxDragMove;
 
@@ -463,7 +463,12 @@ pascal OSErr wxMacWindowDragTrackingHandler(DragTrackingMessage theMessage, Wind
             {
                 wxPoint point(localMouse.h , localMouse.v) ;
                 wxWindow *win = NULL ;
             {
                 wxPoint point(localMouse.h , localMouse.v) ;
                 wxWindow *win = NULL ;
-                toplevel->MacGetWindowFromPointSub( point , &win ) ;
+                ControlPartCode controlPart ;
+                ControlRef control = wxMacFindControlUnderMouse( localMouse ,
+                    theWindow , &controlPart ) ;
+                if ( control )
+                    win = wxFindControlFromMacControl( control ) ;
+                // TODO toplevel->MacGetWindowFromPointSub( point , &win ) ;
                 int localx , localy ;
                 localx = localMouse.h ;
                 localy = localMouse.v ;
                 int localx , localy ;
                 localx = localMouse.h ;
                 localy = localMouse.v ;
@@ -505,7 +510,8 @@ pascal OSErr wxMacWindowDragTrackingHandler(DragTrackingMessage theMessage, Wind
                                 x = y = 0 ;
                                 win->MacWindowToRootWindow( &x , &y ) ;
                                 RgnHandle hiliteRgn = NewRgn() ;
                                 x = y = 0 ;
                                 win->MacWindowToRootWindow( &x , &y ) ;
                                 RgnHandle hiliteRgn = NewRgn() ;
-                                SetRectRgn( hiliteRgn , x , y , x+win->GetSize().x ,y+win->GetSize().y) ;
+                                Rect r = { y , x , y+win->GetSize().y , x+win->GetSize().x } ;
+                                RectRgn( hiliteRgn , &r ) ;
                                 ShowDragHilite(theDrag, hiliteRgn, true);
                                 DisposeRgn( hiliteRgn ) ;
                             }
                                 ShowDragHilite(theDrag, hiliteRgn, true);
                                 DisposeRgn( hiliteRgn ) ;
                             }
@@ -596,7 +602,7 @@ pascal OSErr wxMacWindowDragReceiveHandler(WindowPtr theWindow,
         if ( trackingGlobals->m_currentTarget->OnDrop( localx , localy ) )
         {
             KeyMap keymap;
         if ( trackingGlobals->m_currentTarget->OnDrop( localx , localy ) )
         {
             KeyMap keymap;
-            GetKeys((BigEndianLong*)&keymap);
+            GetKeys(keymap);
             bool optionDown = keymap[1] & 4;
             wxDragResult result = optionDown ? wxDragCopy : wxDragMove;
             trackingGlobals->m_currentTarget->OnData( localx , localy , result ) ;
             bool optionDown = keymap[1] & 4;
             wxDragResult result = optionDown ? wxDragCopy : wxDragMove;
             trackingGlobals->m_currentTarget->OnData( localx , localy , result ) ;