Applied wxUniv toolbar fix

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18536 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2003-01-03 12:09:52 +00:00
parent d1ab3c23cc
commit 0f5edc6dbf
3 changed files with 39 additions and 1 deletions

View File

@@ -65,7 +65,7 @@ public:
virtual int GetMinHeight() const; virtual int GetMinHeight() const;
// sends wxSizeEvent to itself (used after attaching xxxBar) // sends wxSizeEvent to itself (used after attaching xxxBar)
void SendSizeEvent(); virtual void SendSizeEvent();
protected: protected:
void OnSize(wxSizeEvent& event); void OnSize(wxSizeEvent& event);

View File

@@ -98,6 +98,9 @@ protected:
long numArg = -1, long numArg = -1,
const wxString& strArg = wxEmptyString); const wxString& strArg = wxEmptyString);
virtual wxSize DoGetBestClientSize() const; virtual wxSize DoGetBestClientSize() const;
virtual void DoSetSize(int x, int y,
int width, int height,
int sizeFlags = wxSIZE_AUTO);
virtual void DoDraw(wxControlRenderer *renderer); virtual void DoDraw(wxControlRenderer *renderer);
// get the bounding rect for the given tool // get the bounding rect for the given tool

View File

@@ -156,6 +156,8 @@ bool wxToolBar::Create(wxWindow *parent,
wxToolBar::~wxToolBar() wxToolBar::~wxToolBar()
{ {
// Make sure the toolbar is removed from the parent.
SetSize(0,0);
} }
void wxToolBar::SetMargins(int x, int y) void wxToolBar::SetMargins(int x, int y)
@@ -423,6 +425,39 @@ wxSize wxToolBar::DoGetBestClientSize() const
return wxSize(m_maxWidth, m_maxHeight); 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 // wxToolBar drawing
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------