fix: can't undo pasting at empty block

This commit is contained in:
Tienson Qin
2025-11-10 08:48:47 +08:00
parent 2140029c60
commit 079c8944b8
3 changed files with 39 additions and 1 deletions

View File

@@ -84,6 +84,8 @@
(def copy #(k/press "ControlOrMeta+c" {:delay 100}))
(def paste #(k/press "ControlOrMeta+v" {:delay 100}))
(def undo #(k/press "ControlOrMeta+z" {:delay 100}))
(def redo #(k/press "ControlOrMeta+y" {:delay 100}))
(defn- indent-outdent
[indent?]

View File

@@ -0,0 +1,34 @@
(ns logseq.e2e.undo-redo-test
(:require
[clojure.set :as set]
[clojure.test :refer [deftest testing is use-fixtures]]
[logseq.e2e.assert :as assert]
[logseq.e2e.block :as b]
[logseq.e2e.fixtures :as fixtures]
[logseq.e2e.keyboard :as k]
[logseq.e2e.page :as p]
[logseq.e2e.util :as util]
[wally.main :as w]
[wally.repl :as repl]))
(use-fixtures :once fixtures/open-page)
(use-fixtures :each
fixtures/new-logseq-page
fixtures/validate-graph)
(deftest undo-redo-paste
(testing "Undo redo paste blocks"
(b/new-blocks ["b1" "b2"])
(b/select-blocks 2)
(b/copy)
(b/new-block "")
(b/paste)
(util/exit-edit)
(is (= ["b1" "b2" "b1" "b2"] (util/get-page-blocks-contents)))
(b/undo)
(util/exit-edit)
(is (= ["b1" "b2"] (util/get-page-blocks-contents)))
(b/redo)
(util/exit-edit)
(is (= ["b1" "b2" "b1" "b2"] (util/get-page-blocks-contents)))))

View File

@@ -267,7 +267,9 @@
(let [{:keys [tx-data tx-meta] :as data} (some #(when (= ::db-transact (first %))
(second %)) op)]
(when (seq tx-data)
(let [reversed-tx-data (get-reversed-datoms conn undo? data tx-meta)
(let [reversed-tx-data (cond-> (get-reversed-datoms conn undo? data tx-meta)
undo?
reverse)
tx-meta' (-> tx-meta
(dissoc :batch-tx/batch-tx-mode?)
(assoc