]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/toolbar.cpp
added Win32 TLS tests
[wxWidgets.git] / src / msw / toolbar.cpp
index 16bd76be16725f674805b32abca48fe80dab53b6..58490dcdc7358230c3e00295298e1b8710fce8ad 100644 (file)
@@ -397,9 +397,7 @@ wxToolBar::~wxToolBar()
 {
     // we must refresh the frame size when the toolbar is deleted but the frame
     // is not - otherwise toolbar leaves a hole in the place it used to occupy
-    wxFrame *frame = wxDynamicCast(GetParent(), wxFrame);
-    if ( frame && !frame->IsBeingDeleted() )
-        frame->SendSizeEvent();
+    SendSizeEventToParent();
 
     if ( m_hBitmap )
         ::DeleteObject((HBITMAP) m_hBitmap);
@@ -581,13 +579,15 @@ bool wxToolBar::DoDeleteTool(size_t pos, wxToolBarToolBase *tool)
         wxToolBarTool *tool2 = (wxToolBarTool*)node->GetData();
         if ( tool2->IsControl() )
         {
+            wxControl * const control = tool2->GetControl();
+
             int x;
-            wxControl *control = tool2->GetControl();
             control->GetPosition(&x, NULL);
             control->Move(x - width, wxDefaultCoord);
 
-            wxStaticText* staticText = tool2->GetStaticText();
-            staticText->Move(x - width, wxDefaultCoord);
+            wxStaticText * const staticText = tool2->GetStaticText();
+            if ( staticText )
+                staticText->Move(x - width, wxDefaultCoord);
         }
     }
 
@@ -1420,11 +1420,7 @@ void wxToolBar::UpdateSize()
     // toolbar to full width again, but only if the parent is a frame and the
     // toolbar is managed by the frame.  Otherwise assume that some other
     // layout mechanism is controlling the toolbar size and leave it alone.
-    wxFrame *frame = wxDynamicCast(GetParent(), wxFrame);
-    if ( frame && frame->GetToolBar() == this )
-    {
-        frame->SendSizeEvent();
-    }
+    SendSizeEventToParent();
 }
 
 // ----------------------------------------------------------------------------
@@ -1863,12 +1859,14 @@ WXLRESULT wxToolBar::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam
 
 #ifndef __WXWINCE__
         case WM_PAINT:
-            if ( HandlePaint(wParam, lParam) )
+            // refreshing the controls in the toolbar inside a composite window
+            // results in an endless stream of WM_PAINT messages -- and seems
+            // to be unnecessary anyhow as everything works just fine without
+            // any special workarounds in this case
+            if ( !IsDoubleBuffered() && HandlePaint(wParam, lParam) )
                 return 0;
-#endif
-
-        default:
             break;
+#endif // __WXWINCE__
     }
 
     return wxControl::MSWWindowProc(nMsg, wParam, lParam);