From b10ad75d11d106897334ee1f57a8652ff001e668 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 14 Jan 2011 15:49:50 -0700 Subject: [PATCH] fix another problem with `erase' in a canvas dc Closes PR 11625 --- collects/mred/private/wx/common/backing-dc.rkt | 11 ++++++++++- collects/mred/private/wx/common/canvas-mixin.rkt | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/collects/mred/private/wx/common/backing-dc.rkt b/collects/mred/private/wx/common/backing-dc.rkt index 597f5236b6..f6874c4c26 100644 --- a/collects/mred/private/wx/common/backing-dc.rkt +++ b/collects/mred/private/wx/common/backing-dc.rkt @@ -14,6 +14,7 @@ backing-draw-bm ;; scoped method names: + clean-slate get-backing-size queue-backing-flush on-backing-flush @@ -26,6 +27,7 @@ end-delay)) (define-local-member-name + clean-slate get-backing-size queue-backing-flush on-backing-flush @@ -45,7 +47,8 @@ internal-set-bitmap reset-cr set-recording-limit - get-recorded-command) + get-recorded-command + get-clear-operator) (super-new) @@ -131,6 +134,12 @@ (queue-backing-flush))) (define/override (erase) + (super erase) + (when (= (get-clear-operator) + CAIRO_OPERATOR_CLEAR) + (set! nada? #t))) + + (define/public (clean-slate) (super erase) (set! nada? #t)) diff --git a/collects/mred/private/wx/common/canvas-mixin.rkt b/collects/mred/private/wx/common/canvas-mixin.rkt index 9cf8abd731..cc2a39920a 100644 --- a/collects/mred/private/wx/common/canvas-mixin.rkt +++ b/collects/mred/private/wx/common/canvas-mixin.rkt @@ -148,7 +148,7 @@ (let ([dc (get-dc)]) (send dc suspend-flush) (send dc ensure-ready) - (send dc erase) ; start with a clean slate + (send dc clean-slate) (let ([bg (get-canvas-background-for-backing)]) (when bg (let ([old-bg (send dc get-background)])