Skip to content

Commit 882401b

Browse files
committed
enhance focus behavior
1 parent 58905c7 commit 882401b

File tree

5 files changed

+34
-30
lines changed

5 files changed

+34
-30
lines changed

src/renderer/document/events.cljs

+5-3
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,8 @@
153153
(element.h/create {:tag :svg
154154
:attrs {:width "800" :height "600"}})
155155
(history.h/finalize "Create document"))
156-
:dispatch [:frame/center]}))
156+
:fx [[:dispatch [:frame/center]]
157+
[:focus nil]]}))
157158

158159
(def file-picker-options
159160
{:startIn "documents"
@@ -195,7 +196,8 @@
195196
:always
196197
(-> (h/add-recent (:path document))
197198
(assoc :active-document (:key document))))
198-
:dispatch [:frame/center]})))
199+
:fx [[:dispatch [:frame/center]]
200+
[:focus nil]]})))
199201

200202
(rf/reg-fx
201203
::save-as
@@ -223,7 +225,7 @@
223225
(let [document (save-format db)]
224226
(if platform/electron?
225227
{:send-to-main {:action "saveDocument" :data (pr-str document)}}
226-
;; The path is not available when we use web APIs for security reasons,
228+
;; The path is not available when we use web APIs for security reasons,
227229
;; so we always dispatch save-as.
228230
{::save-as document}))))
229231

src/renderer/events.cljs

+11-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
[renderer.handlers :as h]
88
[renderer.frame.handlers :as frame-h]
99
[renderer.tool.base :as tool]
10+
[renderer.utils.dom :as dom]
1011
[renderer.utils.drop :as drop]
1112
[renderer.utils.local-storage :as local-storage]
1213
[renderer.utils.pointer :as pointer]))
@@ -49,10 +50,11 @@
4950
(fn [db [_ mdn]]
5051
(assoc db :mdn mdn)))
5152

52-
(rf/reg-event-db
53+
(rf/reg-event-fx
5354
:set-tool
54-
(fn [db [_ tool]]
55-
(h/set-tool db tool)))
55+
(fn [{:keys [db]} [_ tool]]
56+
{:db (h/set-tool db tool)
57+
:focus nil}))
5658

5759
(rf/reg-event-db
5860
:clear-restored
@@ -210,3 +212,9 @@
210212
(js/Blob.
211213
[text-html]
212214
#js {:type ["text/html"]}))})]))))
215+
216+
(rf/reg-fx
217+
:focus
218+
(fn [id]
219+
(when-let [element (if id (.getElementById js/document id) (dom/canvas-element))]
220+
(js/setTimeout #(.focus element)))))

src/renderer/frame/events.cljs

+13-10
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,24 @@
2222
(fn [db [_ zoom]]
2323
(h/focus-selection db zoom)))
2424

25-
(rf/reg-event-db
25+
(rf/reg-event-fx
2626
:frame/set-zoom
27-
(fn [{active-document :active-document :as db} [_ zoom]]
28-
(let [current-zoom (get-in db [:documents active-document :zoom])]
29-
(h/zoom db (/ zoom current-zoom)))))
27+
(fn [{:keys [db]} [_ zoom]]
28+
(let [current-zoom (get-in db [:documents (:active-document db) :zoom])]
29+
{:db (h/zoom db (/ zoom current-zoom))
30+
:focus nil})))
3031

31-
(rf/reg-event-db
32+
(rf/reg-event-fx
3233
:frame/zoom-in
33-
(fn [db [_ _]]
34-
(h/zoom db (/ 1 (:zoom-sensitivity db)))))
34+
(fn [{:keys [db]} [_ _]]
35+
{:db (h/zoom db (/ 1 (:zoom-sensitivity db)))
36+
:focus nil}))
3537

36-
(rf/reg-event-db
38+
(rf/reg-event-fx
3739
:frame/zoom-out
38-
(fn [db [_ _]]
39-
(h/zoom db (:zoom-sensitivity db))))
40+
(fn [{:keys [db]} [_ _]]
41+
{:db (h/zoom db (:zoom-sensitivity db))
42+
:focus nil}))
4043

4144
(rf/reg-event-db
4245
:frame/pan-to-bounds

src/renderer/menubar/events.cljs

+2-9
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,8 @@
11
(ns renderer.menubar.events
22
(:require
3-
[re-frame.core :as rf]
4-
[renderer.utils.dom :as dom]))
5-
6-
(rf/reg-fx
7-
::focus
8-
(fn [id]
9-
(when-let [element (if id (.getElementById js/document id) (dom/canvas-element))]
10-
(js/setTimeout #(.focus element)))))
3+
[re-frame.core :as rf]))
114

125
(rf/reg-event-fx
136
:menubar/focus
147
(fn [_ [_ id]]
15-
{::focus id}))
8+
{:focus id}))

src/renderer/tool/shape/text.cljs

+3-5
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
[renderer.history.handlers :as history.h]
1010
[renderer.tool.base :as tool]
1111
[renderer.utils.bounds :as bounds]
12-
[renderer.utils.dom :as dom]
1312
[renderer.utils.element :as element]
1413
[renderer.utils.units :as units]))
1514

@@ -18,9 +17,9 @@
1817
(defmethod tool/properties :text
1918
[]
2019
{:icon "text"
21-
:description "The SVG <text> element draws a graphics element consisting
22-
of text. It's possible to apply a gradient, pattern,
23-
clipping path, mask, or filter to <text>, like any other SVG
20+
:description "The SVG <text> element draws a graphics element consisting
21+
of text. It's possible to apply a gradient, pattern,
22+
clipping path, mask, or filter to <text>, like any other SVG
2423
graphics element."
2524
:attrs [:font-family
2625
:font-size
@@ -69,7 +68,6 @@
6968

7069
(defn set-text-and-select-element
7170
[e el-k]
72-
(.focus (dom/canvas-element)) ; REVIEW
7371
(rf/dispatch [:element/set-prop el-k :content (get-text e)])
7472
(rf/dispatch [:set-tool :select]))
7573

0 commit comments

Comments
 (0)