---
 gtkboard.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/gtkboard.c b/gtkboard.c
index 48cecf36..ef1e8ee5 100644
--- a/gtkboard.c
+++ b/gtkboard.c
@@ -2146,6 +2146,11 @@ board_motion_notify(GtkWidget * board, GdkEventMotion * 
event, BoardData * bd)
         if (bd->DragTargetHelp) {       /* Display 2d drag target help */
             gint i, ptx, pty, ptcx, ptcy;
             cairo_t *cr;
+            GdkWindow *window = gtk_widget_get_window(board);
+#if GTK_CHECK_VERSION(3,22,0)
+            cairo_region_t * cairoRegion = cairo_region_create();
+            GdkDrawingContext *context;
+#endif
 
 #if GTK_CHECK_VERSION(3,0,0)
             GdkRGBA TargetHelpRGBA;
@@ -2167,7 +2172,14 @@ board_motion_notify(GtkWidget * board, GdkEventMotion * 
event, BoardData * bd)
             /* get the closest color available in the colormap if no 24-bit */
             gdk_colormap_alloc_color(gtk_widget_get_colormap(board), 
&TargetHelpColor, TRUE, TRUE);
 #endif
-            cr = gdk_cairo_create(gtk_widget_get_window(board));
+
+#if GTK_CHECK_VERSION(3,22,0)
+            context = gdk_window_begin_draw_frame(window, cairoRegion);
+            cr = gdk_drawing_context_get_cairo_context(context);
+#else
+            cr = gdk_cairo_create(window);
+#endif
+
 #if GTK_CHECK_VERSION(3,0,0)
             gdk_cairo_set_source_rgba(cr, &TargetHelpRGBA);
 #else
@@ -2185,7 +2197,12 @@ board_motion_notify(GtkWidget * board, GdkEventMotion * 
event, BoardData * bd)
                 }
             }
 
+#if GTK_CHECK_VERSION(3,22,0)
+            gdk_window_end_draw_frame(window, context);
+            cairo_region_destroy(cairoRegion);
+#else
             cairo_destroy(cr);
+#endif
         }
     }
 
-- 
2.34.1


Reply via email to