restore auto-scroll canvases; fix text-rotation bug

This commit is contained in:
Matthew Flatt 2010-08-06 13:18:23 -06:00
parent 9f36c96960
commit cc55bd7e93
6 changed files with 22 additions and 38 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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))

View File

@ -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

View File

@ -245,8 +245,11 @@
(define scroll-dy 0.0)
(define/override (set-auto-scroll dx dy)
(set! scroll-dx (- dx))
(set! scroll-dy (- dy)))
(unless (and (= scroll-dx (- dx))
(= scroll-dy (- dy)))
(set! scroll-dx (- dx))
(set! scroll-dy (- dy))
(reset-matrix)))
(def/public (set-scale [real? sx] [real? sy])
(unless (and (equal? scale-x sx)
@ -974,7 +977,7 @@
(cond
[(and draw? (not next-s))
(g_object_unref layout)
(void)]
(when rotate? (cairo_restore cr))]
[else
(let ([logical (make-PangoRectangle 0 0 0 0)])
(pango_layout_get_extents layout #f logical)

View File

@ -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)))