From: Kevin Cope Date: Sun, 16 May 2021 01:36:08 +0000 (+0800) Subject: Moves button list into MIXIN instance X-Git-Tag: 0.99~1655 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=bdade0a8c233e456030785e9bc38b7db0cf226b8 Moves button list into MIXIN instance --- diff --git a/basis/ui/gadgets/buttons/buttons.factor b/basis/ui/gadgets/buttons/buttons.factor index 4ced17e86c..c7609dbe06 100644 --- a/basis/ui/gadgets/buttons/buttons.factor +++ b/basis/ui/gadgets/buttons/buttons.factor @@ -11,16 +11,6 @@ IN: ui.gadgets.buttons TUPLE: button < border pressed? selected? quot tooltip ; -SYMBOL: active-buttons -active-buttons [ H{ } ] initialize - -: label-from-button ( button -- str ) - children>> [ label? ] find swap [ text>> ] [ drop "unknown" ] if ; - -M: button graft* dup label-from-button active-buttons get set-at ; - -M: button ungraft* label-from-button active-buttons get delete-at ; - wrapper ; IN: ui.tools.button-list TUPLE: button-list-popup < wrapper ; +MIXIN: clickable + +SYMBOL: active-buttons +active-buttons [ H{ } ] initialize + +: label-from-button ( button -- str/f ) + children>> [ label? ] find swap [ text>> ] [ drop f ] if ; + +: store-labelled-button ( button -- str/f ) + dup label-from-button [ [ active-buttons get set-at ] keep ] [ drop f ] if* ; + +: remove-labelled-button ( button -- str/f ) + label-from-button [ dup active-buttons get delete-at ] [ f ] if* ; + +M: clickable graft* [ store-labelled-button drop ] [ call-next-method ] bi ; +M: button ungraft* [ remove-labelled-button drop ] [ call-next-method ] bi ; + +INSTANCE: button clickable + : ( model -- table ) [ keys [ ">" swap 2array ] map ] trivial-renderer [ second ] dup table>>