X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5c68088294f06c857b2226100fd14956f03abc01..997e8e2979b126b15993a79a37c8ae0c8dff664e:/src/univ/toolbar.cpp diff --git a/src/univ/toolbar.cpp b/src/univ/toolbar.cpp index 41dc5d2281..7f81f0daa8 100644 --- a/src/univ/toolbar.cpp +++ b/src/univ/toolbar.cpp @@ -587,13 +587,7 @@ void wxToolBar::DoSetSize(int x, int y, int width, int height, int sizeFlags) // 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(); - } + SendSizeEventToParent(); } } @@ -697,26 +691,26 @@ void wxToolBar::DoDraw(wxControlRenderer *renderer) { label = tool->GetLabel(); bitmap = tool->GetBitmap(); + + if ( !bitmap.IsOk() ) + { + // it's better not to draw anything than to assert inside + // drawing code as this results in an almost guaranteed crash + // as we're likely to be called by a paint event handler and so + // the assert is going to be triggered again and again and ... + continue; + } } //else: leave both the label and the bitmap invalid to draw a separator if ( !tool->IsControl() ) { - int tbStyle = 0; - if(HasFlag(wxTB_TEXT)) - { + int tbStyle = HasFlag(wxTB_VERTICAL) ? wxTB_VERTICAL : wxTB_HORIZONTAL; + if ( HasFlag(wxTB_TEXT) ) tbStyle |= wxTB_TEXT; - } - if(HasFlag(wxTB_VERTICAL)) - { - tbStyle |= wxTB_VERTICAL; - } - else - { - tbStyle |= wxTB_HORIZONTAL; - } - rend->DrawToolBarButton(dc, label, bitmap, rectTool, flags, tool->GetStyle(), tbStyle); + rend->DrawToolBarButton(dc, label, bitmap, rectTool, flags, + tool->GetStyle(), tbStyle); } else // control {