X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/836dded82b6493c406e149f2a339b2d36a472f5c..40a33c46e31226cab8dff02b0a078214f60666ac:/src/generic/tabg.cpp diff --git a/src/generic/tabg.cpp b/src/generic/tabg.cpp index 8ec1549f2b..cec7c1d37a 100644 --- a/src/generic/tabg.cpp +++ b/src/generic/tabg.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: tabg.cpp +// Name: src/generic/tabg.cpp // Purpose: Generic tabbed dialogs // Author: Julian Smart // Modified by: @@ -9,15 +9,11 @@ // 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" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif #if wxUSE_TAB_DIALOG @@ -26,17 +22,17 @@ #include "wx/settings.h" #include "wx/intl.h" #include "wx/dcclient.h" + #include "wx/math.h" #endif #include #include #include -#include "wx/math.h" #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(); }