diff --git a/src/main/frontend/commands.cljs b/src/main/frontend/commands.cljs index 0559ed94d5..370375f9ed 100644 --- a/src/main/frontend/commands.cljs +++ b/src/main/frontend/commands.cljs @@ -403,17 +403,23 @@ edit-content (gobj/get input "value") current-pos (cursor/pos input) prefix (subs edit-content 0 current-pos) + surfix (subs edit-content current-pos) new-value (str prefix value - (subs edit-content current-pos)) + surfix) new-pos (- (+ (count prefix) (count value) (or forward-pos 0)) (or backward-pos 0))] - (state/set-block-content-and-last-pos! id new-value new-pos) - (cursor/move-cursor-to input new-pos) - (when check-fn - (check-fn new-value (dec (count prefix)) new-pos)))) + (state/set-edit-content! (state/get-edit-input-id) + (str prefix value)) + ;; HACK: save scroll-pos of current pos, then add trailing content + (let [scroll-pos (.-scrollTop (gdom/getElement "main-content-container"))] + (state/set-block-content-and-last-pos! id new-value new-pos) + (cursor/move-cursor-to input new-pos) + (set! (.-scrollTop (gdom/getElement "main-content-container")) scroll-pos) + (when check-fn + (check-fn new-value (dec (count prefix)) new-pos))))) (defn simple-replace! [id value selected