fix refresh' on window<%>'s other than `canvas%'s

This commit is contained in:
Matthew Flatt 2011-08-12 17:02:43 -06:00
parent ca92376381
commit 456e9befd3
12 changed files with 53 additions and 13 deletions

View File

@ -247,6 +247,7 @@
is-auto-scroll? get-virtual-width get-virtual-height
reset-auto-scroll
refresh-for-autoscroll
refresh-all-children
flush)
(define vscroll-ok? (and (or (memq 'vscroll style)
@ -313,9 +314,12 @@
(define/public (get-flush-window)
(get-cocoa-window))
(define/private (refresh-one)
(queue-paint))
(define/override (refresh)
;; can be called from any thread, including the event-pump thread
(queue-paint))
(refresh-one)
(refresh-all-children))
(define/public (queue-backing-flush)
;; called atomically (not expecting exceptions)
@ -387,7 +391,7 @@
(send dc set-auto-scroll
(if (is-auto-scroll?) (scroll-pos h-scroller) 0)
(if (is-auto-scroll?) (scroll-pos v-scroller) 0)))
(when refresh? (refresh)))
(when refresh? (refresh-one)))
(define/override (get-client-size xb yb)
(super get-client-size xb yb)
@ -686,7 +690,7 @@
(or ((NSSize-width s2) . < . (NSSize-width s1))
((NSSize-height s2) . < . (NSSize-height s1)))))
(begin
(queue-window-event this (lambda () (refresh)))
(queue-window-event this (lambda () (refresh-one)))
#t)))
(define/public (do-scroll direction scroller)
@ -765,7 +769,7 @@
(let ([pos (tell #:type _NSInteger content-cocoa indexOfSelectedItem)])
(when (pos . > . -1)
(queue-window-event this (lambda () (on-combo-select pos)))))
(refresh))
(refresh-one))
(define current-text "")
(define/public (set-combo-text t)

View File

@ -409,6 +409,10 @@
(set! saved-child child)
(on-new-child child #t))
(define/override (refresh-all-children)
(when saved-child
(send saved-child refresh)))
(define/override (set-cursor c)
(when saved-child
(send saved-child set-cursor c)))

View File

@ -84,6 +84,10 @@
(define/override (show on?)
(super show on?)
(fix-dc))
(define/override (refresh-all-children)
(for ([child (in-list children)])
(send child refresh)))
(define/public (set-item-cursor x y) (void))))

View File

@ -771,7 +771,9 @@
(queue-window-event this thunk))))
(define/public (center a b) (void))
(define/public (refresh) (void))
(define/public (refresh) (refresh-all-children))
(define/public (refresh-all-children) (void))
(define/public (screen-to-client xb yb)
(let ([p (tell #:type _NSPoint (get-cocoa-content)

View File

@ -257,7 +257,7 @@
set-auto-size
adjust-client-delta infer-client-delta
is-auto-scroll? get-virtual-width get-virtual-height
refresh-for-autoscroll
refresh-for-autoscroll refresh-all-children
get-eventspace)
(define is-combo? (memq 'combo style))
@ -509,8 +509,11 @@
(define/public (flush)
(flush-display))
(define/override (refresh)
(define/private (refresh-one)
(queue-paint))
(define/override (refresh)
(refresh-one)
(refresh-all-children))
(define/public (queue-backing-flush)
;; called atomically
@ -525,7 +528,7 @@
(define/private (reset-dc)
(send dc reset-backing-retained)
(refresh)
(refresh-one)
(send dc set-auto-scroll
(if (get-virtual-width)
(gtk_adjustment_get_value hscroll-adj)

View File

@ -320,6 +320,10 @@
(define/override (register-child-in-parent on?)
(void))
(define/override (refresh-all-children)
(when saved-child
(send saved-child refresh)))
(define/override (direct-show on?)
;; atomic mode
(if on?

View File

@ -60,6 +60,10 @@
(cons child children)
(remq child children))))))
(define/override (refresh-all-children)
(for ([child (in-list children)])
(send child refresh)))
(define/public (set-item-cursor x y) (void))))
(define (panel-container-mixin %)

View File

@ -669,7 +669,9 @@
(lambda (thunk) (queue-window-event this thunk)))))
(define/public (center a b) (void))
(define/public (refresh) (void))
(define/public (refresh) (refresh-all-children))
(define/public (refresh-all-children) (void))
(define/public (screen-to-client x y)
(let ([xb (box 0)]

View File

@ -308,7 +308,7 @@
(flush-display))
(define/public (on-paint) (void))
(define/override (refresh) (queue-paint))
(define/override (refresh-one) (queue-paint))
(define/public (queue-backing-flush)
(unless for-gl?
@ -409,7 +409,7 @@
(define/override (reset-dc-for-autoscroll)
(reset-dc)
(refresh))
(refresh-one))
(define/override (get-virtual-h-pos)
(GetScrollPos canvas-hwnd SB_HORZ))

View File

@ -404,6 +404,10 @@
(void (SetCursor (get-wait-cursor)))
(when saved-child
(reset-cursor-in-child saved-child default))))
(define/override (refresh-all-children)
(when saved-child
(send saved-child refresh)))
(define/override (get-dialog-level) 0)

View File

@ -81,6 +81,10 @@
(for ([c (in-list children)])
(send c show-children)))
(define/override (refresh-all-children)
(for ([child (in-list children)])
(send child refresh)))
(define/override (wants-mouse-capture? control-hwnd)
(ptr-equal? (get-client-hwnd) control-hwnd))

View File

@ -339,7 +339,7 @@
(unless (and (= w -1) (= h -1))
(on-resized))
(queue-on-size)
(refresh))
(refresh-one))
(define/public (move x y)
(set-size x y -1 -1))
@ -405,7 +405,12 @@
(define/public (is-frame?) #f)
(define/public (refresh) (void))
(define/public (refresh-one) (void))
(define/public (refresh)
(refresh-one)
(refresh-all-children))
(define/public (refresh-all-children) (void))
(define/public (on-resized) (void))
(define/public (screen-to-client x y)