fix gpf in mdi sample with motif when child is closed

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35316 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Chris Elliott
2005-08-25 21:58:22 +00:00
parent 3147bb585a
commit 966b84b914

View File

@@ -1029,6 +1029,10 @@ void wxTabView::SetBackgroundColour(const wxColour& col)
m_backgroundBrush = wxTheBrushList->FindOrCreateBrush(col, wxSOLID); m_backgroundBrush = wxTheBrushList->FindOrCreateBrush(col, wxSOLID);
} }
// this may be called with sel = zero (which doesn't match any page)
// when wxMotif deletes a page
// so return the first tab...
void wxTabView::SetTabSelection(int sel, bool activateTool) void wxTabView::SetTabSelection(int sel, bool activateTool)
{ {
if ( sel==m_tabSelection ) if ( sel==m_tabSelection )
@@ -1036,6 +1040,7 @@ void wxTabView::SetTabSelection(int sel, bool activateTool)
int oldSel = m_tabSelection; int oldSel = m_tabSelection;
wxTabControl *control = FindTabControlForId(sel); wxTabControl *control = FindTabControlForId(sel);
if (sel == 0) sel=control->GetId();
wxTabControl *oldControl = FindTabControlForId(m_tabSelection); wxTabControl *oldControl = FindTabControlForId(m_tabSelection);
if (!OnTabPreActivate(sel, oldSel)) if (!OnTabPreActivate(sel, oldSel))
@@ -1062,6 +1067,8 @@ void wxTabView::SetTabSelection(int sel, bool activateTool)
} }
// Find tab control for id // Find tab control for id
// this may be called with zero (which doesn't match any page)
// so return the first control...
wxTabControl *wxTabView::FindTabControlForId(int id) const wxTabControl *wxTabView::FindTabControlForId(int id) const
{ {
wxTabLayerList::compatibility_iterator node1 = m_layers.GetFirst(); wxTabLayerList::compatibility_iterator node1 = m_layers.GetFirst();
@@ -1072,7 +1079,7 @@ wxTabControl *wxTabView::FindTabControlForId(int id) const
while (node2) while (node2)
{ {
wxTabControl *control = (wxTabControl *)node2->GetData(); wxTabControl *control = (wxTabControl *)node2->GetData();
if (control->GetId() == id) if (control->GetId() == id || id == 0)
return control; return control;
node2 = node2->GetNext(); node2 = node2->GetNext();
} }