ui.gadgets.buttons: memoize the roll button themes pens
It reduces memory usage by about 10% for the #1488 test on my machine and doesnt seem to have any bad side-effects.db4
parent
9af7be2ef9
commit
4812cec634
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue