about summary refs log tree commit diff stats
path: root/dwm.c
Commit message (Expand)AuthorAgeFilesLines
* restored y-coordinate fixing of client windowsAnselm R Garbe2008-06-171-1/+2
* minor fixes towards 5.0Anselm R Garbe2008-06-151-6/+8
* removed explicit warp in movemouseAnselm R Garbe2008-06-141-5/+0
* removed the ButtonPressMask for root windows as wellAnselm R Garbe2008-06-141-1/+1
* removed root window click handlingAnselm R Garbe2008-06-141-2/+2
* removed font and color definitionsAnselm R Garbe2008-06-141-10/+8
* fixed tag click handling, however ClkRootWin doesn't work for meAnselm R Garbe2008-06-121-6/+7
* some bugfixes of the patch application yesterdayAnselm R Garbe2008-06-121-12/+12
* integrated yiyus mouse.diff (though the bar click handling is slightly broken...Anselm R Garbe2008-06-111-49/+52
* made Xinerama screen index customizableAnselm R Garbe2008-06-111-4/+4
* removed trailing spaces reported by SoleenAnselm R Garbe2008-06-111-3/+3
* crash fixAnselm R Garbe2008-06-111-1/+1
* made lt visible again in config.def.hAnselm R Garbe2008-06-111-3/+2
* added nsz' patchAnselm R Garbe2008-06-111-1/+0
* added SHCMD support for pipe-based commands due the new spawn() versioAnselm R Garbe2008-06-111-0/+1
* using foo layout during cleanup (suggested by Gottox), add Arg->v handling fo...Anselm R Garbe2008-06-111-1/+1
* lt will point to a foo-layout during cleanup now (Gottox' suggestion), and to...Anselm R Garbe2008-06-111-1/+6
* integrated Peter Hartlich's patch, removed const char *c from union, simplifi...Anselm R Garbe2008-06-111-22/+5
* applied anydot's patchset.diffAnselm R Garbe2008-06-111-174/+169
* final version -- Gottox verified it using the test driverarg@suckless.org2008-06-091-1/+1
* revert of introduced problemarg@suckless.org2008-06-091-1/+1
* applied nsz' textnw patch thank youarg@suckless.org2008-06-091-4/+6
* updated the for-loop with Gottox' proposalarg@suckless.org2008-06-091-1/+1
* minor changearg@suckless.org2008-06-061-2/+1
* applied nsz's patches (many thanks!)arg@suckless.org2008-06-041-7/+4
* small change to drawtextarg@suckless.org2008-06-021-4/+3
* fixed the tile() issue with xpdfAnselm R Garbe2008-06-011-2/+2
* using anydot's memcpy-approach in drawtext, however it still looks awkward to meAnselm R Garbe2008-06-011-1/+1
* Gottox' drawtext simplificationAnselm R Garbe2008-06-011-8/+2
* applied noviewprev.diff, fix.diff and unusedflags.diffAnselm R Garbe2008-06-011-23/+16
* fixAnselm R Garbe2008-05-311-1/+1
* lt->arrange in mfactAnselm R Garbe2008-05-311-1/+1
* isfixed implies isfloatingAnselm R Garbe2008-05-301-1/+1
* applied nibbles fixes, slightly modifiedAnselm R Garbe2008-05-291-2/+2
* applied yiyus tip patch from tueAnselm R Garbe2008-05-291-24/+24
* core dump fix in cleanupAnselm R Garbe2008-05-281-1/+1
* updated the initial comment to reflect the use of bit arraysAnselm R Garbe2008-05-261-2/+2
* slight changesAnselm R Garbe2008-05-261-6/+3
* removed bx and bw, unnecessaryAnselm R Garbe2008-05-261-10/+8
* renamed domax into ismaxAnselm R Garbe2008-05-261-8/+8
* simplified tile()Anselm R Garbe2008-05-261-37/+15
* removed Layout->updategeom, unnecessaryAnselm R Garbe2008-05-261-25/+13
* removed TEXTWAnselm R Garbe2008-05-261-10/+5
* applied yiyus domax patch with slight modificationsAnselm R Garbe2008-05-261-40/+36
* replaced isvisible with a macroAnselm R Garbe2008-05-221-17/+12
* removed emalloczAnselm R Garbe2008-05-221-11/+2
* removed debug output, sanitized tag limit checkAnselm R Garbe2008-05-221-11/+2
* Key.mod is uint, Client.[old]bw is intAnselm R Garbe2008-05-221-2/+2
* s/unsigned long/ulong/Anselm R Garbe2008-05-221-10/+11
* s/nextunfloating/nexttiled/, changed zoom() behaviorAnselm R Garbe2008-05-221-12/+12
n>me) (forget-value! a2 me) (process-new-value)) (define (me request) (cond ((eq? request 'I-have-a-value) process-new-value) ((eq? request 'I-lost-my-value) process-forget-value) (else (error "Unknown request -- ADDER" request)))) (connect a1 me) (connect a2 me) (connect sum me) me) (define (multiplier m1 m2 product) (define (process-new-value) (cond ((or (if (has-value? m1) (= (get-value m1) 0) #f) (if (has-value? m2) (= (get-value m2) 0) #f)) (set-value! product 0 me)) ((and (has-value? m1) (has-value? m2)) (set-value! product (* (get-value m1) (get-value m2)) me)) ((and (has-value? m1) (has-value? product)) (set-value! m2 (/ (get-value product) (get-value m1)) me)) ((and (has-value? m2) (has-value? product)) (set-value! m1 (/ (get-value product) (get-value m2)) me)))) (define (process-forget-value) (forget-value! product me) (forget-value! m1 me) (forget-value! m2 me) (process-new-value)) (define (me request) (cond ((eq? request 'I-have-a-value) process-new-value) ((eq? request 'I-lost-my-value) process-forget-value) (else (error "Unknown request -- MULTIPLIER" request)))) (connect m1 me) (connect m2 me) (connect product me) me) (define (constant value connector) (define (me request) (error "Unknown request -- CONSTANT" request)) (connect connector me) (set-value! connector value me) me) (define (probe name connector) (define (process-new-value) (display "Probe: ") (display name) (display " = ") (display (get-value connector)) (newline)) (define (process-forget-value) (display "Probe: ") (display name) (display " = ") (display "?") (newline)) (define (me request) (cond ((eq? request 'I-have-a-value) process-new-value) ((eq? request 'I-lost-my-value) process-forget-value) (else (error "Unknown request -- PROBE" request)))) (connect connector me) me) ;; syntactic interface to connector objects (define (has-value? connector) (connector 'has-value?)) (define (get-value connector) (connector 'value)) (define (forget-value! connector retractor) ((connector 'forget) retractor)) (define (set-value! connector new-value informant) ((connector 'set-value!) new-value informant)) (define (connect connector new-constraint) ((connector 'connect) new-constraint)) ;; connector object generator. (define (make-connector) (let ((value #f) (informant #f) (constraints '())) (define (set-my-value newval setter) (cond ((not (has-value? me)) (set! value newval) (set! informant setter) (for-each-except setter inform-about-value constraints)) ((not (= value newval)) (error "Contradiction" (list value newval))))) (define (forget-my-value retractor) (if (eq? retractor informant) (begin (set! informant #f) (for-each-except retractor inform-about-no-value constraints)))) (define (connect new-constraint) (if (not (memq new-constraint constraints)) (set! constraints (cons new-constraint constraints))) (if (has-value? me) (inform-about-value new-constraint))) (define (me request) (cond ((eq? request 'has-value?) (not (null? informant))) ((eq? request 'value) value) ((eq? request 'set-value!) set-my-value) ((eq? request 'forget) forget-my-value) ((eq? request 'connect) connect) (else (error "Unknown operation -- CONNECTOR" request)))) me)) ;; Helper procedure for connector: ;; do the procedure for each element of list EXCEPT the exception. ;; used to inform connected constraints of value changes ;; (don't want to inform the source of the change) (define (for-each-except exception procedure list) (define (loop items) (cond ((null? items) 'done) ((eq? (car items) exception) (loop (cdr items))) (else (procedure (car items)) (loop (cdr items))))) (loop list)) ;; Example application: Centigrade/Fahrenheit converter. ;; Internal connectors and constraints are stashed in a private environment. ;; see Ex. 3.37 for a cleaner way to do this. (define (centigrade-fahrenheit-converter c f) (let ((u (make-connector)) (v (make-connector)) (w (make-connector)) (x (make-connector)) (y (make-connector))) (multiplier c w u) (multiplier v x u) (adder v y f) (constant 9 w) (constant 5 x) (constant 32 y))) (define C (make-connector)) (define F (make-connector)) (centigrade-fahrenheit-converter C F) (probe "centigrade temp" C) (probe "Fahrenheit temp" F) (define (fma-constraint f m a) (multiplier m a f)) (define force (make-connector)) (define mass (make-connector)) (define acceleration (make-connector)) (fma-constraint force mass acceleration) (probe "force" force) (probe "mass" mass) (probe "acceleration" acceleration)