diff options
author | Silenio Quarti <silenio_quarti@ca.ibm.com> | 2013-04-29 15:23:25 -0400 |
---|---|---|
committer | Silenio Quarti <silenio_quarti@ca.ibm.com> | 2013-04-29 15:23:25 -0400 |
commit | 99e4edefe372e2c463379777ecf1fc5a600cb35b (patch) | |
tree | 9bc412222ca37ed1005e1e6a1db3970386f772f1 /bundles | |
parent | 07c18674150755bcdf3b70b1ef50f32c44cf7e50 (diff) | |
download | eclipse.platform.swt-99e4edefe372e2c463379777ecf1fc5a600cb35b.tar.gz eclipse.platform.swt-99e4edefe372e2c463379777ecf1fc5a600cb35b.tar.xz eclipse.platform.swt-99e4edefe372e2c463379777ecf1fc5a600cb35b.zip |
Bug 392700 - [GTK3] Java editor paint problems
Diffstat (limited to 'bundles')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Canvas.java | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Canvas.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Canvas.java index 184bcf548c..201ace8599 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Canvas.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Canvas.java @@ -12,6 +12,7 @@ package org.eclipse.swt.widgets; import org.eclipse.swt.graphics.*; +import org.eclipse.swt.internal.cairo.Cairo; import org.eclipse.swt.internal.gtk.*; import org.eclipse.swt.*; @@ -287,7 +288,20 @@ public void scroll (int destX, int destY, int x, int y, int width, int height, b redrawWidget (destX, destY, width, height, false, false, false); } else { if (OS.GTK3) { - OS.gdk_window_scroll (window, deltaX, deltaY); +// OS.gdk_window_scroll (window, deltaX, deltaY); + long /*int*/ cairo = OS.gdk_cairo_create(window); + Cairo.cairo_rectangle(cairo, destX, destY, width, height); + Cairo.cairo_clip(cairo); + Cairo.cairo_translate(cairo, deltaX, deltaY); + Cairo.cairo_set_operator(cairo, Cairo.CAIRO_OPERATOR_SOURCE); + Cairo.cairo_push_group(cairo); + OS.gdk_cairo_set_source_window(cairo, window, 0, 0); + Cairo.cairo_paint(cairo); + Cairo.cairo_pop_group_to_source(cairo); + Cairo.cairo_rectangle(cairo, destX - deltaX, destY - deltaY, width, height); + Cairo.cairo_clip(cairo); + Cairo.cairo_paint(cairo); + Cairo.cairo_destroy(cairo); } else { long /*int*/ gdkGC = OS.gdk_gc_new (window); OS.gdk_gc_set_exposures (gdkGC, true); |