fix the initial frame position code for the multiple monitors case
This commit is contained in:
parent
5bd969693c
commit
83e70af006
|
@ -286,8 +286,8 @@
|
||||||
|
|
||||||
(define/private (find-distance x y mon)
|
(define/private (find-distance x y mon)
|
||||||
(define-values (delta-x delta-y)
|
(define-values (delta-x delta-y)
|
||||||
(let-values ([(l t) (get-display-left-top-inset #:monitor 0)])
|
(let-values ([(l t) (get-display-left-top-inset #:monitor mon)])
|
||||||
(values (- x l) (- y t))))
|
(values (+ x l) (+ y t))))
|
||||||
(values delta-x
|
(values delta-x
|
||||||
delta-y
|
delta-y
|
||||||
(sqrt (+ (* delta-x delta-x)
|
(sqrt (+ (* delta-x delta-x)
|
||||||
|
@ -296,21 +296,18 @@
|
||||||
(inherit maximize)
|
(inherit maximize)
|
||||||
(let ()
|
(let ()
|
||||||
(define-values (maximized? w h) (apply values (preferences:get size-preferences-key)))
|
(define-values (maximized? w h) (apply values (preferences:get size-preferences-key)))
|
||||||
(define-values (x y)
|
(define-values (x y origin-still-visible?)
|
||||||
(cond
|
(cond
|
||||||
[position-preferences-key
|
[position-preferences-key
|
||||||
(define-values (monitor delta-x delta-y) (apply values (preferences:get position-preferences-key)))
|
(define-values (monitor delta-x delta-y) (apply values (preferences:get position-preferences-key)))
|
||||||
(define-values (l t) (get-display-left-top-inset #:monitor monitor))
|
(define-values (l t) (get-display-left-top-inset #:monitor monitor))
|
||||||
(define-values (m-w m-h) (get-display-size))
|
(define-values (mw mh) (get-display-size #:monitor monitor))
|
||||||
(values (- delta-x l) (- delta-y t))]
|
(values (- delta-x l)
|
||||||
|
(- delta-y t)
|
||||||
|
(and (<= 0 l mw)
|
||||||
|
(<= 0 t mh)))]
|
||||||
[else
|
[else
|
||||||
(values #f #f)]))
|
(values #f #f #f)]))
|
||||||
(define (window-origin-visible? x y)
|
|
||||||
(for/or ([m (in-range 0 (get-display-count))])
|
|
||||||
(define-values (mw mh) (get-display-size #:monitor m))
|
|
||||||
(define-values (mx my) (get-display-left-top-inset #:monitor m))
|
|
||||||
(and (<= (- mx) x (+ mx mw))
|
|
||||||
(<= (- my) y (+ my mh)))))
|
|
||||||
(define (already-one-there? x y w h)
|
(define (already-one-there? x y w h)
|
||||||
(for/or ([fr (in-list (get-top-level-windows))])
|
(for/or ([fr (in-list (get-top-level-windows))])
|
||||||
(and (equal? x (send fr get-x))
|
(and (equal? x (send fr get-x))
|
||||||
|
@ -321,7 +318,7 @@
|
||||||
(cond
|
(cond
|
||||||
[(or (and (already-one-there? x y w h)
|
[(or (and (already-one-there? x y w h)
|
||||||
(not maximized?))
|
(not maximized?))
|
||||||
(not (window-origin-visible? x y)))
|
(not origin-still-visible?))
|
||||||
;; these are the situations where we look for a different position of the window
|
;; these are the situations where we look for a different position of the window
|
||||||
(let loop ([n 50]
|
(let loop ([n 50]
|
||||||
[x 0]
|
[x 0]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user