fix another problem with `erase' in a canvas dc

Closes PR 11625
This commit is contained in:
Matthew Flatt 2011-01-14 15:49:50 -07:00
parent b45bb829b6
commit b10ad75d11
2 changed files with 11 additions and 2 deletions

View File

@ -14,6 +14,7 @@
backing-draw-bm backing-draw-bm
;; scoped method names: ;; scoped method names:
clean-slate
get-backing-size get-backing-size
queue-backing-flush queue-backing-flush
on-backing-flush on-backing-flush
@ -26,6 +27,7 @@
end-delay)) end-delay))
(define-local-member-name (define-local-member-name
clean-slate
get-backing-size get-backing-size
queue-backing-flush queue-backing-flush
on-backing-flush on-backing-flush
@ -45,7 +47,8 @@
internal-set-bitmap internal-set-bitmap
reset-cr reset-cr
set-recording-limit set-recording-limit
get-recorded-command) get-recorded-command
get-clear-operator)
(super-new) (super-new)
@ -131,6 +134,12 @@
(queue-backing-flush))) (queue-backing-flush)))
(define/override (erase) (define/override (erase)
(super erase)
(when (= (get-clear-operator)
CAIRO_OPERATOR_CLEAR)
(set! nada? #t)))
(define/public (clean-slate)
(super erase) (super erase)
(set! nada? #t)) (set! nada? #t))

View File

@ -148,7 +148,7 @@
(let ([dc (get-dc)]) (let ([dc (get-dc)])
(send dc suspend-flush) (send dc suspend-flush)
(send dc ensure-ready) (send dc ensure-ready)
(send dc erase) ; start with a clean slate (send dc clean-slate)
(let ([bg (get-canvas-background-for-backing)]) (let ([bg (get-canvas-background-for-backing)])
(when bg (when bg
(let ([old-bg (send dc get-background)]) (let ([old-bg (send dc get-background)])