void wxToolBar::UpdateSize()
{
- // the toolbar size changed
- ::SendMessage(GetHwnd(), TB_AUTOSIZE, 0, 0);
+ // In case Realize is called after the initial display (IOW the programmer
+ // may have rebuilt the toolbar) give the frame the option of resizing the
+ // 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.
- // we must also refresh the frame after the toolbar size (possibly) changed
wxFrame *frame = wxDynamicCast(GetParent(), wxFrame);
- if ( frame )
+ if ( frame && frame->GetToolBar() == this )
+ {
+ // the toolbar size changed
+ ::SendMessage(GetHwnd(), TB_AUTOSIZE, 0, 0);
frame->SendSizeEvent();
+ }
}
// ----------------------------------------------------------------------------