+ wxCHECK_MSG( m_widget != NULL, FALSE, _T("invalid notebook") );
+
+ wxCHECK_MSG( win->GetParent() == this, FALSE,
+ _T("Can't add a page whose parent is not the notebook!") );
+
+ /* don't receive switch page during addition */
+ gtk_signal_disconnect_by_func( GTK_OBJECT(m_widget),
+ GTK_SIGNAL_FUNC(gtk_notebook_page_change_callback), (gpointer) this );
+
+ GtkNotebook *notebook = GTK_NOTEBOOK(m_widget);
+
+ wxNotebookPage *page = new wxNotebookPage();
+
+ if (position < 0)
+ m_pages.Append( page );
+ else
+ m_pages.Insert( m_pages.Nth( position ), page );
+
+ page->m_client = win;
+
+ page->m_box = gtk_hbox_new( FALSE, 0 );
+ gtk_container_border_width( GTK_CONTAINER(page->m_box), 2 );
+
+ 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 );
+
+ /* set the label image */
+ page->m_image = imageId;
+
+ if (imageId != -1)
+ {
+ wxASSERT( m_imageList != NULL );