]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/notebook.cpp
wxGTK compilation fixes
[wxWidgets.git] / src / gtk1 / notebook.cpp
index 3de79f8445cf7cc55947f9845942f29f9e97d15b..6102168a49b792ab0f3782b6c561837224f36a6c 100644 (file)
@@ -12,6 +12,9 @@
 #endif
 
 #include "wx/notebook.h"
 #endif
 
 #include "wx/notebook.h"
+
+#if wxUSE_NOTEBOOK
+
 #include "wx/panel.h"
 #include "wx/utils.h"
 #include "wx/imaglist.h"
 #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_imageList = (wxImageList *) NULL;
     m_pages.DeleteContents( TRUE );
+    m_lastSelection = -1;
 }
 
 wxNotebook::wxNotebook()
 }
 
 wxNotebook::wxNotebook()
@@ -251,11 +255,9 @@ int wxNotebook::GetSelection() const
 
     GtkNotebook *notebook = GTK_NOTEBOOK(m_widget);
     
 
     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
 }
 
 int wxNotebook::GetPageCount() const
@@ -462,9 +464,14 @@ bool wxNotebook::DeletePage( int page )
     wxNotebookPage* nb_page = GetNotebookPage(page);
     if (!nb_page) return FALSE;
 
     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();
     nb_page->m_client->Destroy();
-
     m_pages.DeleteObject( nb_page );
     m_pages.DeleteObject( nb_page );
+    
+    m_lastSelection = -1;
 
     return TRUE;
 }
 
     return TRUE;
 }
@@ -508,15 +515,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 );
 
     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 );
 
     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;
 
     /* set the label image */
     page->m_image = imageId;
@@ -619,3 +626,4 @@ bool wxNotebook::IsOwnGtkWindow( GdkWindow *window )
 
 IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxNotifyEvent)
 
 
 IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxNotifyEvent)
 
+#endif
\ No newline at end of file