Skip to content

Commit 4d32d11

Browse files
committed
✨ 增加了进入编辑状态时是否自动全选内容的自定义设置项
1 parent ae14223 commit 4d32d11

File tree

8 files changed

+89
-38
lines changed

8 files changed

+89
-38
lines changed

app/src/core/service/Settings.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ export namespace Settings {
6363
textNodeContentLineBreak: "enter" | "ctrlEnter" | "altEnter" | "shiftEnter";
6464
textNodeExitEditMode: "enter" | "ctrlEnter" | "altEnter" | "shiftEnter";
6565
textNodeStartEditMode: "enter" | "ctrlEnter" | "altEnter" | "shiftEnter";
66+
textNodeSelectAllWhenStartEditByKeyboard: boolean;
67+
textNodeSelectAllWhenStartEditByMouseClick: boolean;
6668
// 音效相关
6769
soundEnabled: boolean;
6870
cuttingLineStartSoundFile: string;
@@ -126,6 +128,8 @@ export namespace Settings {
126128
textNodeContentLineBreak: "enter",
127129
textNodeExitEditMode: "ctrlEnter",
128130
textNodeStartEditMode: "enter",
131+
textNodeSelectAllWhenStartEditByKeyboard: false,
132+
textNodeSelectAllWhenStartEditByMouseClick: true,
129133
// 音效相关
130134
soundEnabled: true,
131135
cuttingLineStartSoundFile: "",

app/src/core/service/controlService/controller/concrete/ControllerNodeEdit.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { UrlNode } from "../../../../stage/stageObject/entity/UrlNode";
77
import { Controller } from "../Controller";
88
import { ControllerClass } from "../ControllerClass";
99
import { editNodeDetails, editTextNode, editUrlNodeTitle } from "./utilsControl";
10+
import { Stage } from "../../../../stage/Stage";
1011
/**
1112
* 包含编辑节点文字,编辑详细信息等功能的控制器
1213
*
@@ -30,7 +31,7 @@ ControllerNodeEdit.mouseDoubleClick = (event: MouseEvent) => {
3031
editNodeDetails(clickedEntity);
3132
} else {
3233
if (clickedEntity instanceof TextNode) {
33-
editTextNode(clickedEntity);
34+
editTextNode(clickedEntity, Stage.textNodeSelectAllWhenStartEditByMouseClick);
3435
} else if (clickedEntity instanceof UrlNode) {
3536
const diffNodeLeftTopLocation = pressLocation.subtract(clickedEntity.rectangle.leftTop);
3637
if (diffNodeLeftTopLocation.y < UrlNode.titleHeight) {

app/src/core/service/controlService/keyboardOnlyEngine/keyboardOnlyEngine.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,17 @@ export namespace KeyboardOnlyEngine {
2929
}
3030

3131
let textNodeStartEditMode: Settings.Settings["textNodeStartEditMode"] = "enter";
32+
let textNodeSelectAllWhenStartEditByKeyboard: boolean = true;
3233

3334
export function init() {
3435
bindKeyEvents();
3536
targetLocationController.init();
3637
Settings.watch("textNodeStartEditMode", (value) => {
3738
textNodeStartEditMode = value;
3839
});
40+
Settings.watch("textNodeSelectAllWhenStartEditByKeyboard", (value) => {
41+
textNodeSelectAllWhenStartEditByKeyboard = value;
42+
});
3943
}
4044

4145
export function logicTick() {
@@ -61,7 +65,7 @@ export namespace KeyboardOnlyEngine {
6165
event.preventDefault(); // 这个prevent必须开启,否则会立刻在刚创建的输入框里输入一个换行符。
6266
addSuccessEffect();
6367
// 编辑节点
64-
editTextNode(selectedNode, false);
68+
editTextNode(selectedNode, textNodeSelectAllWhenStartEditByKeyboard);
6569
} else {
6670
// 用户可能记错了快捷键
6771
addFailEffect();

app/src/core/stage/Stage.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ export namespace Stage {
109109
export let mouseRightDragBackground = "cut";
110110
export let enableDragAutoAlign = true;
111111

112+
export let textNodeSelectAllWhenStartEditByMouseClick = true;
113+
112114
export function init() {
113115
autoSaveEngine.init();
114116
autoBackupEngine.init();
@@ -118,5 +120,8 @@ export namespace Stage {
118120
Settings.watch("enableDragAutoAlign", (value) => {
119121
enableDragAutoAlign = value;
120122
});
123+
Settings.watch("textNodeSelectAllWhenStartEditByMouseClick", (value) => {
124+
textNodeSelectAllWhenStartEditByMouseClick = value;
125+
});
121126
}
122127
}

app/src/locales/en.yml

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -313,31 +313,41 @@ settings:
313313
textNodeContentLineBreak:
314314
title: 文本节点换行方案
315315
options:
316-
enter: enter
317-
ctrlEnter: ctrlEnter
318-
altEnter: altEnter
319-
shiftEnter: shiftEnter
316+
enter: Enter
317+
ctrlEnter: ctrl + Enter
318+
altEnter: alt + Enter
319+
shiftEnter: shift + Enter
320320
description: |
321321
注意不要和文本节点退出编辑模式的按键一样了,这样会导致冲突
322322
进而导致无法换行
323323
textNodeStartEditMode:
324324
title: 文本节点进入编辑模式
325325
options:
326-
enter: enter
327-
ctrlEnter: ctrlEnter
328-
altEnter: altEnter
329-
shiftEnter: shiftEnter
326+
enter: Enter
327+
ctrlEnter: ctrl + Enter
328+
altEnter: alt + Enter
329+
shiftEnter: shift + Enter
330330
description: |
331331
实际上按F2键也可以进入编辑模式,这里还可以再加选一种
332332
textNodeExitEditMode:
333333
title: 文本节点退出编辑模式
334334
options:
335-
enter: enter
336-
ctrlEnter: ctrlEnter
337-
altEnter: altEnter
338-
shiftEnter: shiftEnter
335+
enter: Enter
336+
ctrlEnter: ctrl + Enter
337+
altEnter: alt + Enter
338+
shiftEnter: shift + Enter
339339
description: |
340340
实际上按Esc键也可以退出,这里还可以再加选一种
341+
textNodeSelectAllWhenStartEditByMouseClick:
342+
title: 文本节点通过双击开始编辑时自动全选内容
343+
description: |
344+
开启后,在文本节点开始编辑时,会全选文本内容
345+
如果您编辑内容通常是想为了直接更改全部内容,建议开启此选项
346+
如果更可能是想为了追加内容,建议关闭此选项
347+
textNodeSelectAllWhenStartEditByKeyboard:
348+
title: 文本节点通过键盘开始编辑时自动全选内容
349+
description: |
350+
开启后,在您按下文本节点编辑模式的按键时,会全选文本内容
341351
enableDragAutoAlign:
342352
title: Enable Drag Auto Align Nodes
343353
description: |

app/src/locales/zh_CN.yml

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -296,31 +296,41 @@ settings:
296296
textNodeContentLineBreak:
297297
title: 文本节点换行方案
298298
options:
299-
enter: enter
300-
ctrlEnter: ctrlEnter
301-
altEnter: altEnter
302-
shiftEnter: shiftEnter
299+
enter: Enter
300+
ctrlEnter: ctrl + Enter
301+
altEnter: alt + Enter
302+
shiftEnter: shift + Enter
303303
description: |
304304
注意不要和文本节点退出编辑模式的按键一样了,这样会导致冲突
305305
进而导致无法换行
306306
textNodeStartEditMode:
307307
title: 文本节点进入编辑模式
308308
options:
309-
enter: enter
310-
ctrlEnter: ctrlEnter
311-
altEnter: altEnter
312-
shiftEnter: shiftEnter
309+
enter: Enter
310+
ctrlEnter: ctrl + Enter
311+
altEnter: alt + Enter
312+
shiftEnter: shift + Enter
313313
description: |
314314
实际上按F2键也可以进入编辑模式,这里还可以再加选一种
315315
textNodeExitEditMode:
316316
title: 文本节点退出编辑模式
317317
options:
318-
enter: enter
319-
ctrlEnter: ctrlEnter
320-
altEnter: altEnter
321-
shiftEnter: shiftEnter
318+
enter: Enter
319+
ctrlEnter: ctrl + Enter
320+
altEnter: alt + Enter
321+
shiftEnter: shift + Enter
322322
description: |
323323
实际上按Esc键也可以退出,这里还可以再加选一种
324+
textNodeSelectAllWhenStartEditByMouseClick:
325+
title: 文本节点通过双击开始编辑时自动全选内容
326+
description: |
327+
开启后,在文本节点开始编辑时,会全选文本内容
328+
如果您编辑内容通常是想为了直接更改全部内容,建议开启此选项
329+
如果更可能是想为了追加内容,建议关闭此选项
330+
textNodeSelectAllWhenStartEditByKeyboard:
331+
title: 文本节点通过键盘开始编辑时自动全选内容
332+
description: |
333+
开启后,在您按下文本节点编辑模式的按键时,会全选文本内容
324334
enableDragAutoAlign:
325335
title: 鼠标拖动自动吸附对齐节点
326336
description: |

app/src/locales/zh_TW.yml

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -284,31 +284,41 @@ settings:
284284
textNodeContentLineBreak:
285285
title: 文本节点换行方案
286286
options:
287-
enter: enter
288-
ctrlEnter: ctrlEnter
289-
altEnter: altEnter
290-
shiftEnter: shiftEnter
287+
enter: Enter
288+
ctrlEnter: ctrl + Enter
289+
altEnter: alt + Enter
290+
shiftEnter: shift + Enter
291291
description: |
292292
注意不要和文本节点退出编辑模式的按键一样了,这样会导致冲突
293293
进而导致无法换行
294294
textNodeStartEditMode:
295295
title: 文本节点进入编辑模式
296296
options:
297-
enter: enter
298-
ctrlEnter: ctrlEnter
299-
altEnter: altEnter
300-
shiftEnter: shiftEnter
297+
enter: Enter
298+
ctrlEnter: ctrl + Enter
299+
altEnter: alt + Enter
300+
shiftEnter: shift + Enter
301301
description: |
302302
实际上按F2键也可以进入编辑模式,这里还可以再加选一种
303303
textNodeExitEditMode:
304304
title: 文本节点退出编辑模式
305305
options:
306-
enter: enter
307-
ctrlEnter: ctrlEnter
308-
altEnter: altEnter
309-
shiftEnter: shiftEnter
306+
enter: Enter
307+
ctrlEnter: ctrl + Enter
308+
altEnter: alt + Enter
309+
shiftEnter: shift + Enter
310310
description: |
311311
实际上按Esc键也可以退出,这里还可以再加选一种
312+
textNodeSelectAllWhenStartEditByMouseClick:
313+
title: 文本节点通过双击开始编辑时自动全选内容
314+
description: |
315+
开启后,在文本节点开始编辑时,会全选文本内容
316+
如果您编辑内容通常是想为了直接更改全部内容,建议开启此选项
317+
如果更可能是想为了追加内容,建议关闭此选项
318+
textNodeSelectAllWhenStartEditByKeyboard:
319+
title: 文本节点通过键盘开始编辑时自动全选内容
320+
description: |
321+
开启后,在您按下文本节点编辑模式的按键时,会全选文本内容
312322
enableDragAutoAlign:
313323
title: 鼠标拖动自动对齐节点
314324
description: |

app/src/pages/settings/control.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
RotateCw,
1313
ScanEye,
1414
Skull,
15+
TextCursorInput,
1516
TextSelect,
1617
} from "lucide-react";
1718
import { FieldGroup, SettingField } from "./_field";
@@ -28,6 +29,12 @@ export default function Control() {
2829
<SettingField icon={<ListRestart />} settingKey="textNodeStartEditMode" type="select" />
2930
<SettingField icon={<ListEnd />} settingKey="textNodeContentLineBreak" type="select" />
3031
<SettingField icon={<ListCheck />} settingKey="textNodeExitEditMode" type="select" />
32+
<SettingField
33+
icon={<TextCursorInput />}
34+
settingKey="textNodeSelectAllWhenStartEditByMouseClick"
35+
type="switch"
36+
/>
37+
<SettingField icon={<TextCursorInput />} settingKey="textNodeSelectAllWhenStartEditByKeyboard" type="switch" />
3138
</FieldGroup>
3239

3340
<FieldGroup title="Edge 连线" icon={<GitCompareArrows />}>

0 commit comments

Comments
 (0)