ESC cancels command

main
Daniel Barlow 2023-01-01 11:10:14 +00:00
parent 0f9d93630e
commit 3fac6a2601
2 changed files with 17 additions and 4 deletions

View File

@ -139,14 +139,22 @@
))) )))
(fn activate [{: state : entry : prompt}] (fn activate [{: state : entry : prompt &as self}]
(tset state :active true) (tset state :active true)
(set entry.sensitive true) (update-widget-state
(set entry.text "") self
(set prompt.label (or state.this-param "Command" "")) {:active true
:prompt (or state.this-param "Command" "")
})
(entry:grab_focus) (entry:grab_focus)
state) state)
(fn deactivate [{: state : entry : prompt &as self}]
(doto state
(lume.clear)
(tset :active false))
(update-widget-state self {:active false}))
(fn invoke-interactively [self name params] (fn invoke-interactively [self name params]
(let [c (find-command name) (let [c (find-command name)
supplied-params (collect [k v (pairs params)] supplied-params (collect [k v (pairs params)]
@ -175,6 +183,7 @@
self { self {
:state default-state :state default-state
: activate : activate
: deactivate
:active? (fn [self] self.state.active) :active? (fn [self] self.state.active)
: on-input : on-input
: on-activate : on-activate

View File

@ -45,6 +45,10 @@
(match (recogniser:accept-event event) (match (recogniser:accept-event event)
[name params] (commander:invoke-interactively name params) [name params] (commander:invoke-interactively name params)
(nil prompt) (print "prompted" prompt))) (nil prompt) (print "prompted" prompt)))
(when (and (commander:active?)
(= (Gdk.keyval_name event.keyval) "Escape"))
(commander:deactivate))
(when (and event.state.MOD1_MASK (when (and event.state.MOD1_MASK
(= event.keyval (string.byte "x"))) (= event.keyval (string.byte "x")))
(commander:activate)))) (commander:activate))))