X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/587ce561e1deabbfacf0d619fdd6bb3899430720..ccf0b1d76ce28c0880df6d5c4866aaa548e2e56f:/src/gtk1/notebook.cpp?ds=inline diff --git a/src/gtk1/notebook.cpp b/src/gtk1/notebook.cpp index 3de79f8445..6cac1f9135 100644 --- a/src/gtk1/notebook.cpp +++ b/src/gtk1/notebook.cpp @@ -12,6 +12,9 @@ #endif #include "wx/notebook.h" + +#if wxUSE_NOTEBOOK + #include "wx/panel.h" #include "wx/utils.h" #include "wx/imaglist.h" @@ -184,6 +187,7 @@ void wxNotebook::Init() { m_imageList = (wxImageList *) NULL; m_pages.DeleteContents( TRUE ); + m_lastSelection = -1; } wxNotebook::wxNotebook() @@ -216,7 +220,13 @@ bool wxNotebook::Create(wxWindow *parent, wxWindowID id, m_acceptsFocus = TRUE; m_insertCallback = (wxInsertChildFunction)wxInsertChildInNotebook; - PreCreation( parent, id, pos, size, style, name ); + if (!PreCreation( parent, pos, size ) || + !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name )) + { + wxFAIL_MSG( _T("wxNoteBook creation failed") ); + return FALSE; + } + m_widget = gtk_notebook_new(); @@ -251,11 +261,9 @@ int wxNotebook::GetSelection() const GtkNotebook *notebook = GTK_NOTEBOOK(m_widget); - GtkNotebookPage *page = GTK_NOTEBOOK_PAGE( notebook->cur_page ); + if (notebook->cur_page == NULL) return m_lastSelection; - wxCHECK_MSG( page, -1, "no notebook page selected/current" ); - - return g_list_index( pages, (gpointer)page ); + return g_list_index( pages, (gpointer)(notebook->cur_page) ); } int wxNotebook::GetPageCount() const @@ -462,9 +470,14 @@ bool wxNotebook::DeletePage( int page ) wxNotebookPage* nb_page = GetNotebookPage(page); if (!nb_page) return FALSE; + /* GTK sets GtkNotebook.cur_page to NULL before sending + the switvh page event */ + m_lastSelection = GetSelection(); + nb_page->m_client->Destroy(); - m_pages.DeleteObject( nb_page ); + + m_lastSelection = -1; return TRUE; } @@ -508,15 +521,15 @@ bool wxNotebook::InsertPage( int position, wxWindow* win, const wxString& text, page->m_box = gtk_hbox_new( FALSE, 0 ); gtk_container_border_width( GTK_CONTAINER(page->m_box), 2 ); + gtk_signal_connect( GTK_OBJECT(win->m_widget), "size_allocate", + GTK_SIGNAL_FUNC(gtk_page_size_callback), (gpointer)win ); + if (position < 0) gtk_notebook_append_page( notebook, win->m_widget, page->m_box ); else gtk_notebook_insert_page( notebook, win->m_widget, page->m_box, position ); - page->m_page = GTK_NOTEBOOK_PAGE( g_list_last(notebook->children)->data ); - - gtk_signal_connect( GTK_OBJECT(win->m_widget), "size_allocate", - GTK_SIGNAL_FUNC(gtk_page_size_callback), (gpointer)win ); + page->m_page = (GtkNotebookPage*) g_list_last(notebook->children)->data; /* set the label image */ page->m_image = imageId; @@ -619,3 +632,4 @@ bool wxNotebook::IsOwnGtkWindow( GdkWindow *window ) IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxNotifyEvent) +#endif \ No newline at end of file