]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/window_osx.cpp
Fix harmless unused parameters warnings.
[wxWidgets.git] / src / osx / window_osx.cpp
index fe3f3a18bf04befcb32db6abb0e69d7da3b83e59..3d355fde51783d2863fb7fc162ec5e8e410ec07b 100644 (file)
@@ -126,6 +126,7 @@ void wxWindowMac::Init()
     m_vScrollBar = NULL ;
     m_hScrollBarAlwaysShown = false;
     m_vScrollBarAlwaysShown = false;
+    m_growBox = NULL ;
 
     m_macIsUserPane = true;
     m_clipChildren = false ;
@@ -264,6 +265,8 @@ void wxWindowMac::MacChildAdded()
         m_vScrollBar->Raise() ;
     if ( m_hScrollBar )
         m_hScrollBar->Raise() ;
+    if ( m_growBox )
+        m_growBox->Raise() ;
 #endif
 }
 
@@ -1190,9 +1193,30 @@ wxWindow *wxGetActiveWindow()
 }
 
 // Coordinates relative to the window
-void wxWindowMac::WarpPointer(int WXUNUSED(x_pos), int WXUNUSED(y_pos))
-{
-    // We really don't move the mouse programmatically under Mac.
+void wxWindowMac::WarpPointer(int x_pos, int y_pos)
+{
+    int x = x_pos;
+    int y = y_pos;
+    DoClientToScreen(&x, &y);
+    CGPoint cgpoint = CGPointMake( x, y );
+    CGWarpMouseCursorPosition( cgpoint );
+
+    // At least GTK sends a mouse moved event after WarpMouse
+    wxMouseEvent event(wxEVT_MOTION);
+    event.m_x = x_pos;
+    event.m_y = y_pos;
+    wxMouseState mState = ::wxGetMouseState();
+
+    event.m_altDown = mState.AltDown();
+    event.m_controlDown = mState.ControlDown();
+    event.m_leftDown = mState.LeftDown();
+    event.m_middleDown = mState.MiddleDown();
+    event.m_rightDown = mState.RightDown();
+    event.m_metaDown = mState.MetaDown();
+    event.m_shiftDown = mState.ShiftDown();
+    event.SetId(GetId());
+    event.SetEventObject(this);
+    GetEventHandler()->ProcessEvent(event);
 }
 
 int wxWindowMac::GetScrollPos(int orient) const
@@ -1298,6 +1322,7 @@ void  wxWindowMac::MacPaintGrowBox()
 #if wxUSE_SCROLLBAR
     if ( MacHasScrollBarCorner() )
     {
+#if 0
         CGContextRef cgContext = (CGContextRef) MacGetCGContextRef() ;
         wxASSERT( cgContext ) ;
 
@@ -1323,7 +1348,17 @@ void  wxWindowMac::MacPaintGrowBox()
         }
         CGContextFillRect( cgContext, cgrect );
         CGContextRestoreGState( cgContext );
+#else
+        if (m_growBox)
+        {
+             if ( m_backgroundColour.Ok() )
+                 m_growBox->SetBackgroundColour(m_backgroundColour);
+             else
+                 m_growBox->SetBackgroundColour(*wxWHITE);
+        }
+#endif
     }
+
 #endif
 }
 
@@ -1390,6 +1425,8 @@ void wxWindowMac::RemoveChild( wxWindowBase *child )
         m_hScrollBar = NULL ;
     if ( child == m_vScrollBar )
         m_vScrollBar = NULL ;
+    if ( child == m_growBox )
+        m_growBox = NULL ;
 #endif
     wxWindowBase::RemoveChild( child ) ;
 }
@@ -1476,6 +1513,8 @@ void wxWindowMac::ScrollWindow(int dx, int dy, const wxRect *rect)
             continue;
         if (child == m_hScrollBar)
             continue;
+        if (child == m_growBox)
+            continue;
 #endif
         if (child->IsTopLevel())
             continue;
@@ -1867,6 +1906,8 @@ void wxWindowMac::MacPaintChildrenBorders()
             continue;
         if (child == m_hScrollBar)
             continue;
+         if (child == m_growBox)
+             continue;
 #endif
         if (child->IsTopLevel())
             continue;
@@ -2000,6 +2041,10 @@ void wxWindowMac::MacCreateScrollBars( long style )
             m_hScrollBar = new wxScrollBar((wxWindow*)this, wxID_ANY, hPoint, hSize , wxHORIZONTAL);
             m_hScrollBar->SetMinSize( wxDefaultSize );
         }
+
+        wxPoint gPoint(width - scrlsize, height - scrlsize);
+        wxSize gSize(scrlsize, scrlsize);
+        m_growBox = new wxPanel((wxWindow *)this, wxID_ANY, gPoint, gSize, 0);
     }
 
     // because the create does not take into account the client area origin
@@ -2012,7 +2057,7 @@ bool wxWindowMac::MacIsChildOfClientArea( const wxWindow* child ) const
 {
     bool result = ((child == NULL)
 #if wxUSE_SCROLLBAR
-     || ((child != m_hScrollBar) && (child != m_vScrollBar))
+      || ((child != m_hScrollBar) && (child != m_vScrollBar) && (child != m_growBox))
 #endif
      );
 
@@ -2044,6 +2089,20 @@ void wxWindowMac::MacRepositionScrollBars()
         m_vScrollBar->SetSize( vPoint.x , vPoint.y, vSize.x, vSize.y , wxSIZE_ALLOW_MINUS_ONE );
     if ( m_hScrollBar )
         m_hScrollBar->SetSize( hPoint.x , hPoint.y, hSize.x, hSize.y, wxSIZE_ALLOW_MINUS_ONE );
+    if ( m_growBox )
+    {
+        if ( MacHasScrollBarCorner() )
+        {
+            m_growBox->SetSize( width - scrlsize, height - scrlsize, wxDefaultCoord, wxDefaultCoord, wxSIZE_USE_EXISTING );
+            if ( !m_growBox->IsShown() )
+                m_growBox->Show();
+        }
+        else
+        {
+            if ( m_growBox->IsShown() )
+                m_growBox->Hide();
+        }
+    }
 #endif
 }
 
@@ -2229,6 +2288,8 @@ bool wxWindowMac::Reparent(wxWindowBase *newParentBase)
 
     m_peer->RemoveFromParent();
     m_peer->Embed( GetParent()->GetPeer() );
+
+    MacChildAdded();
     return true;
 }