restore auto-scroll canvases; fix text-rotation bug

original commit: cc55bd7e93a521456d5b4cd17a061df4a447319d
This commit is contained in:
Matthew Flatt 2010-08-06 13:18:23 -06:00
parent a13829397f
commit ad1eed5071
5 changed files with 16 additions and 35 deletions

View File

@ -264,7 +264,10 @@
(define/public (fix-dc [refresh? #t]) (define/public (fix-dc [refresh? #t])
(when (dc . is-a? . dc%) (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))) (when refresh? (refresh)))
(define/override (get-client-size xb yb) (define/override (get-client-size xb yb)

View File

@ -29,7 +29,8 @@
(class (dc-mixin bitmap-dc-backend%) (class (dc-mixin bitmap-dc-backend%)
(inherit call-with-cr-lock (inherit call-with-cr-lock
internal-get-bitmap internal-get-bitmap
internal-set-bitmap) internal-set-bitmap
reset-cr)
(super-new) (super-new)
@ -91,6 +92,7 @@
(internal-set-bitmap bm #t)) (internal-set-bitmap bm #t))
(let ([cr (super get-cr)]) (let ([cr (super get-cr)])
(set! retained-cr cr) (set! retained-cr cr)
(reset-cr cr)
cr)))) cr))))
(define/override (release-cr cr) (define/override (release-cr cr)

View File

@ -312,15 +312,13 @@
(define/private (reset-dc) (define/private (reset-dc)
(send dc reset-backing-retained) (send dc reset-backing-retained)
(if auto-scroll? (send dc set-auto-scroll
(send dc reset-dc
(if virtual-width (if virtual-width
(gtk_adjustment_get_value hscroll-adj) (gtk_adjustment_get_value hscroll-adj)
0) 0)
(if virtual-height (if virtual-height
(gtk_adjustment_get_value vscroll-adj) (gtk_adjustment_get_value vscroll-adj)
0)) 0)))
(void)))
(define/override (internal-on-client-size w h) (define/override (internal-on-client-size w h)
(reset-dc)) (reset-dc))

View File

@ -33,29 +33,7 @@
(values (unbox xb) (unbox yb)))) (values (unbox xb) (unbox yb))))
(define/override (queue-backing-flush) (define/override (queue-backing-flush)
(send canvas 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))))))
(define (do-backing-flush canvas dc win) (define (do-backing-flush canvas dc win)
(send dc on-backing-flush (send dc on-backing-flush

View File

@ -967,7 +967,7 @@
(send dc clear) (send dc clear)
(send dc set-alpha current-alpha) (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? (send dc set-initial-matrix (if current-skew?
(vector 1 0 0.2 1 3 0) (vector 1 0 0.2 1 3 0)
(vector 1 0 0 1 0 0))) (vector 1 0 0 1 0 0)))