diff --git a/src/fe-gtk/maingui.c b/src/fe-gtk/maingui.c index cac03b2e..3b19e44c 100644 --- a/src/fe-gtk/maingui.c +++ b/src/fe-gtk/maingui.c @@ -22,6 +22,7 @@ #include #include +#include #include "../common/zoitechat.h" #include "../common/fe.h" @@ -4115,9 +4116,8 @@ mg_drag_drop_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, guint gboolean mg_drag_motion_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, guint time, gpointer scbar) { - GdkGC *gc; GdkColor col; - GdkGCValues val; + cairo_t *cr; int half, width, height; int ox, oy; GdkDrawable *draw; @@ -4144,16 +4144,13 @@ mg_drag_motion_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, gui draw = gtk_widget_get_window (widget); } - val.subwindow_mode = GDK_INCLUDE_INFERIORS; - val.graphics_exposures = 0; - val.function = GDK_XOR; - - gc = gdk_gc_new_with_values (gtk_widget_get_window (widget), &val, GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW | GDK_GC_FUNCTION); col.red = rand() % 0xffff; col.green = rand() % 0xffff; col.blue = rand() % 0xffff; - gdk_colormap_alloc_color (gtk_widget_get_colormap (widget), &col, FALSE, TRUE); - gdk_gc_set_foreground (gc, &col); + cr = gdk_cairo_create (draw); + cairo_set_operator (cr, CAIRO_OPERATOR_XOR); + gdk_cairo_set_source_color (cr, &col); + cairo_set_line_width (cr, 1.0); half = height / 2; @@ -4171,18 +4168,20 @@ mg_drag_motion_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, gui if (y < half) { - gdk_draw_rectangle (draw, gc, FALSE, 1 + ox, 2 + oy, width - 3, half - 4); - gdk_draw_rectangle (draw, gc, FALSE, 0 + ox, 1 + oy, width - 1, half - 2); + cairo_rectangle (cr, 1 + ox, 2 + oy, width - 3, half - 4); + cairo_rectangle (cr, 0 + ox, 1 + oy, width - 1, half - 2); + cairo_stroke (cr); gtk_widget_queue_draw_area (widget, ox, half + oy, width, height - half); } else { - gdk_draw_rectangle (draw, gc, FALSE, 0 + ox, half + 1 + oy, width - 1, half - 2); - gdk_draw_rectangle (draw, gc, FALSE, 1 + ox, half + 2 + oy, width - 3, half - 4); + cairo_rectangle (cr, 0 + ox, half + 1 + oy, width - 1, half - 2); + cairo_rectangle (cr, 1 + ox, half + 2 + oy, width - 3, half - 4); + cairo_stroke (cr); gtk_widget_queue_draw_area (widget, ox, oy, width, half); } - g_object_unref (gc); + cairo_destroy (cr); return TRUE; }