return true;
}
-void wxNotebook::SetPageSize( const wxSize &WXUNUSED(size) )
+wxSize wxNotebook::CalcSizeFromPage(const wxSize& sizePage) const
{
- wxFAIL_MSG( wxT("wxNotebook::SetPageSize not implemented") );
+ // Compute the max size of the tab labels.
+ wxSize sizeTabMax;
+ const size_t pageCount = GetPageCount();
+ for ( size_t n = 0; n < pageCount; n++ )
+ {
+ GtkRequisition req;
+ gtk_widget_size_request(GetNotebookPage(n)->m_box, &req);
+ sizeTabMax.IncTo(wxSize(req.width, req.height));
+ }
+
+ // Unfortunately this doesn't account for the real tab size and I don't
+ // know how to find it, e.g. where do the margins below come from.
+ const int PAGE_MARGIN = 3;
+ const int TAB_MARGIN = 4;
+
+ sizeTabMax.IncBy(3*TAB_MARGIN);
+
+ wxSize sizeFull(sizePage);
+ if ( IsVertical() )
+ sizeFull.y += sizeTabMax.y;
+ else
+ sizeFull.x += sizeTabMax.x;
+
+ sizeFull.IncBy(2*PAGE_MARGIN);
+
+ return sizeFull;
}
void wxNotebook::SetPadding( const wxSize &padding )
if ( !client )
return NULL;
- gtk_widget_unrealize( client->m_widget );
-
// we don't need to unparent the client->m_widget; GTK+ will do
// that for us (and will throw a warning if we do it!)
gtk_notebook_remove_page( GTK_NOTEBOOK(m_widget), page );