diff --git a/src/titlebar.scm b/src/titlebar.scm index 483aea4..2bbed65 100644 --- a/src/titlebar.scm +++ b/src/titlebar.scm @@ -28,16 +28,13 @@ (tb (make-titlebar in-channel dpy window "test" 'normal)) (button-channel out-channel) (button-size 13) ;; TODO has to be calculated from window-height - (buttons (map (lambda (id i) + (buttons (map (lambda (id) (create-button dpy window colormap - (make-rectangle - (+ 2 (* i (+ 2 button-size))) - 2 button-size button-size) + (make-rectangle 0 0 1 1) button-channel id ;; TODO: border-style -> colors `((content . ,id)))) - (get-option-value options 'buttons) - (iota (length (get-option-value options 'buttons))))) + (get-option-value options 'buttons))) ;; icon-window... ) (for-each map-button buttons) @@ -61,7 +58,11 @@ ((expose-event? xevent) (if (and (= 0 (expose-event-count xevent)) (window-exists? dpy window)) - (draw-titlebar tb options gc)))))) + (draw-titlebar tb options gc))) + ((configure-event? xevent) + (refit-buttons options buttons + (configure-event-width xevent) + (configure-event-height xevent)))))) (wrap (receive-rv in-channel) (lambda (msg) (case (car msg) @@ -98,7 +99,6 @@ (define (map-titlebar tb) (map-window (titlebar:dpy tb) (titlebar:window tb))) -; (send (titlebar:channel tb) '(map #f))) (define (unmap-titlebar tb) (unmap-window (titlebar:dpy tb) (titlebar:window tb))) @@ -155,3 +155,14 @@ ((active) 'active-colors) ((focused) 'focused-colors) (else 'normal-colors)))) + +(define (refit-buttons options buttons width height) + (let* ((margin 2) + (bs (- height (* 2 margin))) + (spacing 2)) + (for-each (lambda (i button) + (let ((r (make-rectangle (+ margin (* i (+ bs spacing))) + margin bs bs))) + (move-resize-button button r))) + (iota (length buttons)) + buttons)))