add back button

main
Daniel Barlow 2023-01-01 22:22:40 +00:00
parent bc17c3af6c
commit c1b7c2d777
5 changed files with 14 additions and 8 deletions

View File

@ -32,6 +32,7 @@
(set property-change-listener cb)) (set property-change-listener cb))
:location #(widget:get_uri) :location #(widget:get_uri)
:visit (fn [_ u] (widget:load_uri u)) :visit (fn [_ u] (widget:load_uri u))
:back #(widget:go_back)
:properties props})) :properties props}))
(let [buffers {}] (let [buffers {}]

View File

@ -41,6 +41,11 @@
(fn [{:url url :buffer buffer}] (fn [{:url url :buffer buffer}]
(buffer:visit url))) (buffer:visit url)))
(define-command
"back"
[[:buffer Buffer.match #$1.buffer.name]]
(fn [{: buffer}] (buffer:back)))
(fn find-command [name] (fn find-command [name]
(. commands name)) (. commands name))

View File

@ -10,6 +10,7 @@
(local my-keymap { (local my-keymap {
"g" ["visit-location" {:buffer #$1.buffer }] "g" ["visit-location" {:buffer #$1.buffer }]
"BackSpace" ["back" {:buffer #$1.buffer }]
"M-q" ["quit-browser" {}] "M-q" ["quit-browser" {}]
"C-x" { "C-x" {
"C-c" ["quit-browser" {}] "C-c" ["quit-browser" {}]

View File

@ -30,15 +30,15 @@
(fn keychord->spec [keychord] (fn keychord->spec [keychord]
(let [Mod Gdk.ModifierType (let [Mod Gdk.ModifierType
symbol (keychord:match "(%w+)$") symbol (keychord:match "(%w+)$")
upper? (and (symbol:match "%u") true) ; upper? (and (symbol:match "%u") true)
modmask (accumulate [m (if upper? Mod.SHIFT_MASK 0) modmask (accumulate [m 0 ;(if upper? Mod.SHIFT_MASK 0)
v (keychord:gmatch "(%w+)-")] v (keychord:gmatch "(%w+)-")]
(match (v:lower) (match (v:lower)
"m" (bor m Mod.MOD1_MASK) "m" (bor m Mod.MOD1_MASK)
"c" (bor m Mod.CONTROL_MASK) "c" (bor m Mod.CONTROL_MASK)
"s" (bor m Mod.MOD4_MASK)))] "s" (bor m Mod.MOD4_MASK)))]
{ {
:keyval (string.byte (symbol:lower)) :keyval (Gdk.keyval_from_name symbol)
: modmask : modmask
})) }))
@ -131,9 +131,8 @@
{ : recogniser { : recogniser
:keyval { :keyval (collect [_ name (ipairs [:Escape :Delete :BackSpace])]
:Escape (Gdk.keyval_from_name "Escape") (values name (Gdk.keyval_from_name name)))
}
:_ { :_ {
;; symbols in _ are exported only for testing ;; symbols in _ are exported only for testing
: keychord->spec : keychord->spec

View File

@ -33,9 +33,9 @@
{:keyval 97 :modmask 4} true {:keyval 97 :modmask 4} true
_ (assert false (view s)))) _ (assert false (view s))))
(let [s (keymap._.keychord->spec "C-M-Z")] (let [s (keymap._.keychord->spec "C-M-z")]
(match s (match s
{:keyval 122 :modmask 13} true {:keyval 122 :modmask 12} true
_ (assert false (view s)))) _ (assert false (view s))))