Index: include/wx/gtk/notebook.h =================================================================== RCS file: /pack/cvsroots/wxwidgets/wxWidgets/include/wx/gtk/notebook.h,v retrieving revision 1.48 diff -c -r1.48 notebook.h *** include/wx/gtk/notebook.h 2004/01/22 14:46:00 1.48 --- include/wx/gtk/notebook.h 2004/03/17 14:12:12 *************** *** 107,112 **** --- 107,115 ---- #endif void ApplyWidgetStyle(); + + // set all page's font + bool SetFont(const wxFont& font); // report if window belongs to notebook bool IsOwnGtkWindow( GdkWindow *window ); Index: src/gtk/notebook.cpp =================================================================== RCS file: /pack/cvsroots/wxwidgets/wxWidgets/src/gtk/notebook.cpp,v retrieving revision 1.102 diff -c -r1.102 notebook.cpp *** src/gtk/notebook.cpp 2004/02/22 21:05:54 1.102 --- src/gtk/notebook.cpp 2004/03/17 14:12:13 *************** *** 24,35 **** --- 24,38 ---- #include "wx/intl.h" #include "wx/log.h" #include "wx/bitmap.h" + #include "wx/fontutil.h" #include "wx/gtk/private.h" #include "wx/gtk/win_gtk.h" #include + #include "wx/msgdlg.h" + // ---------------------------------------------------------------------------- // events // ---------------------------------------------------------------------------- *************** *** 69,86 **** --- 72,144 ---- m_image = -1; m_page = (GtkNotebookPage *) NULL; m_box = (GtkWidget *) NULL; + m_labelStyle=NULL; + } + ~wxGtkNotebookPage() + { + if (m_labelStyle) + gtk_style_unref( m_labelStyle ); } + bool SetFont(const wxFont& font); wxString m_text; int m_image; GtkNotebookPage *m_page; GtkLabel *m_label; GtkWidget *m_box; // in which the label and image are packed + GtkStyle *m_labelStyle; }; + + bool wxGtkNotebookPage::SetFont(const wxFont& font) + { + if (!m_label) + return false; + + if (m_labelStyle) + { + GtkStyle *remake = gtk_style_copy( m_labelStyle ); + + #ifndef __WXGTK20__ + remake->klass = m_labelStyle->klass; + #endif + + gtk_style_unref( m_labelStyle ); + m_labelStyle = remake; + } + else + { + GtkStyle *def = gtk_rc_get_style( GTK_WIDGET(m_label) ); + + if (!def) + def = gtk_widget_get_default_style(); + + m_labelStyle = gtk_style_copy( def ); + + // FIXME: no more klass in 2.0 + #ifndef __WXGTK20__ + m_labelStyle->klass = def->klass; + #endif + } + + #ifdef __WXGTK20__ + pango_font_description_free( m_labelStyle->font_desc ); + m_labelStyle->font_desc = pango_font_description_copy( font.GetNativeFontInfo()->description ); + #else + gdk_font_unref( m_labelStyle->font ); + m_labelStyle->font = gdk_font_ref( font.GetInternalFont( 1.0 ) ); + #endif + + gtk_widget_set_style( GTK_WIDGET(m_label), m_labelStyle ); + + return true; + } + + #include "wx/listimpl.cpp" WX_DEFINE_LIST(wxGtkNotebookPagesList); + //----------------------------------------------------------------------------- // "switch_page" //----------------------------------------------------------------------------- *************** *** 655,664 **** --- 713,724 ---- } /* set the label text */ + nb_page->m_text = text; if (nb_page->m_text.IsEmpty()) nb_page->m_text = wxT(""); nb_page->m_label = GTK_LABEL( gtk_label_new(wxGTK_CONV(nb_page->m_text)) ); + nb_page->SetFont(GetFont()); gtk_box_pack_end( GTK_BOX(nb_page->m_box), GTK_WIDGET(nb_page->m_label), FALSE, FALSE, m_padding ); /* show the label */ *************** *** 791,796 **** --- 851,869 ---- { return ((m_widget->window == window) || (NOTEBOOK_PANEL(m_widget) == window)); + } + + bool wxNotebook::SetFont(const wxFont& font) + { + bool rc=wxNotebookBase::SetFont(font); + + if (rc) + { + size_t i; + for (i=0 ; i < m_pagesData.GetCount() ; i++) + GetNotebookPage(i)->SetFont(font); + } + return rc; } //-----------------------------------------------------------------------------