X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b713f8919c649822292f04bb7095291585d96550..82ec1f703513f5a09edfea7403481c23fe7b4d1e:/src/generic/tabg.cpp diff --git a/src/generic/tabg.cpp b/src/generic/tabg.cpp index 75a10c14d5..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) @@ -527,12 +523,11 @@ wxTabView::wxTabView(long style) m_tabViewRect.x = 300; m_highlightColour = *wxWHITE; m_shadowColour = wxColour(128, 128, 128); - m_backgroundColour = *wxLIGHT_GREY; + m_backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE); m_textColour = *wxBLACK; m_highlightPen = wxWHITE_PEN; m_shadowPen = wxGREY_PEN; - m_backgroundPen = wxLIGHT_GREY_PEN; - m_backgroundBrush = wxLIGHT_GREY_BRUSH; + SetBackgroundColour(m_backgroundColour); m_tabFont = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); m_tabSelectedFont = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); m_window = (wxWindow *) NULL; @@ -1030,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 ) @@ -1037,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)) @@ -1063,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(); @@ -1073,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(); }