replaced global semaphore in gtk_notebook_page_change_callback() with a per-object one
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17700 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -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)
|
||||
|
@@ -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)
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user