diff --git a/include/wx/gtk/notebook.h b/include/wx/gtk/notebook.h index 5d6abe9932..ec9ce37371 100644 --- a/include/wx/gtk/notebook.h +++ b/include/wx/gtk/notebook.h @@ -122,12 +122,15 @@ public: // selection internally instead of querying the notebook for it int m_selection; + // flag set to TRUE while we're inside "switch_page" callback + bool m_inSwitchPage; + protected: // remove one page from the notebook but do not destroy it virtual wxNotebookPage *DoRemovePage(int nPage); private: - + // the padding set by SetPadding() int m_padding; DECLARE_DYNAMIC_CLASS(wxNotebook) diff --git a/include/wx/gtk1/notebook.h b/include/wx/gtk1/notebook.h index 5d6abe9932..ec9ce37371 100644 --- a/include/wx/gtk1/notebook.h +++ b/include/wx/gtk1/notebook.h @@ -122,12 +122,15 @@ public: // selection internally instead of querying the notebook for it int m_selection; + // flag set to TRUE while we're inside "switch_page" callback + bool m_inSwitchPage; + protected: // remove one page from the notebook but do not destroy it virtual wxNotebookPage *DoRemovePage(int nPage); private: - + // the padding set by SetPadding() int m_padding; DECLARE_DYNAMIC_CLASS(wxNotebook) diff --git a/src/gtk/notebook.cpp b/src/gtk/notebook.cpp index fe5e541720..4439cbae46 100644 --- a/src/gtk/notebook.cpp +++ b/src/gtk/notebook.cpp @@ -86,14 +86,12 @@ static void gtk_notebook_page_change_callback(GtkNotebook *WXUNUSED(widget), gint page, wxNotebook *notebook ) { - static bool s_inPageChange = FALSE; - // are you trying to call SetSelection() from a notebook event handler? // you shouldn't! - wxCHECK_RET( !s_inPageChange, + wxCHECK_RET( !notebook->m_inSwitchPage, _T("gtk_notebook_page_change_callback reentered") ); - s_inPageChange = TRUE; + notebook->m_inSwitchPage = TRUE; if (g_isIdle) wxapp_install_idle_handler(); @@ -123,7 +121,7 @@ static void gtk_notebook_page_change_callback(GtkNotebook *WXUNUSED(widget), notebook->GetEventHandler()->ProcessEvent( eventChanged ); } - s_inPageChange = FALSE; + notebook->m_inSwitchPage = FALSE; } //----------------------------------------------------------------------------- @@ -236,6 +234,8 @@ END_EVENT_TABLE() void wxNotebook::Init() { m_padding = 0; + m_inSwitchPage = FALSE; + m_imageList = (wxImageList *) NULL; m_pagesData.DeleteContents( TRUE ); m_selection = -1; diff --git a/src/gtk1/notebook.cpp b/src/gtk1/notebook.cpp index fe5e541720..4439cbae46 100644 --- a/src/gtk1/notebook.cpp +++ b/src/gtk1/notebook.cpp @@ -86,14 +86,12 @@ static void gtk_notebook_page_change_callback(GtkNotebook *WXUNUSED(widget), gint page, wxNotebook *notebook ) { - static bool s_inPageChange = FALSE; - // are you trying to call SetSelection() from a notebook event handler? // you shouldn't! - wxCHECK_RET( !s_inPageChange, + wxCHECK_RET( !notebook->m_inSwitchPage, _T("gtk_notebook_page_change_callback reentered") ); - s_inPageChange = TRUE; + notebook->m_inSwitchPage = TRUE; if (g_isIdle) wxapp_install_idle_handler(); @@ -123,7 +121,7 @@ static void gtk_notebook_page_change_callback(GtkNotebook *WXUNUSED(widget), notebook->GetEventHandler()->ProcessEvent( eventChanged ); } - s_inPageChange = FALSE; + notebook->m_inSwitchPage = FALSE; } //----------------------------------------------------------------------------- @@ -236,6 +234,8 @@ END_EVENT_TABLE() void wxNotebook::Init() { m_padding = 0; + m_inSwitchPage = FALSE; + m_imageList = (wxImageList *) NULL; m_pagesData.DeleteContents( TRUE ); m_selection = -1;