Don't resize the parent from wxToolBar::SetSize() in wxUniv

This could result in infinite recursion in wxX11, as the test for the
new size being different from the old one which was supposed to stop the
recursion, failed there in case the new size was 0: as wxX11 can't use 0
size for the window, the actual size was always different and so we kept
sending size events to the parent, which kept resizing the toolbar etc.

It could be argued that there is a bug in wxX11 and that GetSize() must
return the same value as was passed to SetSize(), even if it was 0, and
this might even be correct, in theory, but it doesn't seem worth to do
it just to accommodate this weird use case, especially because resizing
the parent from the child shouldn't be necessary in the first place and
none of wxToolBar implementations in the other ports does it.

So just remove this code completely.

Closes #18554.
This commit is contained in:
Vadim Zeitlin
2019-11-06 15:06:36 +01:00
parent 23f7614626
commit cdc588e4eb
2 changed files with 0 additions and 30 deletions

View File

@@ -563,33 +563,6 @@ 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 == wxDefaultCoord || height == wxDefaultCoord )
{
int tmp_width, tmp_height;
GetSize(&tmp_width, &tmp_height);
if ( width == wxDefaultCoord )
width = tmp_width;
if ( height == wxDefaultCoord )
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 )
{
SendSizeEventToParent();
}
}
// ----------------------------------------------------------------------------
// wxToolBar drawing
// ----------------------------------------------------------------------------