try out Asumu's suggestion, namely if there is a keyboard event,

then hide the definitions/interactions labels for a while (2
seconds currently). also, when the 2 seconds expires, fade back
in instead of just appearing immediately
This commit is contained in:
Robby Findler 2012-07-26 18:58:42 -05:00
parent af3d52f9b5
commit 9356e8e949

View File

@ -1759,6 +1759,36 @@
(inherit get-admin invalidate-bitmap-cache get-dc
dc-location-to-editor-location)
(define inside? #f)
(define recently-typed? #f)
(define fade-amount 1)
(define recently-typed-timer
(new timer%
[notify-callback
(λ ()
(update-recently-typed #f)
(unless (equal? fade-amount 1)
(cond
[inside?
(set! fade-amount (+ fade-amount 1/10))
(send recently-typed-timer start 100 #t)]
[else
(set! fade-amount 1)])
(invalidate-bitmap-cache 0 0 'display-end 'display-end)))]))
(define/override (on-char evt)
(when inside?
(update-recently-typed #t)
(set! fade-amount 0)
(send recently-typed-timer stop)
(send recently-typed-timer start 2000 #t))
(super on-char evt))
(define/private (update-recently-typed nv)
(unless (equal? recently-typed? nv)
(set! recently-typed? nv)
(invalidate-bitmap-cache 0 0 'display-end 'display-end)))
(define/override (on-event evt)
(define new-inside?
(cond
@ -1794,7 +1824,8 @@
(define/override (on-paint before? dc left top right bottom dx dy draw-caret)
(super on-paint before? dc left top right bottom dx dy draw-caret)
(unless before?
(when inside?
(when (and inside?
(not recently-typed?))
(define admin (get-admin))
(when admin
(send admin get-view bx by bw bh)
@ -1808,7 +1839,7 @@
left top right bottom
tx ty (+ tx tw) (+ ty th))
(send dc set-text-foreground "black")
(send dc set-alpha .5)
(send dc set-alpha (* fade-amount .5))
(send dc draw-text id (+ dx tx) (+ dy ty))
(send dc set-alpha α)
(send dc set-text-foreground fore))