]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/window.cpp
added wxShutdown (patch 547443)
[wxWidgets.git] / src / mac / carbon / window.cpp
index 8cd9a947a13bc43ef280ce29d89431aa8d81745d..e6b1ba5c7c6113f7002a79c448e23989ac9fb78c 100644 (file)
@@ -1072,6 +1072,16 @@ void wxWindowMac::MacPaintBorders( int left , int top )
     }
 }
 
+void wxWindowMac::RemoveChild( wxWindowBase *child )
+{
+    if ( child == m_hScrollBar )
+        m_hScrollBar = NULL ;
+    if ( child == m_vScrollBar )
+        m_vScrollBar = NULL ;
+      
+    wxWindowBase::RemoveChild( child ) ;
+}
+
 // New function that will replace some of the above.
 void wxWindowMac::SetScrollbar(int orient, int pos, int thumbVisible,
     int range, bool refresh)
@@ -1376,6 +1386,7 @@ bool wxWindowMac::MacGetWindowFromPoint( const wxPoint &screenpoint , wxWindowMa
 }
 
 extern int wxBusyCursorCount ;
+static wxWindow *gs_lastWhich = NULL;
 
 bool wxWindowMac::MacDispatchMouseEvent(wxMouseEvent& event)
 {
@@ -1407,6 +1418,7 @@ bool wxWindowMac::MacDispatchMouseEvent(wxMouseEvent& event)
 
     event.m_x = x ;
     event.m_y = y ;
+    event.SetEventObject( this ) ;
     
     if ( wxBusyCursorCount == 0 )
     {
@@ -1427,6 +1439,23 @@ bool wxWindowMac::MacDispatchMouseEvent(wxMouseEvent& event)
         wxToolTip::RelayEvent( this , event);
 #endif // wxUSE_TOOLTIPS
 
+    if (gs_lastWhich != this)
+    {
+        gs_lastWhich = this;
+        
+        // Double clicks must always occur on the same window
+        if (event.GetEventType() == wxEVT_LEFT_DCLICK)
+            event.SetEventType( wxEVT_LEFT_DOWN );
+        if (event.GetEventType() == wxEVT_RIGHT_DCLICK)
+            event.SetEventType( wxEVT_RIGHT_DOWN );
+            
+        // Same for mouse up events
+        if (event.GetEventType() == wxEVT_LEFT_UP)
+            return TRUE;
+        if (event.GetEventType() == wxEVT_RIGHT_UP)
+            return TRUE;
+    }
+
     GetEventHandler()->ProcessEvent( event ) ;
 
     return TRUE;
@@ -1447,10 +1476,12 @@ void wxWindowMac::Update()
     if ( win )
     {
       win->MacUpdate( 0 ) ;
+#if TARGET_API_MAC_CARBON
         if ( QDIsPortBuffered( GetWindowPort( (WindowRef) win->MacGetWindowRef() ) ) )
         {
                 QDFlushPortBuffer( GetWindowPort( (WindowRef) win->MacGetWindowRef() ) , NULL ) ;
         }
+#endif
       }
 }