1
#| viewport-extras.jl -- extra viewport commands
3
$Id: viewport-extras.jl,v 1.1 2000/12/06 21:33:28 jsh Exp $
5
Contributed by: Dams Nad� <anvil@amin.unice.fr>
8
(define-structure sawfish.wm.commands.viewport-extras ()
14
;; Returns (cons next-x next-y) from current screen-viewport
16
(let* ((port (screen-viewport))
19
(xmax (- (car viewport-dimensions) 1))
20
(ymax (- (cdr viewport-dimensions) 1)))
21
(cond ((not (= x xmax)) (cons (+ 1 x) y))
22
((= y ymax) (cons 0 0))
23
(t (cons 0 (+ y 1))))))
25
;; Returns (cons prev-x prev-y) from current screen-viewport
26
(define (previous-coords)
27
(let* ((port (screen-viewport))
30
(xmax (- (car viewport-dimensions) 1))
31
(ymax (- (cdr viewport-dimensions) 1)))
32
(cond ((not (= 0 x)) (cons (- x 1) y))
33
((= y 0) (cons xmax ymax))
34
(t (cons xmax (- y 1))))))
36
;; Move window & screen-viewport
37
(define (set-window-and-viewport w x y)
38
(set-window-viewport w x y)
39
(set-screen-viewport x y))
41
(define (move-viewport-next)
42
"Move to the next viewport."
43
(let ((nextcoords (next-coords)))
44
(set-screen-viewport (car nextcoords) (cdr nextcoords))))
46
(define (move-viewport-previous)
47
"Move to the previous viewport."
48
(let ((prevcoords (previous-coords)))
49
(set-screen-viewport (car prevcoords) (cdr prevcoords))))
51
(define (move-window-next w)
52
"Move the window to the next viewport."
53
(let ((nexts (next-coords)))
54
(set-window-and-viewport w (car nexts) (cdr nexts))))
56
(define (move-window-previous w)
57
"Move the window to the previous viewport."
58
(let ((prevs (previous-coords)))
59
(set-window-and-viewport w (car prevs) (cdr prevs))))
62
(define-command 'move-viewport-next move-viewport-next)
63
(define-command 'move-viewport-previous move-viewport-previous)
64
(define-command 'move-window-previous move-window-previous #:spec "%W")
65
(define-command 'move-window-next move-window-next #:spec "%W"))