diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2011-01-27 12:52:34 +0100 |
---|---|---|
committer | Vincent Untz <vuntz@gnome.org> | 2011-02-03 13:30:18 +0100 |
commit | 93fb4ff17130509660fba3c140006b9a43fe256a (patch) | |
tree | 5e2366c567f744a24d6cfd5f253dcc583e2e6e71 /libwnck | |
parent | 1a123f923385e409394aa627ff90acac0d2c2d1c (diff) | |
download | libwnck-93fb4ff17130509660fba3c140006b9a43fe256a.tar.gz |
selector: Port to GtkStyleContext
Diffstat (limited to 'libwnck')
-rw-r--r-- | libwnck/selector.c | 57 |
1 files changed, 33 insertions, 24 deletions
diff --git a/libwnck/selector.c b/libwnck/selector.c index 8f92851..2066a5d 100644 --- a/libwnck/selector.c +++ b/libwnck/selector.c @@ -509,7 +509,8 @@ wnck_selector_activate_window (WnckWindow *window) static gint wnck_selector_get_width (GtkWidget *widget, const char *text) { - GtkStyle *style; + GtkStyleContext *style_context; + GtkStateFlags state; PangoContext *context; PangoFontMetrics *metrics; gint char_width; @@ -519,11 +520,12 @@ wnck_selector_get_width (GtkWidget *widget, const char *text) gint screen_width; gint width; - gtk_widget_ensure_style (widget); - style = gtk_widget_get_style (widget); + state = gtk_widget_get_state_flags (widget); + style_context = gtk_widget_get_style_context (widget); context = gtk_widget_get_pango_context (widget); - metrics = pango_context_get_metrics (context, style->font_desc, + metrics = pango_context_get_metrics (context, + gtk_style_context_get_font (style_context, state), pango_context_get_language (context)); char_width = pango_font_metrics_get_approximate_char_width (metrics); pango_font_metrics_unref (metrics); @@ -641,17 +643,19 @@ static void wnck_selector_workspace_name_changed (WnckWorkspace *workspace, GtkLabel *label) { - GtkStyle *style; - GdkColor *color; - char *name; - char *markup; + GtkStyleContext *context; + GdkRGBA color; + char *name; + char *markup; - style = gtk_widget_get_style (GTK_WIDGET (label)); - color = &style->fg[GTK_STATE_INSENSITIVE]; + context = gtk_widget_get_style_context (GTK_WIDGET (label)); + gtk_style_context_get_color (context, GTK_STATE_FLAG_INSENSITIVE, &color); name = g_markup_escape_text (wnck_workspace_get_name (workspace), -1); markup = g_strdup_printf ("<span size=\"x-small\" style=\"italic\" foreground=\"#%.2x%.2x%.2x\">%s</span>", - color->red, color->green, color->blue, name); + (int)(color.red * 65535 + 0.5), + (int)(color.green * 65535 + 0.5), + (int)(color.blue * 65535 + 0.5), name); g_free (name); gtk_label_set_markup (label, markup); @@ -659,9 +663,8 @@ wnck_selector_workspace_name_changed (WnckWorkspace *workspace, } static void -wnck_selector_workspace_label_style_set (GtkLabel *label, - GtkStyle *previous_style, - WnckWorkspace *workspace) +wnck_selector_workspace_label_style_updated (GtkLabel *label, + WnckWorkspace *workspace) { wnck_selector_workspace_name_changed (workspace, label); } @@ -686,8 +689,8 @@ wnck_selector_add_workspace (WnckSelector *selector, gtk_widget_show (label); /* the handler will also take care of setting the name for the first time, * and we'll be able to adapt to theme changes */ - g_signal_connect (G_OBJECT (label), "style-set", - G_CALLBACK (wnck_selector_workspace_label_style_set), + g_signal_connect (G_OBJECT (label), "style-updated", + G_CALLBACK (wnck_selector_workspace_label_style_updated), workspace); wncklet_connect_while_alive (workspace, "name_changed", G_CALLBACK (wnck_selector_workspace_name_changed), @@ -1186,7 +1189,8 @@ wnck_selector_on_show (GtkWidget *widget, WnckSelector *selector) static void wnck_selector_fill (WnckSelector *selector) { - GtkWidget *menu_item; + GtkWidget *menu_item; + GtkCssProvider *provider; g_signal_connect (selector, "scroll-event", G_CALLBACK (wnck_selector_scroll_cb), selector); @@ -1210,13 +1214,18 @@ wnck_selector_fill (WnckSelector *selector) G_CALLBACK (wnck_selector_on_show), selector); gtk_widget_set_name (GTK_WIDGET (selector), - "gnome-panel-window-menu-menu-bar-style"); - - gtk_rc_parse_string ("style \"gnome-panel-window-menu-menu-bar-style\" {\n" - " GtkMenuBar::shadow-type = none\n" - " GtkMenuBar::internal-padding = 0\n" - "}\n" - "widget \"*gnome-panel-window-menu-menu-bar*\" style : highest \"gnome-panel-window-menu-menu-bar-style\""); + "gnome-panel-window-menu-menu-bar"); + + provider = gtk_css_provider_new (); + gtk_css_provider_load_from_data (provider, + "#gnome-panel-window-menu-menu-bar {\n" + " border-width: 0px;\n" + "}", + -1, NULL); + gtk_style_context_add_provider (gtk_widget_get_style_context (GTK_WIDGET (selector)), + GTK_STYLE_PROVIDER (provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + g_object_unref (provider); gtk_widget_show (GTK_WIDGET (selector)); } |