X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/836dded82b6493c406e149f2a339b2d36a472f5c..8b4457965a0c0d0ef828dbf7cca3d2f947083054:/src/generic/tabg.cpp?ds=inline diff --git a/src/generic/tabg.cpp b/src/generic/tabg.cpp index 8ec1549f2b..249395811a 100644 --- a/src/generic/tabg.cpp +++ b/src/generic/tabg.cpp @@ -9,10 +9,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "tabg.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -36,7 +32,7 @@ #include "wx/tab.h" #include "wx/listimpl.cpp" -WX_DEFINE_LIST(wxTabLayerList); +WX_DEFINE_LIST(wxTabLayerList) // not defined: use old, square tab implementation (fills in tabs) // defined: use new, rounded tab implementation (doesn't colour in tabs) @@ -1029,6 +1025,10 @@ void wxTabView::SetBackgroundColour(const wxColour& col) 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) { if ( sel==m_tabSelection ) @@ -1036,6 +1036,7 @@ void wxTabView::SetTabSelection(int sel, bool activateTool) int oldSel = m_tabSelection; wxTabControl *control = FindTabControlForId(sel); + if (sel == 0) sel=control->GetId(); wxTabControl *oldControl = FindTabControlForId(m_tabSelection); if (!OnTabPreActivate(sel, oldSel)) @@ -1062,6 +1063,8 @@ void wxTabView::SetTabSelection(int sel, bool activateTool) } // 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 { wxTabLayerList::compatibility_iterator node1 = m_layers.GetFirst(); @@ -1072,7 +1075,7 @@ wxTabControl *wxTabView::FindTabControlForId(int id) const while (node2) { wxTabControl *control = (wxTabControl *)node2->GetData(); - if (control->GetId() == id) + if (control->GetId() == id || id == 0) return control; node2 = node2->GetNext(); }