diff --git a/gui.rkt b/gui.rkt index d1bf2f1..8b9461d 100644 --- a/gui.rkt +++ b/gui.rkt @@ -17,7 +17,8 @@ (define theme-title-font (make-parameter "Roboto Condensed")) (define theme-title-font-size (make-parameter 20)) (define theme-title-font-color (make-parameter "white")) -(define theme-title-bar-color (make-parameter (hsv->color 260 1 1))) +(define theme-title-bar-color (make-parameter (hsv->color 260 1 0.6))) +(define theme-title-bar-selected-color (make-parameter (hsv->color 260 1 1))) (define theme-title-bar-height (make-parameter 48)) (define theme-button-background-color (make-parameter (hsv->color 30 0.9 1))) (define theme-button-color (make-parameter "white")) @@ -363,12 +364,15 @@ (define title-text-i (title-font-text title)) (define title-text-w (i:image-width title-text-i)) (define title-text-h (i:image-height title-text-i)) - (define title-bar-i (i:rectangle 1 1 "solid" (theme-title-bar-color))) + (define (title-bar-i focus?) (i:rectangle 1 1 "solid" + (if focus? + (theme-title-bar-selected-color) + (theme-title-bar-color)))) (define close-icon-w (i:image-width close-icon-i)) (define close-icon-h (i:image-height close-icon-i)) (define gap (/ (- (theme-title-bar-height) close-icon-w) 2)) (define backdrop (i:rectangle 1 1 "solid" backdrop-color)) - (lambda (z rect) + (lambda (z rect focus?) (match-define (rectangle left top width height) rect) (sprite #:id id #:parent parent-id @@ -379,7 +383,7 @@ (scale ,(+ width (* 2 (theme-window-border-width))) ,(+ height (theme-title-bar-height) (theme-window-border-width))) (touchable (,id window-backdrop) ,in-unit-square?) - (texture ,title-bar-i)) + (texture ,(title-bar-i focus?))) (push-matrix (translate 0 ,(- (theme-title-bar-height))) (scale ,width ,(theme-title-bar-height)) (touchable (,id title-bar) ,in-unit-square?)) @@ -426,9 +430,11 @@ (on (message (raise-widget window-id)) (z (- (current-inexact-milliseconds)))) + (define/query-value focus? #f (top-widget window-id) #t) + (define/dataflow bounds (rectangle (x) (y) (width) (height)) #:default zero-rectangle) (assert (window-state window-id window-title (bounds))) - (assert (outbound (c (z) (bounds))))) + (assert (outbound (c (z) (bounds) (focus?))))) (spawn #:name 'top-widget-monitor (local-require data/heap)