partial fix for the bug where tabs scroll positions move around when switching tabs

svn: r1913
This commit is contained in:
Robby Findler 2006-01-21 18:12:56 +00:00
parent f1c0a36200
commit 4b27eba829

View File

@ -2135,21 +2135,17 @@ module browser threading seems wrong.
(define/private (save-visible-tab-regions) (define/private (save-visible-tab-regions)
(define (get-visible-regions txt) (define (get-visible-regions txt)
(map (λ (canvas) (get-visible-region txt canvas)) (map (λ (canvas)
(let-values ([(x y w h _) (get-visible-region canvas)])
(list x y w h)))
(send txt get-canvases))) (send txt get-canvases)))
(define (get-visible-region txt canvas)
(let ([xb (box 0)] (send current-tab set-visible-ints
[yb (box 0)] (get-visible-regions interactions-text)
[wb (box 0)] interactions-shown?)
[hb (box 0)]) (send current-tab set-visible-defs
(send canvas call-as-primary-owner (get-visible-regions definitions-text)
(λ () definitions-shown?)
(let ([admin (send txt get-admin)])
(when admin
(send admin get-view xb yb wb hb)))))
(list (unbox xb) (unbox yb) (unbox wb) (unbox hb))))
(send current-tab set-visible-ints (get-visible-regions interactions-text) interactions-shown?)
(send current-tab set-visible-defs (get-visible-regions definitions-text) definitions-shown?)
(send current-tab set-focus-d/i (send current-tab set-focus-d/i
(if (ormap (λ (x) (send x has-focus?)) interactions-canvases) (if (ormap (λ (x) (send x has-focus?)) interactions-canvases)
'ints 'ints
@ -2162,20 +2158,23 @@ module browser threading seems wrong.
(when (equal? (length canvases) (length regions)) (when (equal? (length canvases) (length regions))
(for-each (λ (c r) (set-visible-region txt c r)) canvases regions))))) (for-each (λ (c r) (set-visible-region txt c r)) canvases regions)))))
(define (set-visible-region txt canvas region) (define (set-visible-region txt canvas region)
(send canvas scroll-to (let ([admin (send txt get-admin)])
;(printf "setting to ~s\n" region)
(send admin scroll-to
(first region) (first region)
(second region) (second region)
(third region) (third region)
(fourth region) (fourth region))
#t)) #;
(let-values ([(x y w h _) (get-visible-region canvas)])
(let-values ([(vi is?) (send current-tab get-visible-ints)]) (printf " set to ~s\n" (list x y w h)))))
(set-visible-regions interactions-text vi) (let-values ([(vi is?) (send current-tab get-visible-ints)]
(set! interactions-shown? is?)) [(vd ds?) (send current-tab get-visible-defs)])
(let-values ([(vd ds?) (send current-tab get-visible-defs)]) (set! interactions-shown? is?)
(set-visible-regions definitions-text vd) (set! definitions-shown? ds?)
(set! definitions-shown? ds?))
(update-shown) (update-shown)
(set-visible-regions definitions-text vd)
(set-visible-regions interactions-text vi))
(case (send current-tab get-focus-d/i) (case (send current-tab get-focus-d/i)
[(defs) (send (car definitions-canvases) focus)] [(defs) (send (car definitions-canvases) focus)]
[(ints) (send (car interactions-canvases) focus)])) [(ints) (send (car interactions-canvases) focus)]))