Bug 421127 - form editor painting issue

Change-Id: I44ba20e832e52903b28c23d62b7d574c7416e9e7
Signed-off-by: Snjezana Peco <snjeza.peco@gmail.com>
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 7fac835..ec9a008 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 @@
 	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 @@
 						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);