Add wxWindow::ApplyCssStyle() helper to wxGTK

This is useful for styling GTK+ 3 widgets.

See #17089.
This commit is contained in:
Hans Mackowiak
2016-03-07 13:22:57 +01:00
committed by Vadim Zeitlin
parent b0445661b1
commit 1e70c05759
2 changed files with 21 additions and 2 deletions

View File

@@ -14,6 +14,7 @@
#ifdef __WXGTK3__ #ifdef __WXGTK3__
typedef struct _cairo cairo_t; typedef struct _cairo cairo_t;
typedef struct _GtkStyleProvider GtkStyleProvider; typedef struct _GtkStyleProvider GtkStyleProvider;
typedef struct _GtkCssProvider GtkCssProvider;
#define WXUNUSED_IN_GTK2(x) x #define WXUNUSED_IN_GTK2(x) x
#define WXUNUSED_IN_GTK3(x) #define WXUNUSED_IN_GTK3(x)
#else #else
@@ -409,7 +410,11 @@ protected:
// Copies m_children tab order to GTK focus chain: // Copies m_children tab order to GTK focus chain:
void RealizeTabOrder(); void RealizeTabOrder();
#ifndef __WXGTK3__ #ifdef __WXGTK3__
// Use the given CSS string for styling the widget. The provider must be
// allocated, and remains owned, by the caller.
void ApplyCssStyle(GtkCssProvider* provider, const char* style);
#else // GTK+ < 3
// Called by ApplyWidgetStyle (which is called by SetFont() and // Called by ApplyWidgetStyle (which is called by SetFont() and
// SetXXXColour etc to apply style changed to native widgets) to create // SetXXXColour etc to apply style changed to native widgets) to create
// modified GTK style with non-standard attributes. // modified GTK style with non-standard attributes.

View File

@@ -4426,7 +4426,21 @@ PangoContext *wxWindowGTK::GTKGetPangoDefaultContext()
return gtk_widget_get_pango_context( m_widget ); return gtk_widget_get_pango_context( m_widget );
} }
#ifndef __WXGTK3__ #ifdef __WXGTK3__
void wxWindowGTK::ApplyCssStyle(GtkCssProvider* provider, const char* style)
{
wxCHECK_RET(m_widget, "invalid window");
gtk_style_context_remove_provider(gtk_widget_get_style_context(m_widget),
GTK_STYLE_PROVIDER(provider));
gtk_css_provider_load_from_data(provider, style, -1, NULL);
gtk_style_context_add_provider(gtk_widget_get_style_context(m_widget),
GTK_STYLE_PROVIDER(provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
}
#else // GTK+ < 3
GtkRcStyle* wxWindowGTK::GTKCreateWidgetStyle() GtkRcStyle* wxWindowGTK::GTKCreateWidgetStyle()
{ {
GtkRcStyle *style = gtk_rc_style_new(); GtkRcStyle *style = gtk_rc_style_new();