]> git.saurik.com Git - wxWidgets.git/commitdiff
Applied #9076 (scrolling bars grow box fix)
authorJulian Smart <julian@anthemion.co.uk>
Mon, 28 Sep 2009 07:06:14 +0000 (07:06 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Mon, 28 Sep 2009 07:06:14 +0000 (07:06 +0000)
By lillo

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62179 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/osx/window.h
src/osx/window_osx.cpp

index 6614febe9ae048db830c67ca8b5093f5b5a47d52..7afe50d61a3cc9a6c28a32e50f69a78ae714c4b3 100644 (file)
@@ -17,6 +17,7 @@
 
 class WXDLLIMPEXP_FWD_CORE wxButton;
 class WXDLLIMPEXP_FWD_CORE wxScrollBar;
+class WXDLLIMPEXP_FWD_CORE wxPanel;
 class WXDLLIMPEXP_FWD_CORE wxNonOwnedWindow;
 
 #if wxOSX_USE_CARBON
@@ -275,6 +276,7 @@ protected:
     wxScrollBar*        m_vScrollBar ;
     bool                m_hScrollBarAlwaysShown;
     bool                m_vScrollBarAlwaysShown;
+    wxPanel*            m_growBox ;
     wxString            m_label ;
 
     // set to true if we do a sharp clip at the content area of this window
index f385c03f5b0d1f26f2fae8732e027d6ba2b7b77d..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
 }
 
@@ -1319,6 +1322,7 @@ void  wxWindowMac::MacPaintGrowBox()
 #if wxUSE_SCROLLBAR
     if ( MacHasScrollBarCorner() )
     {
+#if 0
         CGContextRef cgContext = (CGContextRef) MacGetCGContextRef() ;
         wxASSERT( cgContext ) ;
 
@@ -1344,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
 }
 
@@ -1411,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 ) ;
 }
@@ -1497,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;
@@ -1888,6 +1906,8 @@ void wxWindowMac::MacPaintChildrenBorders()
             continue;
         if (child == m_hScrollBar)
             continue;
+         if (child == m_growBox)
+             continue;
 #endif
         if (child->IsTopLevel())
             continue;
@@ -2021,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
@@ -2033,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
      );
 
@@ -2065,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
 }