}
Realize();
- UpdateSize();
}
wxToolBar::~wxToolBar()
#ifndef __WXWINCE__
int remapValue = (-1);
- if (wxSystemOptions::HasOption(wxT("msw.remap")))
- remapValue = wxSystemOptions::GetOptionInt(wxT("msw.remap"));
+ const wxChar *remapOptionStr = wxT("msw.remap");
+ if (wxSystemOptions::HasOption( remapOptionStr ))
+ remapValue = wxSystemOptions::GetOptionInt( remapOptionStr );
doTransparent = (remapValue == 2);
if (!doTransparent)
wx_truncate_cast(wxCoord, nTools),
totalBitmapHeight = m_defaultHeight;
- // Create a bitmap and copy all the tool bitmaps to it
+ // Create a bitmap and copy all the tool bitmaps into it
wxMemoryDC dcAllButtons;
wxBitmap bitmap(totalBitmapWidth, totalBitmapHeight);
dcAllButtons.SelectObject(bitmap);
InvalidateBestSize();
SetBestFittingSize();
+ UpdateSize();
return true;
}
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();
+ }
}
// ----------------------------------------------------------------------------