1
1
;; move-resize.jl -- interactive moving and resizing of windows
2
;; $Id: move-resize.jl,v 1.85 2001/06/05 03:20:34 jsh Exp $
2
;; $Id: move-resize.jl,v 1.91 2002/05/29 06:39:02 jsh Exp $
4
4
;; Copyright (C) 1999 John Harper <john@dcs.warwick.ac.uk>
49
49
;; * obey the aspect ratio size hints
51
(defcustom move-outline-mode 'opaque
52
"How windows being moved are animated: \\w"
58
(defcustom resize-outline-mode 'opaque
59
"How windows being resized are animated: \\w"
65
(defcustom move-resize-raise-window nil
66
"Raise windows when they are moved or resized."
51
(defvar move-outline-mode 'opaque
52
"How windows being moved are animated, either `opaque' or `box'")
54
(defvar resize-outline-mode 'opaque
55
"How windows being resized are animated, either `opaque' or `box'")
57
(defvar move-resize-raise-window nil
58
"Raise windows when they are moved or resized.")
70
60
(defcustom move-show-position nil
71
61
"Show current position of windows while moving."
80
(defcustom resize-edge-mode 'border
81
"How to choose window edges when resizing: \\w"
82
:type (choice region border grab border-grab)
86
(defcustom move-snap-edges t
87
"Snap window position to edges of other windows while moving."
91
(defcustom move-snap-epsilon 8
92
"Proximity in pixels before snapping to a window edge."
94
:depends move-snap-edges
70
(defvar resize-edge-mode 'border-grab
71
"How to choose window edges when resizing. One of `region', `border',
72
`grab', `border-grab'")
74
(defcustom move-snap-epsilon 12
75
"Distance in pixels before window edges align with each other."
95
77
:type (number 0 64)
98
(defcustom move-snap-mode 'resistance
99
"How to snap together window edges: \\w"
101
:depends move-snap-edges
102
:type (choice magnetism resistance attraction)
105
(defcustom move-snap-ignored-windows nil
106
"Snap to otherwise-ignored windows."
108
:depends move-snap-edges
112
(defcustom move-resize-inhibit-configure nil
113
"Only update window contents after it has stopped moving."
78
:tooltip "When moving a window, this option lets you align one of its edges with an edge of another window.")
80
(defvar move-snap-mode 'resistance
81
"How to snap together window edges, one of `magnetism', `resistance', or
84
(defvar move-snap-ignored-windows nil
85
"Snap to otherwise-ignored windows.")
87
(defvar move-resize-inhibit-configure nil
88
"Only update window contents after it has stopped moving.")
118
90
(defvar move-resize-map (bind-keys (make-keymap)
119
"Any-Off" (lambda () (finished))
91
"Any-Off1" (lambda () (finished))
92
"Any-Off2" (lambda () (finished))
93
"Any-Off3" (lambda () (finished))
120
94
"Any-Move" (lambda () (motion))
121
95
"Any-ESC" (lambda () (cancel))
122
96
"Any-RET" (lambda () (finished))
318
292
(when (memq 'vertical move-resize-directions)
319
293
(setq move-resize-y (+ move-resize-old-y
320
294
(- ptr-y move-resize-old-ptr-y))))
321
(when move-snap-edges
295
(when (> move-snap-epsilon 0)
323
297
((coords (snap-window-position-to-edges
324
298
move-resize-window (cons move-resize-x
331
305
(setq move-resize-y (cdr coords)))))
332
306
((eq move-resize-function 'resize)
334
((x-base (or (cdr (or (assq 'base-width move-resize-hints)
335
(assq 'min-width move-resize-hints))) 1))
308
((x-base (or (cdr (assq 'base-width move-resize-hints)) 0))
336
309
(x-inc (or (cdr (assq 'width-inc move-resize-hints)) 1))
337
(y-base (or (cdr (or (assq 'base-height move-resize-hints)
338
(assq 'min-height move-resize-hints))) 1))
310
(y-base (or (cdr (assq 'base-height move-resize-hints)) 0))
339
311
(y-inc (or (cdr (assq 'height-inc move-resize-hints)) 1)))
340
312
(when (memq resize-edge-mode '(grab border-grab))
341
313
(add-edges ptr-x ptr-y))