slideshow: fix error exit with interactive
Compensate for lost `on-subwindow-close` notifications.
This commit is contained in:
parent
4f5e10d730
commit
36d033bf22
|
@ -146,7 +146,8 @@
|
||||||
(set! click-regions (cons cr click-regions)))
|
(set! click-regions (cons cr click-regions)))
|
||||||
|
|
||||||
(define (add-interactive! ir)
|
(define (add-interactive! ir)
|
||||||
(set! interactives (hash-set interactives ir #t)))
|
(set! interactives (hash-set interactives ir #t))
|
||||||
|
(send c queue-interactive-check))
|
||||||
|
|
||||||
(define (make-quad l)
|
(define (make-quad l)
|
||||||
(cond
|
(cond
|
||||||
|
@ -862,6 +863,8 @@
|
||||||
(set! interactives (for/hash ([k (in-hash-keys prefetched-interactives)])
|
(set! interactives (for/hash ([k (in-hash-keys prefetched-interactives)])
|
||||||
(values (shift-interact k dx dy)
|
(values (shift-interact k dx dy)
|
||||||
#t)))
|
#t)))
|
||||||
|
(when (positive? (hash-count prefetched-interactives))
|
||||||
|
(queue-interactive-check))
|
||||||
(send f set-blank-cursor (null? click-regions)))))
|
(send f set-blank-cursor (null? click-regions)))))
|
||||||
(define/override (on-size w h)
|
(define/override (on-size w h)
|
||||||
(unless resizing-frame?
|
(unless resizing-frame?
|
||||||
|
@ -970,6 +973,22 @@
|
||||||
(unless on?
|
(unless on?
|
||||||
(swap-interactives! interactives #hash()))))
|
(swap-interactives! interactives #hash()))))
|
||||||
|
|
||||||
|
(define/public (queue-interactive-check)
|
||||||
|
;; If a superwindow is hidden before we ere get a notification
|
||||||
|
;; that the superwindow was visible, then we don't get a
|
||||||
|
;; notification that the window is hidden. Use a low-priority
|
||||||
|
;; callback to double-check.
|
||||||
|
(queue-callback (lambda ()
|
||||||
|
(when (positive? (hash-count interactives))
|
||||||
|
(let loop ([p this])
|
||||||
|
(cond
|
||||||
|
[(not p) (void)]
|
||||||
|
[(send p is-shown?) (loop (send p get-parent))]
|
||||||
|
[else
|
||||||
|
;; some superwindow is hidden
|
||||||
|
(swap-interactives! interactives #hash())]))))
|
||||||
|
#f))
|
||||||
|
|
||||||
(define/public (call-with-suspended-interactive thunk)
|
(define/public (call-with-suspended-interactive thunk)
|
||||||
(define i interactives)
|
(define i interactives)
|
||||||
(swap-interactives! i #hash())
|
(swap-interactives! i #hash())
|
||||||
|
|
Loading…
Reference in New Issue
Block a user