diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index bb05e01306..e9d75eb0b6 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -2491,15 +2491,16 @@ :block-id uuid :block-parent-id block-id :format format - :on-hide (fn [value event] + :on-hide (fn [value event ^js e] (let [select? (and (= event :esc) (not (string/includes? value "```"))) - edit-next-block? (and @*next-editing-block (not= @*next-editing-block (:block/uuid block)))] + edit-next-block? (and @*next-editing-block (not= @*next-editing-block (:block/uuid block))) + blur-editing? (and (= event :blur) (when e (util/input? (.-relatedTarget e))))] (when-let [container (gdom/getElement "app-container")] (dom/remove-class! container "blocks-selection-mode")) (p/do! - (editor-handler/save-block! repo (:block/uuid block) value) - (when-not (and edit-next-block? (not select?)) + (editor-handler/save-block! repo (:block/uuid block) value) + (when-not (and (or edit-next-block? blur-editing?) (not select?)) (editor-handler/escape-editing select?)) (some-> config :on-escape-editing (apply [(str uuid) (= event :esc)])) diff --git a/src/main/frontend/components/editor.cljs b/src/main/frontend/components/editor.cljs index 589318bfb7..b523f4b4b2 100644 --- a/src/main/frontend/components/editor.cljs +++ b/src/main/frontend/components/editor.cljs @@ -832,7 +832,7 @@ (let [{:keys [on-hide value]} (editor-handler/get-state)] (when on-hide (when *blur? (reset! *blur? true)) - (on-hide value :blur)))))) + (on-hide value :blur e)))))) (rum/defcs box < rum/reactive {:init (fn [state] @@ -872,7 +872,7 @@ (when (and (= (util/ekey e) "Escape") on-hide) (when-not (exist-editor-commands-popup?) (reset! *blur? true) - (on-hide content :esc))))) + (on-hide content :esc e))))) :auto-focus true :class heading-class} (some? parent-block) diff --git a/src/main/frontend/handler/block.cljs b/src/main/frontend/handler/block.cljs index e19ba87134..341d9ead82 100644 --- a/src/main/frontend/handler/block.cljs +++ b/src/main/frontend/handler/block.cljs @@ -173,7 +173,8 @@ (defn- edit-block-aux [repo block content text-range {:keys [container-id]}] (when block - (state/clear-edit!) + (when (not= (:db/id block) (:db/id (state/get-edit-block))) + (state/clear-edit!)) (let [container-id (or container-id (state/get-current-editor-container-id) :unknown-container)]