From b129a703ece91bc3292234c2049a4b0c7eb0f7da Mon Sep 17 00:00:00 2001 From: Giuseppe D'Andrea Date: Sun, 7 Aug 2022 19:48:52 +0200 Subject: [PATCH 1/2] fix up-down navigation after selecting multiple blocks --- src/main/frontend/handler/editor.cljs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/frontend/handler/editor.cljs b/src/main/frontend/handler/editor.cljs index 0d4bf101d..c739c2a3f 100644 --- a/src/main/frontend/handler/editor.cljs +++ b/src/main/frontend/handler/editor.cljs @@ -2440,7 +2440,10 @@ (state/exit-editing-and-set-selected-blocks! [block])))) (defn- select-up-down [direction] - (let [selected (first (state/get-selection-blocks)) + (let [selected-blocks (state/get-selection-blocks) + selected (case direction + :up (first selected-blocks) + :down (last selected-blocks)) f (case direction :up util/get-prev-block-non-collapsed :down util/get-next-block-non-collapsed) @@ -3069,7 +3072,7 @@ (state/editing?) (keydown-up-down-handler direction) - (and (state/selection?) (== 1 (count (state/get-selection-blocks)))) + (state/selection?) (select-up-down direction) :else From 192a30ae1b66e7a5959646b6276681bfad7a5afa Mon Sep 17 00:00:00 2001 From: Giuseppe D'Andrea Date: Sun, 7 Aug 2022 19:50:39 +0200 Subject: [PATCH 2/2] fix left-right navigation after selecting multiple blocks --- src/main/frontend/handler/editor.cljs | 43 ++++++++++++++------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/src/main/frontend/handler/editor.cljs b/src/main/frontend/handler/editor.cljs index c739c2a3f..0f752f365 100644 --- a/src/main/frontend/handler/editor.cljs +++ b/src/main/frontend/handler/editor.cljs @@ -3101,34 +3101,35 @@ (defn open-selected-block! [direction e] - (when-let [block-id (some-> (state/get-selection-blocks) - first - (dom/attr "blockid") - uuid)] - (util/stop e) - (let [block {:block/uuid block-id} - block-id (-> (state/get-selection-blocks) - first - (gobj/get "id") - (string/replace "ls-block" "edit-block")) - left? (= direction :left)] - (edit-block! block - (if left? 0 :max) - block-id)))) + (let [selected-blocks (state/get-selection-blocks) + f (case direction + :left first + :right last)] + (when-let [block-id (some-> selected-blocks + f + (dom/attr "blockid") + uuid)] + (util/stop e) + (let [block {:block/uuid block-id} + block-id (-> selected-blocks + f + (gobj/get "id") + (string/replace "ls-block" "edit-block")) + left? (= direction :left)] + (edit-block! block + (if left? 0 :max) + block-id))))) (defn shortcut-left-right [direction] (fn [e] (when-not (auto-complete?) + (util/stop e) (cond (state/editing?) - (do - (util/stop e) - (keydown-arrow-handler direction)) + (keydown-arrow-handler direction) - (and (state/selection?) (== 1 (count (state/get-selection-blocks)))) - (do - (util/stop e) - (open-selected-block! direction e)) + (state/selection?) + (open-selected-block! direction e) :else nil))))