crash for frames without children corrected

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1906 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1999-03-12 15:21:14 +00:00
parent 5f12ae5cd7
commit 0138c2de79
2 changed files with 60 additions and 66 deletions

View File

@@ -483,34 +483,33 @@ void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
} }
else else
{ {
/* no child: go out ! */ // do we have exactly one child?
if (!GetChildren().First()) return;
/* do we have exactly one child? */
wxWindow *child = (wxWindow *)NULL; wxWindow *child = (wxWindow *)NULL;
for ( wxNode *node = GetChildren().First(); node; node = node->Next() ) for ( wxNode *node = GetChildren().First(); node; node = node->Next() )
{ {
wxWindow *win = (wxWindow *)node->Data(); wxWindow *win = (wxWindow *)node->Data();
if (!wxIS_KIND_OF(win,wxFrame) && !wxIS_KIND_OF(win,wxDialog) if ( !wxIS_KIND_OF(win,wxFrame) && !wxIS_KIND_OF(win,wxDialog) )
#if 0 // not in m_children anyway ?
&& (win != m_frameMenuBar) &&
(win != m_frameToolBar) &&
(win != m_frameStatusBar)
#endif
)
{ {
/* it's the second one: do nothing */ if ( child )
if (child) return; {
// it's the second one: do nothing
return;
}
child = win; child = win;
} }
} }
/* yes: set it's size to fill all the frame */ // no children at all?
if ( child )
{
// yes: set it's size to fill all the frame
int client_x, client_y; int client_x, client_y;
GetClientSize( &client_x, &client_y ); GetClientSize( &client_x, &client_y );
child->SetSize( 1, 1, client_x-2, client_y-2 ); child->SetSize( 1, 1, client_x-2, client_y-2 );
} }
} }
}
static void SetInvokingWindow( wxMenu *menu, wxWindow *win ) static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
{ {
@@ -565,24 +564,22 @@ void wxFrame::OnMenuHighlight(wxMenuEvent& event)
{ {
if (GetStatusBar()) if (GetStatusBar())
{ {
if (event.GetMenuId() == -1) // if no help string found, we will clear the status bar text
{ wxString helpString;
SetStatusText("");
} int menuId = event.GetMenuId();
else if ( menuId != -1 )
{ {
wxMenuBar *menuBar = GetMenuBar(); wxMenuBar *menuBar = GetMenuBar();
if (menuBar) if (menuBar)
{ {
int menuId = event.GetMenuId();
wxString helpString;
helpString = menuBar->GetHelpString(menuId); helpString = menuBar->GetHelpString(menuId);
if (helpString != "") }
}
SetStatusText(helpString); SetStatusText(helpString);
} }
} }
}
}
wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name) wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name)
{ {

View File

@@ -483,34 +483,33 @@ void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
} }
else else
{ {
/* no child: go out ! */ // do we have exactly one child?
if (!GetChildren().First()) return;
/* do we have exactly one child? */
wxWindow *child = (wxWindow *)NULL; wxWindow *child = (wxWindow *)NULL;
for ( wxNode *node = GetChildren().First(); node; node = node->Next() ) for ( wxNode *node = GetChildren().First(); node; node = node->Next() )
{ {
wxWindow *win = (wxWindow *)node->Data(); wxWindow *win = (wxWindow *)node->Data();
if (!wxIS_KIND_OF(win,wxFrame) && !wxIS_KIND_OF(win,wxDialog) if ( !wxIS_KIND_OF(win,wxFrame) && !wxIS_KIND_OF(win,wxDialog) )
#if 0 // not in m_children anyway ?
&& (win != m_frameMenuBar) &&
(win != m_frameToolBar) &&
(win != m_frameStatusBar)
#endif
)
{ {
/* it's the second one: do nothing */ if ( child )
if (child) return; {
// it's the second one: do nothing
return;
}
child = win; child = win;
} }
} }
/* yes: set it's size to fill all the frame */ // no children at all?
if ( child )
{
// yes: set it's size to fill all the frame
int client_x, client_y; int client_x, client_y;
GetClientSize( &client_x, &client_y ); GetClientSize( &client_x, &client_y );
child->SetSize( 1, 1, client_x-2, client_y-2 ); child->SetSize( 1, 1, client_x-2, client_y-2 );
} }
} }
}
static void SetInvokingWindow( wxMenu *menu, wxWindow *win ) static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
{ {
@@ -565,24 +564,22 @@ void wxFrame::OnMenuHighlight(wxMenuEvent& event)
{ {
if (GetStatusBar()) if (GetStatusBar())
{ {
if (event.GetMenuId() == -1) // if no help string found, we will clear the status bar text
{ wxString helpString;
SetStatusText("");
} int menuId = event.GetMenuId();
else if ( menuId != -1 )
{ {
wxMenuBar *menuBar = GetMenuBar(); wxMenuBar *menuBar = GetMenuBar();
if (menuBar) if (menuBar)
{ {
int menuId = event.GetMenuId();
wxString helpString;
helpString = menuBar->GetHelpString(menuId); helpString = menuBar->GetHelpString(menuId);
if (helpString != "") }
}
SetStatusText(helpString); SetStatusText(helpString);
} }
} }
}
}
wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name) wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name)
{ {