38 lines
1.2 KiB
Plaintext
38 lines
1.2 KiB
Plaintext
|
;; a function to have a delta functionnality with gwm
|
||
|
|
||
|
; how to use it: in your .profile, before any deco, do
|
||
|
; (load 'deltabutton)
|
||
|
; (: standard-behavior
|
||
|
; (state-make
|
||
|
; (on (buttonpress 1 alone) (if (deltabutton)
|
||
|
; (progn (raise-window)(move-window))
|
||
|
; (raise-window)))
|
||
|
; standard-behavior
|
||
|
; ))
|
||
|
; (reparse-standard-behaviors)
|
||
|
|
||
|
(defaults-to deltabutton.delta 4)
|
||
|
|
||
|
(de abs (n)
|
||
|
(if (> n 0) n
|
||
|
(- n)))
|
||
|
|
||
|
(de deltabutton ()
|
||
|
(if (and (> (current-event-code) 0) ; last event received
|
||
|
(< (current-event-modifier) 256)) ; is a buttonpress
|
||
|
(tag DELTABUTTON
|
||
|
(: e-m (# (current-event-code) '(0 1 2 4)))
|
||
|
(: e-x (current-event-x))
|
||
|
(: e-y (current-event-y))
|
||
|
(: m-p (current-mouse-position))
|
||
|
(while (= (/ (# 2 m-p) 256) e-m) ; the button is still pressed
|
||
|
(: dx (abs (- (# 0 m-p) e-x)))
|
||
|
(: dy (abs (- (# 1 m-p) e-y)))
|
||
|
(if (or (> dx deltabutton.delta)
|
||
|
(> dy deltabutton.delta))
|
||
|
(exit DELTABUTTON t))
|
||
|
(: m-p (current-mouse-position)))
|
||
|
()))
|
||
|
)
|
||
|
|