From f5efc0313435c922914ccd924d876ffe8b740e80 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Sat, 1 Dec 2012 13:46:08 -0600 Subject: [PATCH] fix color prefs saving to use alpha This didn't matter much before but now that paren colors have interesting alpha components, things look bad when it is ignored! --- collects/framework/private/color-prefs.rkt | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/collects/framework/private/color-prefs.rkt b/collects/framework/private/color-prefs.rkt index 27854ac338..0b84c7e738 100644 --- a/collects/framework/private/color-prefs.rkt +++ b/collects/framework/private/color-prefs.rkt @@ -1,7 +1,8 @@ -#lang scheme/unit +#lang racket/unit (require mzlib/class mred string-constants + racket/match "../preferences.rkt" "sig.rkt") @@ -510,12 +511,16 @@ (preferences:set-default pref-sym bw-c (λ (x) (is-a? x color%))) (preferences:set-un/marshall pref-sym - (λ (clr) (list (send clr red) (send clr green) (send clr blue))) - (λ (lst) (and (pair? lst) - (pair? (cdr lst)) - (pair? (cddr lst)) - (null? (cdddr lst)) - (make-object color% (car lst) (cadr lst) (caddr lst))))) + (λ (clr) (list (send clr red) (send clr green) (send clr blue) (send clr alpha))) + (λ (lst) + (match lst + [(list (? byte? red) (? byte? green) (? byte? blue)) + ;; old prefs-- before there were no alpha components to color% objects + ;; and so only r/g/b was saved. + (make-object color% red green blue)] + [(list (? byte? red) (? byte? green) (? byte? blue) (? (λ (x) (and (real? x) (<= 0 x 1))) α)) + (make-object color% red green blue α)] + [else #f]))) (void))) (define (to-color c)