Applied patch [ 651640 ] Toolbar sizing fix
This patch fixes the problem discussed on wx-dev mailing list. (Message title "wxUniversal: How is the parent notified when a child changes its size") In short: - This patch makes sure the toolbar notifies the parent of any size change, this will give the parent the opportunity to resize the frame client size and to make sure the toolbar is in the right place. Hans Van Leemputten git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18181 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -156,6 +156,8 @@ bool wxToolBar::Create(wxWindow *parent,
|
||||
|
||||
wxToolBar::~wxToolBar()
|
||||
{
|
||||
// Make sure the toolbar is removed from the parent.
|
||||
SetSize(0,0);
|
||||
}
|
||||
|
||||
void wxToolBar::SetMargins(int x, int y)
|
||||
@@ -423,6 +425,39 @@ wxSize wxToolBar::DoGetBestClientSize() const
|
||||
return wxSize(m_maxWidth, m_maxHeight);
|
||||
}
|
||||
|
||||
void wxToolBar::DoSetSize(int x, int y, int width, int height, int sizeFlags)
|
||||
{
|
||||
int old_width, old_height;
|
||||
GetSize(&old_width, &old_height);
|
||||
|
||||
wxToolBarBase::DoSetSize(x, y, width, height, sizeFlags);
|
||||
|
||||
// Correct width and height if needed.
|
||||
if ( width == -1 || height == -1 )
|
||||
{
|
||||
int tmp_width, tmp_height;
|
||||
GetSize(&tmp_width, &tmp_height);
|
||||
|
||||
if ( width == -1 )
|
||||
width = tmp_width;
|
||||
if ( height == -1 )
|
||||
height = tmp_height;
|
||||
}
|
||||
|
||||
// We must refresh the frame size when the toolbar changes size
|
||||
// otherwise the toolbar can be shown incorrectly
|
||||
if ( old_width != width || old_height != height )
|
||||
{
|
||||
// But before we send the size event check it
|
||||
// we have a frame that is not being deleted.
|
||||
wxFrame *frame = wxDynamicCast(GetParent(), wxFrame);
|
||||
if ( frame && !frame->IsBeingDeleted() )
|
||||
{
|
||||
frame->SendSizeEvent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxToolBar drawing
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user