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:
@@ -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)
|
||||||
{
|
{
|
||||||
|
@@ -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)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user