Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java9
1 files changed, 7 insertions, 2 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
index 7fac8358fa..ec9a008695 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
@@ -3165,8 +3165,8 @@ long /*int*/ gtk_draw (long /*int*/ widget, long /*int*/ cairo) {
if (OS.GTK_VERSION <= OS.VERSION(3, 9, 0)) {
data.cairo = cairo;
}
-
GC gc = event.gc = GC.gtk_new (this, data);
+ gc.setClipping(rect.x, rect.y, rect.width, rect.height);
drawWidget (gc);
sendEvent (SWT.Paint, event);
gc.dispose ();
@@ -5484,7 +5484,12 @@ long /*int*/ windowProc (long /*int*/ handle, long /*int*/ arg0, long /*int*/ us
GdkRectangle rect = new GdkRectangle ();
OS.gdk_cairo_get_clip_rectangle (cairo, rect);
if (control == null) control = this;
- drawBackground (control, 0, cairo, 0, rect.x, rect.y, rect.width, rect.height);
+ long window = OS.gtk_widget_get_window(handle);
+ if (window != 0) {
+ drawBackground (control, window, 0, 0, rect.x, rect.y, rect.width, rect.height);
+ } else {
+ drawBackground (control, 0, cairo, 0, rect.x, rect.y, rect.width, rect.height);
+ }
} else {
GdkEventExpose gdkEvent = new GdkEventExpose ();
OS.memmove (gdkEvent, arg0, GdkEventExpose.sizeof);

Back to the top