diff --git a/collects/mred/private/wx/gtk/window.rkt b/collects/mred/private/wx/gtk/window.rkt index 589b3530cf..42ba4b1465 100644 --- a/collects/mred/private/wx/gtk/window.rkt +++ b/collects/mred/private/wx/gtk/window.rkt @@ -716,6 +716,7 @@ (define-gdk gdk_window_thaw_updates (_fun _GdkWindow -> _void)) (define-gdk gdk_window_invalidate_rect (_fun _GdkWindow _pointer _gboolean -> _void)) (define-gdk gdk_window_process_all_updates (_fun -> _void)) +(define-gdk gdk_window_ensure_native (_fun _GdkWindow -> _gboolean)) (define (win-box-valid? win-box) (mcar win-box)) @@ -734,6 +735,11 @@ (lambda (win-box) (let ([win (mcar win-box)]) (and win + ;; The freeze/thaw state is actually with the window's + ;; implementation, so force a native implementation of the + ;; window to try to avoid it changing out from underneath + ;; us between the freeze and thaw actions. + (gdk_window_ensure_native win) (begin (gdk_window_freeze_updates win) (set-mcdr! win-box (add1 (mcdr win-box)))