From 2e9088f07a8965e65e92a2f558d40c146b575aac Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 25 Jul 2010 12:05:01 -0500 Subject: [PATCH] canvas and frame repairs original commit: ac6139345d59448cb8d060a95bf9b0da43c58f69 --- collects/mred/private/wx/cocoa/canvas.rkt | 22 +++++++++++++++------- collects/mred/private/wx/gtk/frame.rkt | 4 ++-- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/collects/mred/private/wx/cocoa/canvas.rkt b/collects/mred/private/wx/cocoa/canvas.rkt index c7052e65..b18587ed 100644 --- a/collects/mred/private/wx/cocoa/canvas.rkt +++ b/collects/mred/private/wx/cocoa/canvas.rkt @@ -79,6 +79,8 @@ (define canvas-style style) + (define is-visible? #f) + ;; Avoid multiple queued paints: (define paint-queued? #f) ;; To handle paint requests that happen while on-paint @@ -92,13 +94,14 @@ (set! paint-queued? #t) (queue-window-event this (lambda () (set! paint-queued? #f) - (set! now-drawing? #t) - (fix-dc) - (on-paint) - (set! now-drawing? #f) - (when refresh-after-drawing? - (set! refresh-after-drawing? #f) - (refresh)))))) + (when is-visible? + (set! now-drawing? #t) + (fix-dc) + (on-paint) + (set! now-drawing? #f) + (when refresh-after-drawing? + (set! refresh-after-drawing? #f) + (refresh))))))) (define/override (refresh) (tellv content-cocoa setNeedsDisplay: #:type _BOOL #t)) @@ -148,6 +151,11 @@ (define tr 0) + (define/override (show on?) + (set! is-visible? on?) + ;; FIXME: what if we're in the middle of an on-paint? + (super show on?)) + (define/private (do-set-size x y w h) (super set-size x y w h) (when tr diff --git a/collects/mred/private/wx/gtk/frame.rkt b/collects/mred/private/wx/gtk/frame.rkt index 12b08123..8e3c0ecb 100644 --- a/collects/mred/private/wx/gtk/frame.rkt +++ b/collects/mred/private/wx/gtk/frame.rkt @@ -128,11 +128,11 @@ [fh (unbox h-box)]) (set-top-position (if (or (eq? dir 'both) (eq? dir 'horizontal)) - (/ (- sw fw) 2) + (quotient (- sw fw) 2) -11111) (if (or (eq? dir 'both) (eq? dir 'vertical)) - (/ (- sh fh) 2) + (quotient (- sh fh) 2) -11111))))) (define/override (set-top-position x y)