diff --git a/basis/ui/gadgets/buttons/buttons-tests.factor b/basis/ui/gadgets/buttons/buttons-tests.factor index c94f7611ee..a427da9793 100644 --- a/basis/ui/gadgets/buttons/buttons-tests.factor +++ b/basis/ui/gadgets/buttons/buttons-tests.factor @@ -1,4 +1,4 @@ -USING: accessors models namespaces tools.test ui.gadgets +USING: accessors kernel models namespaces tools.test ui.gadgets ui.gadgets.buttons ; IN: ui.gadgets.buttons.tests @@ -18,3 +18,8 @@ IN: ui.gadgets.buttons.tests { 2 } [ "religion" get gadget-child control-value ] unit-test + +{ t t } [ + "but1" [ ] <roll-button> "but2" [ ] <roll-button> + [ [ boundary>> ] bi@ eq? ] [ [ interior>> ] bi@ eq? ] 2bi +] unit-test diff --git a/basis/ui/gadgets/buttons/buttons.factor b/basis/ui/gadgets/buttons/buttons.factor index 80e2bf3fe2..123ecc6e93 100644 --- a/basis/ui/gadgets/buttons/buttons.factor +++ b/basis/ui/gadgets/buttons/buttons.factor @@ -1,11 +1,10 @@ ! Copyright (C) 2005, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors assocs classes colors colors.constants combinators -combinators.short-circuit combinators.smart fry kernel locals -math.vectors models namespaces sequences ui.commands ui.gadgets -ui.gadgets.borders ui.gadgets.labels ui.gadgets.packs -ui.gadgets.theme ui.gadgets.tracks ui.gadgets.worlds ui.gestures -ui.pens ui.pens.image ui.pens.solid ui.pens.tile ; +USING: accessors assocs colors combinators combinators.short-circuit +combinators.smart fry kernel locals math.vectors memoize models +namespaces sequences ui.commands ui.gadgets ui.gadgets.borders +ui.gadgets.labels ui.gadgets.packs ui.gadgets.theme ui.gadgets.worlds +ui.gestures ui.pens ui.pens.image ui.pens.solid ui.pens.tile ; FROM: models => change-model ; IN: ui.gadgets.buttons @@ -60,8 +59,8 @@ button H{ button new-button ; TUPLE: button-pen -plain rollover -pressed selected pressed-selected ; + plain rollover + pressed selected pressed-selected ; C: <button-pen> button-pen @@ -103,9 +102,15 @@ M: button-pen pen-foreground : align-left ( button -- button ) { 0 1/2 } >>align ; inline +MEMO: button-pen-boundary ( -- button-pen ) + f roll-button-rollover-border <solid> dup f f <button-pen> ; + +MEMO: button-pen-interior ( -- button-pen ) + f f roll-button-selected-background <solid> f f <button-pen> ; + : roll-button-theme ( button -- button ) - f roll-button-rollover-border <solid> dup f f <button-pen> >>boundary - f f roll-button-selected-background <solid> f f <button-pen> >>interior + button-pen-boundary >>boundary + button-pen-interior >>interior align-left ; inline PRIVATE>