diff --git a/collects/mred/private/wx/cocoa/canvas.rkt b/collects/mred/private/wx/cocoa/canvas.rkt index 593fdf1cea..2a5d7cc8f3 100644 --- a/collects/mred/private/wx/cocoa/canvas.rkt +++ b/collects/mred/private/wx/cocoa/canvas.rkt @@ -457,6 +457,7 @@ (reset-auto-scroll 0 0)) (on-size)) + ;; this `on-size' method is for `editor-canvas%', only: (define/public (on-size) (void)) (define/public (show-scrollbars h? v?) diff --git a/collects/mred/private/wx/gtk/canvas.rkt b/collects/mred/private/wx/gtk/canvas.rkt index cd0d54187e..9ffdbcd6da 100644 --- a/collects/mred/private/wx/gtk/canvas.rkt +++ b/collects/mred/private/wx/gtk/canvas.rkt @@ -239,7 +239,7 @@ [ignored-name #f] [gl-config #f]) - (inherit get-gtk set-size get-size get-client-size + (inherit get-gtk get-size get-client-size get-top-win set-auto-size adjust-client-delta infer-client-delta @@ -336,6 +336,10 @@ (list client-gtk))))]) (set-size x y w h) + + (define/override (set-size x y w h) + (super set-size x y w h) + (on-size)) (define dc (new dc% [canvas this] [transparent? (memq 'transparent style)])) @@ -361,7 +365,7 @@ GDK_KEY_RELEASE_MASK GDK_BUTTON_PRESS_MASK GDK_BUTTON_RELEASE_MASK - GDK_POINTER_MOTION_MASK + GDK_POINTER_MOTION_HINT_MASK GDK_FOCUS_CHANGE_MASK GDK_ENTER_NOTIFY_MASK GDK_LEAVE_NOTIFY_MASK)) @@ -486,6 +490,7 @@ (define/override (on-client-size w h) (on-size)) + ;; this `on-size' method is for `editor-canvas%', only: (define/public (on-size) (void)) (define/public (show-scrollbars h? v?) diff --git a/collects/mred/private/wx/gtk/client-window.rkt b/collects/mred/private/wx/gtk/client-window.rkt index 4382815f2d..cddb0842d8 100644 --- a/collects/mred/private/wx/gtk/client-window.rkt +++ b/collects/mred/private/wx/gtk/client-window.rkt @@ -36,13 +36,19 @@ (define/public (on-client-size w h) (void)) + (define client-size-key #f) + (define/public (save-client-size x y w h) ;; Called in the Gtk event-loop thread (set! client-x x) (set! client-y y) - (queue-window-event this (lambda () - (internal-on-client-size w h) - (on-client-size w h)))) + (when client-size-key (set-box! client-size-key #f)) + (let ([key (box #t)]) + (set! client-size-key key) + (queue-window-event this (lambda () + (when (unbox key) + (internal-on-client-size w h) + (on-client-size w h)))))) (define/public (internal-on-client-size w h) (void)) diff --git a/collects/mred/private/wx/gtk/panel.rkt b/collects/mred/private/wx/gtk/panel.rkt index 71e3f642dc..42ad0c80ef 100644 --- a/collects/mred/private/wx/gtk/panel.rkt +++ b/collects/mred/private/wx/gtk/panel.rkt @@ -82,7 +82,7 @@ (connect-key-and-mouse gtk) (gtk_widget_add_events gtk (bitwise-ior GDK_BUTTON_PRESS_MASK GDK_BUTTON_RELEASE_MASK - GDK_POINTER_MOTION_MASK + GDK_POINTER_MOTION_HINT_MASK GDK_FOCUS_CHANGE_MASK GDK_ENTER_NOTIFY_MASK GDK_LEAVE_NOTIFY_MASK)) diff --git a/collects/mred/private/wx/win32/canvas.rkt b/collects/mred/private/wx/win32/canvas.rkt index a6723720ab..962655bc69 100644 --- a/collects/mred/private/wx/win32/canvas.rkt +++ b/collects/mred/private/wx/win32/canvas.rkt @@ -249,6 +249,7 @@ (MoveWindow combo-hwnd 0 0 (max 1 w) (- h 2) #t))) (on-size)) + ;; this `on-size' method is for `editor-canvas%', only: (define/public (on-size) (void)) ;; The `queue-paint' and `paint-children' methods