diff --git a/buffer.fnl b/buffer.fnl index c7425c0..a218ad6 100644 --- a/buffer.fnl +++ b/buffer.fnl @@ -2,6 +2,7 @@ (local { : view } (require :fennel)) (fn new-buffer [name] + (var property-change-listener nil) (let [props {} widget (WebKit2.WebView { ;; :on_decide_policy @@ -19,11 +20,16 @@ (when (not (= pspec.name :parent)) (let [val (. self pspec.name)] (tset props pspec.name val) - ;(listeners:notify pspec.name val) - ))) + (when property-change-listener + (property-change-listener + pspec.name val))) + )) })] {:webview widget :name name + :subscribe-property-changes + (fn [self cb] + (set property-change-listener cb)) :location #(widget:get_uri) :visit (fn [_ u] (widget:load_uri u)) :properties props})) diff --git a/command.fnl b/command.fnl index be2955b..1d6015f 100644 --- a/command.fnl +++ b/command.fnl @@ -183,6 +183,9 @@ :widget box : prompt : frame + :set-inactive-text (fn [self text] + (when (not self.state.active) + (tset entry :text text))) :completions-widget completions }] (hbox:pack_start prompt false false 15) diff --git a/frame.fnl b/frame.fnl index 9a60af5..41badff 100644 --- a/frame.fnl +++ b/frame.fnl @@ -30,7 +30,14 @@ contentwidget (Gtk.Box { :orientation Gtk.Orientation.VERTICAL }) - ] + update-prop (fn [name value] + (match name + :estimated-load-progress + (tset progress-bar :fraction value) + :uri + (commander:set-inactive-text value) + n + (comment (print "prop change" n value))))] (tset window :on_key_release_event (fn [window event] @@ -58,6 +65,11 @@ (w:hide)) (tset self :buffer b) (contentwidget:pack_start b.webview true true 0) + (b:subscribe-property-changes + (fn [name val] + (if (= b self.buffer) + (update-prop name val) + (print "ignore props from background" b)))) (b.webview:show)) }] (lume.extend self f)