! Copyright (C) 2005, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays kernel math models namespaces sequences strings quotations assocs combinators classes colors colors.constants classes.tuple opengl opengl.gl math.vectors ui.commands ui.gadgets ui.gadgets.borders ui.gadgets.labels ui.gadgets.tracks ui.gadgets.packs ui.gadgets.worlds ui.gestures ui.pens ui.pens.solid ui.pens.image ui.pens.tile math.rectangles locals fry combinators.smart ; FROM: models => change-model ; IN: ui.gadgets.buttons TUPLE: button < border pressed? selected? quot ; : button-update ( button -- ) dup [ mouse-clicked? ] [ button-rollover? ] bi and buttons-down? and >>pressed? relayout-1 ; : button-clicked ( button -- ) dup button-update dup button-rollover? [ dup quot>> call( button -- ) ] [ drop ] if ; button H{ { T{ button-up } [ button-clicked ] } { T{ button-down } [ button-update ] } { mouse-leave [ button-update ] } { mouse-enter [ button-update ] } } set-gestures : new-button ( label quot class -- button ) [ swap >label ] dip new-border swap >>quot ; inline :