From 4d573232f641c0df425e8335e17e1966c941c2f1 Mon Sep 17 00:00:00 2001 From: Jona Ekenberg Date: Fri, 4 Jun 2021 10:05:23 +0200 Subject: [PATCH] fixed caret on opening a file --- .gitignore | 1 + misc/frp4.janet | 58 +++++++++++++++------------------ new_menu.janet | 7 ---- src/input.janet | 2 +- src/render_new_gap_buffer.janet | 3 +- 5 files changed, 30 insertions(+), 41 deletions(-) diff --git a/.gitignore b/.gitignore index e51365b..1719028 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ /.janet-usages /.judge /init.janet +/janet_libs \ No newline at end of file diff --git a/misc/frp4.janet b/misc/frp4.janet index 3fb935d..34dc921 100644 --- a/misc/frp4.janet +++ b/misc/frp4.janet @@ -115,24 +115,21 @@ (i/handle-keyboard2 (self :gb) k) - (put self :event/changed true) -) + (put self :event/changed true)) [:char k] (do - (i/handle-keyboard-char - (self :gb) - k) - (put self :event/changed true) - ) + (i/handle-keyboard-char + (self :gb) + k) + (put self :event/changed true)) [:scroll n mp] - (when (in-rec? mp - (i/gb-rec (self :gb))) - - (push-callback! ev (fn [] - (i/handle-scroll-event (self :gb) n) - (put self :event/changed true) - ))) - + (when (in-rec? mp + (i/gb-rec (self :gb))) + + (push-callback! ev (fn [] + (i/handle-scroll-event (self :gb) n) + (put self :event/changed true)))) + ['(mouse-events (first ev)) _] (i/handle-mouse-event (self :gb) @@ -141,9 +138,7 @@ (push-callback! ev (fn [] (f) (e/put! state/focus123 :focus self) - (put (self :gb) :event/changed true) - -)))))) + (put (self :gb) :event/changed true))))))) (merge-into state/file-open-data {:binds i/file-open-binds}) @@ -189,9 +184,9 @@ [props] (let [search-term (string (content props))] (put-caret state/gb-data (if (state/gb-data :selection) - (max (state/gb-data :selection) - (state/gb-data :caret)) - (state/gb-data :caret))) + (max (state/gb-data :selection) + (state/gb-data :caret)) + (state/gb-data :caret))) (when-let [i (gb-find-forward! state/gb-data search-term)] (-> state/gb-data (reset-blink) @@ -203,9 +198,9 @@ [props] (let [search-term (string (content props))] (put-caret state/gb-data (if (state/gb-data :selection) - (min (state/gb-data :selection) - (state/gb-data :caret)) - (state/gb-data :caret))) + (min (state/gb-data :selection) + (state/gb-data :caret)) + (state/gb-data :caret))) (when-let [i (gb-find-backward! state/gb-data search-term)] (-> state/gb-data (reset-blink) @@ -293,28 +288,29 @@ (def caret @{:draw (fn [self] - (when-let [gb (self :gb)] + (when-let [gb (and (self :on) + (self :gb))] (render-cursor gb))) :on true :on-event (fn [self ev] - (match ev {:focus state/focus123} - (do - (when (get-in state/focus123 [:gb :caret-pos]) + (when (get-in state/focus123 [:gb :gap]) (put self :gb (state/focus123 :gb)) (set ((self :gb) :blink) 0) - (put self :on true))) + (put self :on true)) [:dt dt] (when (self :gb) - (when (and (> ((self :gb) :blink) 30) + (update (self :gb) :blink + dt) + + (when (and (> ((self :gb) :blink) 0.6) (self :on)) (put self :on false)) - (when (> ((self :gb) :blink) 60) + (when (> ((self :gb) :blink) 1.0) (set ((self :gb) :blink) 0) (put self :on true)))))}) diff --git a/new_menu.janet b/new_menu.janet index 8688807..3ec9453 100644 --- a/new_menu.janet +++ b/new_menu.janet @@ -290,13 +290,6 @@ :draw menu-draw :on-event menu-event}) - (def dependencies - @{frp/mouse @[frp/text-area frp/search-area frp/file-open-area] - frp/keyboard @[|(:on-event (state/focus123 :focus) $)] - frp/chars @[|(:on-event (state/focus123 :focus) $)] - state/focus123 @[frp/caret] - frp/callbacks @[frp/handle-callbacks]}) - (def dependencies @{frp/mouse @[frp/text-area frp/search-area frp/file-open-area menu] frp/keyboard @[#pp diff --git a/src/input.janet b/src/input.janet index 69e8aa0..1cd481c 100644 --- a/src/input.janet +++ b/src/input.janet @@ -146,7 +146,7 @@ (defn quit [props] - (put (tracev (props :context)) :quit true)) + (put (props :context) :quit true)) (defn open-file [props] diff --git a/src/render_new_gap_buffer.janet b/src/render_new_gap_buffer.janet index 29a5d5e..de4048e 100644 --- a/src/render_new_gap_buffer.janet +++ b/src/render_new_gap_buffer.janet @@ -1080,8 +1080,7 @@ This function is pretty expensive since it redoes all word wrapping." # (rl-scalef 2 2 1) - (when-let [[x y] (and (< (gb :blink) 30) - (gb :caret-pos)) + (when-let [[x y] (gb :caret-pos) cx (abs-text-x gb x) cy (abs-text-y gb (+ y scroll -2))]