From ad1eed5071fa53a06465a0270618a71f6e7397fe Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 6 Aug 2010 13:18:23 -0600 Subject: [PATCH] restore auto-scroll canvases; fix text-rotation bug original commit: cc55bd7e93a521456d5b4cd17a061df4a447319d --- collects/mred/private/wx/cocoa/canvas.rkt | 5 +++- .../mred/private/wx/common/backing-dc.rkt | 4 +++- collects/mred/private/wx/gtk/canvas.rkt | 16 ++++++------- collects/mred/private/wx/gtk/dc.rkt | 24 +------------------ collects/tests/gracket/draw.rkt | 2 +- 5 files changed, 16 insertions(+), 35 deletions(-) diff --git a/collects/mred/private/wx/cocoa/canvas.rkt b/collects/mred/private/wx/cocoa/canvas.rkt index b6bfe1ea..3ca578d1 100644 --- a/collects/mred/private/wx/cocoa/canvas.rkt +++ b/collects/mred/private/wx/cocoa/canvas.rkt @@ -264,7 +264,10 @@ (define/public (fix-dc [refresh? #t]) (when (dc . is-a? . dc%) - (send dc reset-backing-retained)) + (send dc reset-backing-retained) + (send dc set-auto-scroll + (if auto-scroll? (scroll-pos h-scroller) 0) + (if auto-scroll? (scroll-pos v-scroller) 0))) (when refresh? (refresh))) (define/override (get-client-size xb yb) diff --git a/collects/mred/private/wx/common/backing-dc.rkt b/collects/mred/private/wx/common/backing-dc.rkt index c3d3beea..73fdfd5c 100644 --- a/collects/mred/private/wx/common/backing-dc.rkt +++ b/collects/mred/private/wx/common/backing-dc.rkt @@ -29,7 +29,8 @@ (class (dc-mixin bitmap-dc-backend%) (inherit call-with-cr-lock internal-get-bitmap - internal-set-bitmap) + internal-set-bitmap + reset-cr) (super-new) @@ -91,6 +92,7 @@ (internal-set-bitmap bm #t)) (let ([cr (super get-cr)]) (set! retained-cr cr) + (reset-cr cr) cr)))) (define/override (release-cr cr) diff --git a/collects/mred/private/wx/gtk/canvas.rkt b/collects/mred/private/wx/gtk/canvas.rkt index ec3011a1..1991a0dd 100644 --- a/collects/mred/private/wx/gtk/canvas.rkt +++ b/collects/mred/private/wx/gtk/canvas.rkt @@ -312,15 +312,13 @@ (define/private (reset-dc) (send dc reset-backing-retained) - (if auto-scroll? - (send dc reset-dc - (if virtual-width - (gtk_adjustment_get_value hscroll-adj) - 0) - (if virtual-height - (gtk_adjustment_get_value vscroll-adj) - 0)) - (void))) + (send dc set-auto-scroll + (if virtual-width + (gtk_adjustment_get_value hscroll-adj) + 0) + (if virtual-height + (gtk_adjustment_get_value vscroll-adj) + 0))) (define/override (internal-on-client-size w h) (reset-dc)) diff --git a/collects/mred/private/wx/gtk/dc.rkt b/collects/mred/private/wx/gtk/dc.rkt index 2836b8f6..3b9f69a2 100644 --- a/collects/mred/private/wx/gtk/dc.rkt +++ b/collects/mred/private/wx/gtk/dc.rkt @@ -33,29 +33,7 @@ (values (unbox xb) (unbox yb)))) (define/override (queue-backing-flush) - (send canvas queue-backing-flush)) - - (define suspend-count 0) - (define req #f) - - (define/override (suspend-flush) - (as-entry - (lambda () - #; - (when (zero? suspend-count) - (set! req (request-flush-delay (send canvas get-cocoa-window)))) - (set! suspend-count (add1 suspend-count)) - (super suspend-flush)))) - - (define/override (resume-flush) - (as-entry - (lambda () - (set! suspend-count (sub1 suspend-count)) - #; - (when (and (zero? suspend-count) req) - (cancel-flush-delay req) - (set! req #f)) - (super resume-flush)))))) + (send canvas queue-backing-flush)))) (define (do-backing-flush canvas dc win) (send dc on-backing-flush diff --git a/collects/tests/gracket/draw.rkt b/collects/tests/gracket/draw.rkt index 8c738956..5bfdca03 100644 --- a/collects/tests/gracket/draw.rkt +++ b/collects/tests/gracket/draw.rkt @@ -967,7 +967,7 @@ (send dc clear) (send dc set-alpha current-alpha) - (send dc set-rotation current-rotation) + (send dc set-rotation (- current-rotation)) (send dc set-initial-matrix (if current-skew? (vector 1 0 0.2 1 3 0) (vector 1 0 0 1 0 0)))