]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/notebook.cpp
don't waste time initializing the memory of newly created wxImage before filling...
[wxWidgets.git] / src / gtk / notebook.cpp
index eb9f4181b240652bce0282b5a60d71e656e3112e..1e73e040c1994a5f671e2220f63ec5642652acf3 100644 (file)
@@ -4,7 +4,7 @@
 // Author:      Robert Roebling
 // Id:          $Id$
 // Copyright:   (c) 1998 Robert Roebling, Vadim Zeitlin
-// Licence:     wxWidgets licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
@@ -72,13 +72,6 @@ public:
         m_image = -1;
         m_page = (GtkNotebookPage *) NULL;
         m_box = (GtkWidget *) NULL;
-        m_labelStyle = (GtkStyle*) NULL;
-    }
-    
-    ~wxGtkNotebookPage()
-    {
-        if (m_labelStyle)
-            gtk_style_unref( m_labelStyle );
     }
     
     bool SetFont(const wxFont& font);
@@ -88,7 +81,6 @@ public:
     GtkNotebookPage   *m_page;
     GtkLabel          *m_label;
     GtkWidget         *m_box;     // in which the label and image are packed
-    GtkStyle          *m_labelStyle;
 };
 
 
@@ -97,42 +89,17 @@ 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 );
+    gtk_widget_modify_font(GTK_WIDGET(m_label),
+                           font.GetNativeFontInfo()->description);
 #else
-       gdk_font_unref( m_labelStyle->font );
-       m_labelStyle->font = gdk_font_ref( font.GetInternalFont( 1.0 ) );
+    GtkRcStyle *style = gtk_rc_style_new();
+    style->fontset_name = 
+        g_strdup(font.GetNativeFontInfo()->GetXFontName().c_str());
+    gtk_widget_modify_style(GTK_WIDGET(m_label), style);
+    gtk_rc_style_unref(style);
 #endif
 
-    gtk_widget_set_style( GTK_WIDGET(m_label), m_labelStyle );
-
        return true;
 }
 
@@ -367,8 +334,6 @@ bool wxNotebook::Create(wxWindow *parent, wxWindowID id,
 
     PostCreation(size);
 
-    SetFont( parent->GetFont() );
-
     gtk_signal_connect( GTK_OBJECT(m_widget), "realize",
                             GTK_SIGNAL_FUNC(gtk_notebook_realized_callback), (gpointer) this );
 
@@ -595,6 +560,7 @@ bool wxNotebook::DeleteAllPages()
 
     wxASSERT_MSG( GetPageCount() == 0, _T("all pages must have been deleted") );
 
+    InvalidateBestSize();
     return wxNotebookBase::DeleteAllPages();
 }
 
@@ -718,7 +684,6 @@ bool wxNotebook::InsertPage( size_t position,
     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 */
@@ -737,6 +702,7 @@ bool wxNotebook::InsertPage( size_t position,
     gtk_signal_connect( GTK_OBJECT(m_widget), "switch_page",
       GTK_SIGNAL_FUNC(gtk_notebook_page_change_callback), (gpointer)this );
 
+    InvalidateBestSize();
     return TRUE;
 }
 
@@ -839,12 +805,10 @@ bool wxNotebook::DoPhase( int WXUNUSED(nPhase) )
 
 #endif
 
-void wxNotebook::ApplyWidgetStyle()
+void wxNotebook::DoApplyWidgetStyle(GtkRcStyle *style)
 {
     // TODO, font for labels etc
-
-    SetWidgetStyle();
-    gtk_widget_set_style( m_widget, m_widgetStyle );
+    gtk_widget_modify_style( m_widget, style );
 }
 
 bool wxNotebook::IsOwnGtkWindow( GdkWindow *window )