Просмотр исходного кода

fix: cursor blink when saving editing

Tienson Qin 2 лет назад
Родитель
Сommit
3eda6c1bb0

+ 3 - 1
src/main/frontend/components/block.cljs

@@ -2498,7 +2498,9 @@
                                                  (when (= event :esc)
                                                    (p/let [_ (editor-handler/save-block! (editor-handler/get-state) value)]
                                                      (let [select? (not (string/includes? value "```"))]
-                                                       (editor-handler/escape-editing select?)))))}
+                                                       (editor-handler/escape-editing select?)
+                                                       (when (contains? #{:esc :visibilitychange :click} event)
+                                                         (state/clear-edit!))))))}
                                      edit-input-id
                                      config))]
           (if (and named? (seq (:block/tags block)) db-based?)

+ 22 - 21
src/main/frontend/handler/editor.cljs

@@ -2742,27 +2742,28 @@
             repo (state/get-current-repo)
             delete-block (if next-block-has-refs? edit-block next-block)
             keep-block (if next-block-has-refs? next-block edit-block)]
-        (ui-outliner-tx/transact!
-         {:outliner-op :delete-blocks}
-         (delete-block-aux! delete-block false)
-         (save-block! repo keep-block new-content {:editor/op :delete})
-         (when next-block-has-refs?
-           (outliner-save-block! {:db/id (:db/id keep-block)
-                                       :block/left (:db/id (:block/left delete-block))
-                                       :block/parent (:db/id (:block/parent delete-block))})
-           (when (and next-block-right (not= (:db/id (:block/parent next-block))
-                                             (:db/id (:block/parent edit-block))))
-             (outliner-save-block! {:db/id (:db/id next-block-right)
-                                         :block/left (:db/id (:block/left next-block))})))
-         (when db-based?
-           (let [new-properties (merge
-                                 (:block/properties (db/entity (:db/id edit-block)))
-                                 (:block/properties (db/entity (:db/id next-block))))]
-             (when-not (= new-properties (:block/properties keep-block))
-               (outliner-save-block! {:db/id (:db/id keep-block)
-                                           :block/properties new-properties})))))
-        (let [block (if next-block-has-refs? next-block edit-block)]
-          (edit-block! block current-pos nil))))))
+        (p/do!
+          (ui-outliner-tx/transact!
+          {:outliner-op :delete-blocks}
+          (delete-block-aux! delete-block false)
+          (save-block! repo keep-block new-content {:editor/op :delete})
+          (when next-block-has-refs?
+            (outliner-save-block! {:db/id (:db/id keep-block)
+                                   :block/left (:db/id (:block/left delete-block))
+                                   :block/parent (:db/id (:block/parent delete-block))})
+            (when (and next-block-right (not= (:db/id (:block/parent next-block))
+                                              (:db/id (:block/parent edit-block))))
+              (outliner-save-block! {:db/id (:db/id next-block-right)
+                                     :block/left (:db/id (:block/left next-block))})))
+          (when db-based?
+            (let [new-properties (merge
+                                  (:block/properties (db/entity (:db/id edit-block)))
+                                  (:block/properties (db/entity (:db/id next-block))))]
+              (when-not (= new-properties (:block/properties keep-block))
+                (outliner-save-block! {:db/id (:db/id keep-block)
+                                       :block/properties new-properties})))))
+          (let [block (if next-block-has-refs? next-block edit-block)]
+            (edit-block! block current-pos nil)))))))
 
 (defn keydown-delete-handler
   [_e]

+ 1 - 3
src/main/frontend/handler/editor/keyboards.cljs

@@ -33,9 +33,7 @@
          :else
          (let [{:keys [on-hide value]} (editor-handler/get-state)]
            (when on-hide
-             (on-hide value event)
-             (when (contains? #{:esc :visibilitychange :click} event)
-               (util/schedule state/clear-edit!))))))
+             (on-hide value event)))))
      :node (gdom/getElement id)
     ;; :visibilitychange? true
      )))