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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -60,6 +60,10 @@
(cons child children) (cons child children)
(remq 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/public (set-item-cursor x y) (void))))
(define (panel-container-mixin %) (define (panel-container-mixin %)

View File

@ -669,7 +669,9 @@
(lambda (thunk) (queue-window-event this thunk))))) (lambda (thunk) (queue-window-event this thunk)))))
(define/public (center a b) (void)) (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) (define/public (screen-to-client x y)
(let ([xb (box 0)] (let ([xb (box 0)]

View File

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

View File

@ -405,6 +405,10 @@
(when saved-child (when saved-child
(reset-cursor-in-child saved-child default)))) (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) (define/override (get-dialog-level) 0)
(define/public (frame-relative-dialog-status win) (define/public (frame-relative-dialog-status win)

View File

@ -81,6 +81,10 @@
(for ([c (in-list children)]) (for ([c (in-list children)])
(send c show-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) (define/override (wants-mouse-capture? control-hwnd)
(ptr-equal? (get-client-hwnd) control-hwnd)) (ptr-equal? (get-client-hwnd) control-hwnd))

View File

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