// InsertChild callback for wxNotebook
//-----------------------------------------------------------------------------
-static void wxInsertChildInNotebook(wxWindow* parent, wxWindow* child)
+void wxNotebook::AddChildGTK(wxWindowGTK* child)
{
// Hack Alert! (Part I): This sets the notebook as the parent of the child
// widget, and takes care of some details such as updating the state and
// incorrect sizes since the widget's style context is not fully known.
// See bug #901694 for details
// (http://sourceforge.net/tracker/?func=detail&aid=901694&group_id=9863&atid=109863)
- gtk_widget_set_parent(child->m_widget, parent->m_widget);
+ gtk_widget_set_parent(child->m_widget, m_widget);
// NOTE: This should be considered a temporary workaround until we can
// work out the details and implement delaying the setting of the initial
const wxPoint& pos, const wxSize& size,
long style, const wxString& name )
{
- m_insertCallback = wxInsertChildInNotebook;
-
if ( (style & wxBK_ALIGN_MASK) == wxBK_DEFAULT )
style |= wxBK_TOP;
m_widget = gtk_notebook_new();
+ g_object_ref(m_widget);
gtk_notebook_set_scrollable( GTK_NOTEBOOK(m_widget), 1 );
if ( !client )
return NULL;
- gtk_widget_ref( client->m_widget );
gtk_widget_unrealize( client->m_widget );
// we don't need to unparent the client->m_widget; GTK+ will do
wxGtkNotebookPage* p = GetNotebookPage(page);
m_pagesData.DeleteObject(p);
delete p;
-
+
return client;
}
wxT("Can't add a page whose parent is not the notebook!") );
wxCHECK_MSG( position <= GetPageCount(), false,
- _T("invalid page index in wxNotebookPage::InsertPage()") );
+ wxT("invalid page index in wxNotebookPage::InsertPage()") );
- // Hack Alert! (Part II): See above in wxInsertChildInNotebook callback
- // why this has to be done. NOTE: using gtk_widget_unparent here does not
- // work as it seems to undo too much and will cause errors in the
- // gtk_notebook_insert_page below, so instead just clear the parent by
- // hand here.
- win->m_widget->parent = NULL;
+ // Hack Alert! (Part II): See above in wxNotebook::AddChildGTK
+ // why this has to be done.
+ gtk_widget_unparent(win->m_widget);
if (m_themeEnabled)
win->SetThemeEnabled(true);
gtk_notebook_insert_page(notebook, win->m_widget, pageData->m_box, position);
/* apply current style */
- GtkRcStyle *style = CreateWidgetStyle();
+ GtkRcStyle *style = GTKCreateWidgetStyle();
if ( style )
{
gtk_widget_modify_style(pageData->m_label, style);