+ else
+#endif
+ {
+ win->GetUpdateRegion().Union( XExposeEventGetX(event), XExposeEventGetY(event),
+ XExposeEventGetWidth(event), XExposeEventGetHeight(event));
+ win->GetClearRegion().Union( XExposeEventGetX(event), XExposeEventGetY(event),
+ XExposeEventGetWidth(event), XExposeEventGetHeight(event));
+
+#if !wxUSE_NANOX
+ XEvent tmp_event;
+ wxExposeInfo info;
+ info.window = event->xexpose.window;
+ info.found_non_matching = false;
+ while (XCheckIfEvent( wxGlobalDisplay(), &tmp_event, wxX11ExposePredicate, (XPointer) &info ))
+ {
+ win->GetUpdateRegion().Union( tmp_event.xexpose.x, tmp_event.xexpose.y,
+ tmp_event.xexpose.width, tmp_event.xexpose.height );
+
+ win->GetClearRegion().Union( tmp_event.xexpose.x, tmp_event.xexpose.y,
+ tmp_event.xexpose.width, tmp_event.xexpose.height );
+ }
+#endif
+
+ // This simplifies the expose and clear areas to simple
+ // rectangles.
+ win->GetUpdateRegion() = win->GetUpdateRegion().GetBox();
+ win->GetClearRegion() = win->GetClearRegion().GetBox();
+
+ // If we only have one X11 window, always indicate
+ // that borders might have to be redrawn.
+ if (win->X11GetMainWindow() == win->GetClientAreaWindow())
+ win->NeedUpdateNcAreaInIdle();
+
+ // Only erase background, paint in idle time.
+ win->SendEraseEvents();
+
+ // EXPERIMENT
+ //win->Update();
+ }
+
+ return true;