summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Gorodnichev <[email protected]>2016-04-18 00:47:45 +0300
committerraveit65 <[email protected]>2016-06-01 12:23:32 +0200
commitfdef6d944a4489789118a64693947f9800656643 (patch)
treea48963c3c04189fe68988be6f679bb2f1ec1c75a
parentf7d59c0353773b5deb4f1d400abd6ebf2b03634c (diff)
downloadmate-settings-daemon-fdef6d944a4489789118a64693947f9800656643.tar.bz2
mate-settings-daemon-fdef6d944a4489789118a64693947f9800656643.tar.xz
gtk3: css themes for MsdOsdWindow
MsdOsdWindow theme example: MsdOsdWindow.background { background-color: rgba(10, 10, 8, 0.75); } MsdOsdWindow.window-frame { border-radius: 3px; box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4); }
-rw-r--r--plugins/common/msd-osd-window.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/plugins/common/msd-osd-window.c b/plugins/common/msd-osd-window.c
index 120c6d4..d0f5ed7 100644
--- a/plugins/common/msd-osd-window.c
+++ b/plugins/common/msd-osd-window.c
@@ -244,9 +244,13 @@ expose_when_composited (GtkWidget *widget, GdkEventExpose *event)
cairo_surface_t *surface;
int width;
int height;
+#if GTK_CHECK_VERSION (3, 0, 0)
+ GtkStyleContext *style;
+#else
GtkStyle *style;
GdkColor color;
double r, g, b;
+#endif
window = MSD_OSD_WINDOW (widget);
@@ -254,7 +258,11 @@ expose_when_composited (GtkWidget *widget, GdkEventExpose *event)
context = gdk_cairo_create (gtk_widget_get_window (widget));
#endif
+#if GTK_CHECK_VERSION (3, 0, 0)
+ style = gtk_widget_get_style_context (widget);
+#else
style = gtk_widget_get_style (widget);
+#endif
cairo_set_operator (context, CAIRO_OPERATOR_SOURCE);
gtk_window_get_size (GTK_WINDOW (widget), &width, &height);
@@ -271,10 +279,15 @@ expose_when_composited (GtkWidget *widget, GdkEventExpose *event)
if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) {
goto done;
}
+#if !GTK_CHECK_VERSION (3, 0, 0)
cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 0.0);
cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
cairo_paint (cr);
+#endif
+#if GTK_CHECK_VERSION (3, 0, 0)
+ gtk_render_background (style, cr, 0, 0, width, height);
+#else
/* draw a box */
msd_osd_window_draw_rounded_rectangle (cr, 1.0, 0.5, 0.5, height / 10, width-1, height-1);
msd_osd_window_color_reverse (&style->bg[GTK_STATE_NORMAL], &color);
@@ -291,6 +304,7 @@ expose_when_composited (GtkWidget *widget, GdkEventExpose *event)
cairo_set_source_rgba (cr, r, g, b, BG_ALPHA / 2);
cairo_set_line_width (cr, 1);
cairo_stroke (cr);
+#endif
#if GTK_CHECK_VERSION (3, 0, 0)
g_signal_emit (window, signals[DRAW_WHEN_COMPOSITED], 0, cr);
@@ -682,6 +696,11 @@ msd_osd_window_init (MsdOsdWindow *window)
gtk_window_set_decorated (GTK_WINDOW (window), FALSE);
gtk_widget_set_app_paintable (GTK_WIDGET (window), TRUE);
+#if GTK_CHECK_VERSION (3, 0, 0)
+ GtkStyleContext *style = gtk_widget_get_style_context (GTK_WIDGET (window));
+ gtk_style_context_add_class (style, "window-frame");
+#endif
+
/* assume 130x130 on a 640x480 display and scale from there */
scalew = gdk_screen_get_width (screen) / 640.0;
scaleh = gdk_screen_get_height (screen) / 480.0;