diff --git a/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Control.java b/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Control.java
index 593c79e..70cc774 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Control.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/widgets/Control.java
@@ -2595,14 +2595,23 @@
  */
 public void update () {
 	checkWidget();
-	int display = OS.XtDisplay (handle);
-	if (display == 0) return;
-	int window = OS.XtWindow (handle);
-	if (window == 0) return;
-	XAnyEvent event = new XAnyEvent ();
-	OS.XSync (display, false);  OS.XSync (display, false);
-	while (OS.XCheckWindowEvent (display, window, OS.ExposureMask, event)) {
-		OS.XtDispatchEvent (event);
+	update (false);
+}
+void update (boolean all) {
+//	checkWidget();
+	if (all) {
+		Display display = getDisplay ();
+		display.update ();		
+	} else {
+		int display = OS.XtDisplay (handle);
+		if (display == 0) return;
+		int window = OS.XtWindow (handle);
+		if (window == 0) return;
+		XAnyEvent event = new XAnyEvent ();
+		OS.XSync (display, false);  OS.XSync (display, false);
+		while (OS.XCheckWindowEvent (display, window, OS.ExposureMask, event)) {
+			OS.XtDispatchEvent (event);
+		}
 	}
 }
 int XButtonPress (int w, int client_data, int call_data, int continue_to_dispatch) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java
index b5c53e8..5676cb6 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/TreeItem.java
@@ -245,7 +245,9 @@
 	int hwnd = parent.handle;
 	RECT rect = new RECT ();
 	rect.left = handle;
-	OS.SendMessage (hwnd, OS.TVM_GETITEMRECT, 1, rect);
+	if (OS.SendMessage (hwnd, OS.TVM_GETITEMRECT, 1, rect) == 0) {
+		return new Rectangle (0, 0, 0, 0);
+	}
 	int width = rect.right - rect.left;
 	int height = rect.bottom - rect.top;
 	return new Rectangle (rect.left, rect.top, width, height);
