diff options
author | Alexei Sorokin <[email protected]> | 2017-01-15 18:24:34 +0300 |
---|---|---|
committer | Alexei Sorokin <[email protected]> | 2017-01-15 18:24:34 +0300 |
commit | 78e6e31dbde35a3f3dd4e95f2d8af90de2c17b1f (patch) | |
tree | be328fdaee82db6fe18a0544a6434c337a4607a5 /src/mate-screensaver-preferences.c | |
parent | 15d98b9835333ba174687b4ec58eae7bcc7d94e2 (diff) | |
download | mate-screensaver-78e6e31dbde35a3f3dd4e95f2d8af90de2c17b1f.tar.bz2 mate-screensaver-78e6e31dbde35a3f3dd4e95f2d8af90de2c17b1f.tar.xz |
avoid deprecated gdk_window_set_background functions
Which are completely broken in GTK+ 3.22.
Also remove some redundant separate Gtk2 code.
Diffstat (limited to 'src/mate-screensaver-preferences.c')
-rw-r--r-- | src/mate-screensaver-preferences.c | 70 |
1 files changed, 49 insertions, 21 deletions
diff --git a/src/mate-screensaver-preferences.c b/src/mate-screensaver-preferences.c index 5dd0757..e1d167f 100644 --- a/src/mate-screensaver-preferences.c +++ b/src/mate-screensaver-preferences.c @@ -299,22 +299,6 @@ config_set_lock (gboolean lock) } static void -preview_clear (GtkWidget *widget) -{ -#if GTK_CHECK_VERSION (3, 0, 0) - GdkRGBA black = { 0.0, 0.0, 0.0, 1.0 }; - - gdk_window_set_background_rgba (gtk_widget_get_window (widget), &black); - gtk_widget_queue_draw (widget); -#else - GdkColor black = { 0, 0x0000, 0x0000, 0x0000 }; - - gtk_widget_modify_bg (widget, GTK_STATE_NORMAL, &black); - gdk_window_clear (gtk_widget_get_window (widget)); -#endif -} - -static void job_set_theme (GSJob *job, const char *theme) { @@ -337,6 +321,33 @@ job_set_theme (GSJob *job, } } +static gboolean +#if GTK_CHECK_VERSION (3, 0, 0) +preview_on_draw (GtkWidget *widget, + cairo_t *cr) +#else +preview_on_expose_event (GtkWidget *widget, + GdkEventExpose *event) +#endif +{ +#if !GTK_CHECK_VERSION (3, 0, 0) + GdkWindow *window = gtk_widget_get_window (widget); + cairo_t *cr = gdk_cairo_create (window); + +#endif + if (job == NULL || !gs_job_is_running (job)) + { + cairo_set_operator (cr, CAIRO_OPERATOR_OVER); + cairo_set_source_rgb (cr, 0, 0, 0); + cairo_paint (cr); + } + +#if !GTK_CHECK_VERSION (3, 0, 0) + cairo_destroy (cr); +#endif + return FALSE; +} + static void preview_set_theme (GtkWidget *widget, const char *theme, @@ -350,7 +361,7 @@ preview_set_theme (GtkWidget *widget, gs_job_stop (job); } - preview_clear (widget); + gtk_widget_queue_draw (widget); label = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_theme_label")); markup = g_markup_printf_escaped ("<i>%s</i>", name); @@ -1170,7 +1181,7 @@ fullscreen_preview_cancelled_cb (GtkWidget *button, gs_job_set_widget (job, preview_area); fullscreen_preview_area = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_area")); - preview_clear (fullscreen_preview_area); + gtk_widget_queue_draw (fullscreen_preview_area); fullscreen_preview_window = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_window")); gtk_widget_hide (fullscreen_preview_window); @@ -1200,7 +1211,7 @@ fullscreen_preview_start_cb (GtkWidget *widget, gtk_widget_grab_focus (fullscreen_preview_window); fullscreen_preview_area = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_area")); - preview_clear (fullscreen_preview_area); + gtk_widget_queue_draw (fullscreen_preview_area); gs_job_set_widget (job, fullscreen_preview_area); } @@ -1553,6 +1564,7 @@ init_capplet (void) GtkWidget *preview_button; GtkWidget *gpm_button; GtkWidget *fullscreen_preview_window; + GtkWidget *fullscreen_preview_area; GtkWidget *fullscreen_preview_previous; GtkWidget *fullscreen_preview_next; GtkWidget *fullscreen_preview_close; @@ -1601,7 +1613,7 @@ init_capplet (void) preview_button = GTK_WIDGET (gtk_builder_get_object (builder, "preview_button")); gpm_button = GTK_WIDGET (gtk_builder_get_object (builder, "gpm_button")); fullscreen_preview_window = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_window")); - GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_area")); + fullscreen_preview_area = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_area")); fullscreen_preview_close = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_close")); fullscreen_preview_previous = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_previous_button")); fullscreen_preview_next = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_next_button")); @@ -1673,6 +1685,16 @@ init_capplet (void) gtk_window_set_icon_name (GTK_WINDOW (dialog), "preferences-desktop-screensaver"); gtk_window_set_icon_name (GTK_WINDOW (fullscreen_preview_window), "screensaver"); +#if GTK_CHECK_VERSION (3, 0, 0) + g_signal_connect (fullscreen_preview_area, + "draw", G_CALLBACK (preview_on_draw), + NULL); +#else + g_signal_connect (fullscreen_preview_area, + "expose-event", G_CALLBACK (preview_on_expose_event), + NULL); +#endif + gtk_drag_dest_set (dialog, GTK_DEST_DEFAULT_ALL, drop_types, G_N_ELEMENTS (drop_types), GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_MOVE); @@ -1695,7 +1717,13 @@ init_capplet (void) g_strfreev (list); } - preview_clear (preview); +#if GTK_CHECK_VERSION (3, 0, 0) + g_signal_connect (preview, "draw", G_CALLBACK (preview_on_draw), NULL); +#else + g_signal_connect (preview, + "expose-event", G_CALLBACK (preview_on_expose_event), + NULL); +#endif gs_job_set_widget (job, preview); if (check_is_root_user ()) |