diff options
Diffstat (limited to 'src/gsd-media-keys-window.c')
-rw-r--r-- | src/gsd-media-keys-window.c | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/src/gsd-media-keys-window.c b/src/gsd-media-keys-window.c index 63f93a5..5bcca8e 100644 --- a/src/gsd-media-keys-window.c +++ b/src/gsd-media-keys-window.c @@ -30,6 +30,11 @@ #include <glib/gi18n.h> #include <gtk/gtk.h> +#if GTK_CHECK_VERSION (3, 0, 0) +#define MATE_DESKTOP_USE_UNSTABLE_API +#include <libmate-desktop/mate-desktop-utils.h> +#endif + #include "gsd-media-keys-window.h" #define MSD_MEDIA_KEYS_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MSD_TYPE_MEDIA_KEYS_WINDOW, MsdMediaKeysWindowPrivate)) @@ -402,44 +407,74 @@ draw_volume_boxes (MsdMediaKeysWindow *window, double height) { gdouble x1; +#if GTK_CHECK_VERSION (3, 0, 0) + GdkRGBA color; + GtkStyleContext *style; +#else GdkColor color; double r, g, b; GtkStyle *style; +#endif _x0 += 0.5; _y0 += 0.5; height = round (height) - 1; width = round (width) - 1; x1 = round ((width - 1) * percentage); + +#if GTK_CHECK_VERSION (3, 0, 0) + style = gtk_widget_get_style_context (GTK_WIDGET (window)); +#else style = gtk_widget_get_style (GTK_WIDGET (window)); +#endif /* bar background */ + msd_osd_window_draw_rounded_rectangle (cr, 1.0, _x0, _y0, height / 6, width, height); +#if GTK_CHECK_VERSION (3, 0, 0) + mate_desktop_gtk_style_get_dark_color (style, GTK_STATE_FLAG_NORMAL, &color); + cairo_set_operator (cr, CAIRO_OPERATOR_DIFFERENCE); + cairo_set_source_rgba (cr, color.red, color.green, color.blue, MSD_OSD_WINDOW_FG_ALPHA / 2); +#else msd_osd_window_color_reverse (&style->dark[GTK_STATE_NORMAL], &color); r = (float)color.red / 65535.0; g = (float)color.green / 65535.0; b = (float)color.blue / 65535.0; msd_osd_window_draw_rounded_rectangle (cr, 1.0, _x0, _y0, height / 6, width, height); cairo_set_source_rgba (cr, r, g, b, MSD_OSD_WINDOW_FG_ALPHA / 2); +#endif cairo_fill_preserve (cr); /* bar border */ +#if GTK_CHECK_VERSION (3, 0, 0) + mate_desktop_gtk_style_get_light_color (style, GTK_STATE_FLAG_NORMAL, &color); + cairo_set_operator (cr, CAIRO_OPERATOR_DIFFERENCE); + cairo_set_source_rgba (cr, color.red, color.green, color.blue, MSD_OSD_WINDOW_FG_ALPHA / 2); +#else msd_osd_window_color_reverse (&style->light[GTK_STATE_NORMAL], &color); r = (float)color.red / 65535.0; g = (float)color.green / 65535.0; b = (float)color.blue / 65535.0; cairo_set_source_rgba (cr, r, g, b, MSD_OSD_WINDOW_FG_ALPHA / 2); +#endif cairo_set_line_width (cr, 1); cairo_stroke (cr); /* bar progress */ if (percentage < 0.01) return; + + msd_osd_window_draw_rounded_rectangle (cr, 1.0, _x0 + 0.5, _y0 + 0.5, height / 6 - 0.5, x1, height - 1); +#if GTK_CHECK_VERSION (3, 0, 0) + gtk_style_context_get (style, GTK_STATE_FLAG_NORMAL, GTK_STYLE_PROPERTY_COLOR, &color, NULL); + cairo_set_operator (cr, CAIRO_OPERATOR_DIFFERENCE); + cairo_set_source_rgba (cr, color.red, color.green, color.blue, MSD_OSD_WINDOW_FG_ALPHA); +#else color = style->bg[GTK_STATE_NORMAL]; r = (float)color.red / 65535.0; g = (float)color.green / 65535.0; b = (float)color.blue / 65535.0; - msd_osd_window_draw_rounded_rectangle (cr, 1.0, _x0 + 0.5, _y0 + 0.5, height / 6 - 0.5, x1, height - 1); cairo_set_source_rgba (cr, r, g, b, MSD_OSD_WINDOW_FG_ALPHA); +#endif cairo_fill (cr); } |