]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/tabg.cpp
Avoid trouble during initialisation & typo fix (patch #1523304).
[wxWidgets.git] / src / generic / tabg.cpp
index 8ec1549f2bdafdf9b2027a96d3a1e4b69f973b3e..cec7c1d37a0ca280d81fa65622b5d131a06406ec 100644 (file)
@@ -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
     #include "wx/settings.h"
     #include "wx/intl.h"
     #include "wx/dcclient.h"
+    #include "wx/math.h"
 #endif
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
 
-#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();
     }