]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/winuniv.cpp
fixed a (harmless) BoundsChecker warning
[wxWidgets.git] / src / univ / winuniv.cpp
index 7ad89e6f76c0bcc46b0c315e3af76dcbd6a3c1ea..be8a2ba4e3a23759b05a3eb0ac38d1b886558de7 100644 (file)
@@ -108,6 +108,9 @@ void wxWindow::Init()
     m_isCurrent = FALSE;
 
     m_renderer = wxTheme::Get()->GetRenderer();
+    
+    m_oldSize.x = -1;
+    m_oldSize.y = -1;
 }
 
 bool wxWindow::Create(wxWindow *parent,
@@ -129,9 +132,15 @@ bool wxWindow::Create(wxWindow *parent,
     // if we should always have the scrollbar, do show it
     if ( GetWindowStyle() & wxALWAYS_SHOW_SB )
     {
+#if wxUSE_TWO_WINDOWS
+        SetInsertIntoMain( TRUE );
+#endif
         m_scrollbarVert = new wxScrollBar(this, -1,
                                           wxDefaultPosition, wxDefaultSize,
                                           wxSB_VERTICAL);
+#if wxUSE_TWO_WINDOWS
+        SetInsertIntoMain( FALSE );
+#endif
 
         // and position it
         PositionScrollbars();
@@ -180,7 +189,7 @@ void wxWindow::OnErase(wxEraseEvent& event)
 
         return;
     }
-
+    
     DoDrawBackground(*event.GetDC());
 
     // if we have both scrollbars, we also have a square in the corner between
@@ -446,12 +455,114 @@ int wxWindow::GetStateFlags() const
 
 void wxWindow::OnSize(wxSizeEvent& event)
 {
+    event.Skip();
+    
     if ( m_scrollbarVert || m_scrollbarHorz )
     {
         PositionScrollbars();
     }
-
-    event.Skip();
+    
+#if 0   // ndef __WXMSW__
+    // Refresh the area (strip) previously occupied by the border
+    
+    if (HasFlag( wxNO_FULL_REPAINT_ON_RESIZE ) && IsShown())
+    {
+        // This code assumes that wxSizeEvent.GetSize() returns
+        // the area of the entire window, not just the client
+        // area.
+        wxSize newSize = event.GetSize();
+        
+        if (m_oldSize.x == -1 && m_oldSize.y == -1)
+        {
+            m_oldSize = newSize;
+            return;
+        }
+        
+        if (HasFlag( wxSIMPLE_BORDER ))
+        {
+            if (newSize.y > m_oldSize.y)
+            {
+                wxRect rect;
+                rect.x = 0;
+                rect.width = m_oldSize.x;
+                rect.y = m_oldSize.y-2;
+                rect.height = 1;
+                Refresh( TRUE, &rect );
+            }
+            else if (newSize.y < m_oldSize.y)
+            {
+                wxRect rect;
+                rect.y = newSize.y;
+                rect.x = 0;
+                rect.height = 1;
+                rect.width = newSize.x;
+                wxWindowNative::Refresh( TRUE, &rect );
+            }
+            
+            if (newSize.x > m_oldSize.x)
+            {
+                wxRect rect;
+                rect.y = 0;
+                rect.height = m_oldSize.y;
+                rect.x = m_oldSize.x-2;
+                rect.width = 1;
+                Refresh( TRUE, &rect );
+            }
+            else if (newSize.x < m_oldSize.x)
+            {
+                wxRect rect;
+                rect.x = newSize.x;
+                rect.y = 0;
+                rect.width = 1;
+                rect.height = newSize.y;
+                wxWindowNative::Refresh( TRUE, &rect );
+            }
+        }
+        else
+        if (HasFlag( wxSUNKEN_BORDER ) || HasFlag( wxRAISED_BORDER ))
+        {
+            if (newSize.y > m_oldSize.y)
+            {
+                wxRect rect;
+                rect.x = 0;
+                rect.width = m_oldSize.x;
+                rect.y = m_oldSize.y-4;
+                rect.height = 2;
+                Refresh( TRUE, &rect );
+            }
+            else if (newSize.y < m_oldSize.y)
+            {
+                wxRect rect;
+                rect.y = newSize.y;
+                rect.x = 0;
+                rect.height = 2;
+                rect.width = newSize.x;
+                wxWindowNative::Refresh( TRUE, &rect );
+            }
+            
+            if (newSize.x > m_oldSize.x)
+            {
+                wxRect rect;
+                rect.y = 0;
+                rect.height = m_oldSize.y;
+                rect.x = m_oldSize.x-4;
+                rect.width = 2;
+                Refresh( TRUE, &rect );
+            }
+            else if (newSize.x < m_oldSize.x)
+            {
+                wxRect rect;
+                rect.x = newSize.x;
+                rect.y = 0;
+                rect.width = 2;
+                rect.height = newSize.y;
+                wxWindowNative::Refresh( TRUE, &rect );
+            }
+        }
+        
+        m_oldSize = newSize;
+    }
+#endif
 }
 
 wxSize wxWindow::DoGetBestSize() const
@@ -476,8 +587,11 @@ wxPoint wxWindow::GetClientAreaOrigin() const
 {
     wxPoint pt = wxWindowBase::GetClientAreaOrigin();
 
+#if wxUSE_TWO_WINDOWS
+#else
     if ( m_renderer )
         pt += m_renderer->GetBorderDimensions(GetBorder()).GetPosition();
+#endif
 
     return pt;
 }
@@ -666,10 +780,16 @@ void wxWindow::SetScrollbar(int orient,
         if ( !scrollbar )
         {
             // create it
+#if wxUSE_TWO_WINDOWS
+            SetInsertIntoMain( TRUE );
+#endif
             scrollbar = new wxScrollBar(this, -1,
                                         wxDefaultPosition, wxDefaultSize,
                                         orient & wxVERTICAL ? wxSB_VERTICAL
                                                             : wxSB_HORIZONTAL);
+#if wxUSE_TWO_WINDOWS
+            SetInsertIntoMain( FALSE );
+#endif
             if ( orient & wxVERTICAL )
                 m_scrollbarVert = scrollbar;
             else