Merge remote-tracking branch 'thatonecalculator/chat-swap-enter-ctrlenter' into develop
This commit is contained in:
commit
de17d4d9fe
|
@ -797,6 +797,7 @@ translatedFrom: "{x}から翻訳"
|
||||||
accountDeletionInProgress: "アカウントの削除が進行中です"
|
accountDeletionInProgress: "アカウントの削除が進行中です"
|
||||||
usernameInfo: "サーバー上であなたのアカウントを一意に識別するための名前。アルファベット(a~z, A~Z)、数字(0~9)、およびアンダーバー(_)が使用できます。ユーザー名は後から変更することは出来ません。"
|
usernameInfo: "サーバー上であなたのアカウントを一意に識別するための名前。アルファベット(a~z, A~Z)、数字(0~9)、およびアンダーバー(_)が使用できます。ユーザー名は後から変更することは出来ません。"
|
||||||
aiChanMode: "藍モード"
|
aiChanMode: "藍モード"
|
||||||
|
enterSendsMessage: "メッセージングでReturnキーを押すと、メッセージが送信されます(デフォルトはCtrl + Returnです)"
|
||||||
keepCw: "CWを維持する"
|
keepCw: "CWを維持する"
|
||||||
pubSub: "Pub/Subのアカウント"
|
pubSub: "Pub/Subのアカウント"
|
||||||
lastCommunication: "直近の通信"
|
lastCommunication: "直近の通信"
|
||||||
|
|
|
@ -125,9 +125,22 @@ function onDrop(ev: DragEvent): void {
|
||||||
|
|
||||||
function onKeydown(ev: KeyboardEvent) {
|
function onKeydown(ev: KeyboardEvent) {
|
||||||
typing();
|
typing();
|
||||||
if ((ev.key === 'Enter') && (ev.ctrlKey || ev.metaKey) && canSend) {
|
let sendOnEnter = localStorage.getItem('enterSendsMessage') === 'true' || defaultStore.state.enterSendsMessage;
|
||||||
|
if (sendOnEnter) {
|
||||||
|
if ((ev.key === 'Enter') && (ev.ctrlKey || ev.metaKey)) {
|
||||||
|
textEl.value += '\n';
|
||||||
|
}
|
||||||
|
else if (ev.key === 'Enter' && !ev.shiftKey && !('ontouchstart' in document.documentElement) && canSend) {
|
||||||
|
ev.preventDefault();
|
||||||
send();
|
send();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if ((ev.key === 'Enter') && (ev.ctrlKey || ev.metaKey) && canSend) {
|
||||||
|
ev.preventDefault();
|
||||||
|
send();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function onCompositionUpdate() {
|
function onCompositionUpdate() {
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
<FormSwitch v-model="imageNewTab" class="_formBlock">{{ i18n.ts.openImageInNewTab }}</FormSwitch>
|
<FormSwitch v-model="imageNewTab" class="_formBlock">{{ i18n.ts.openImageInNewTab }}</FormSwitch>
|
||||||
<FormSwitch v-model="enableInfiniteScroll" class="_formBlock">{{ i18n.ts.enableInfiniteScroll }}</FormSwitch>
|
<FormSwitch v-model="enableInfiniteScroll" class="_formBlock">{{ i18n.ts.enableInfiniteScroll }}</FormSwitch>
|
||||||
<FormSwitch v-model="useReactionPickerForContextMenu" class="_formBlock">{{ i18n.ts.useReactionPickerForContextMenu }}</FormSwitch>
|
<FormSwitch v-model="useReactionPickerForContextMenu" class="_formBlock">{{ i18n.ts.useReactionPickerForContextMenu }}</FormSwitch>
|
||||||
|
<FormSwitch v-model="enterSendsMessage" class="_formBlock">{{ i18n.ts.enterSendsMessage }}</FormSwitch>
|
||||||
<FormSwitch v-model="disablePagesScript" class="_formBlock">{{ i18n.ts.disablePagesScript }}</FormSwitch>
|
<FormSwitch v-model="disablePagesScript" class="_formBlock">{{ i18n.ts.disablePagesScript }}</FormSwitch>
|
||||||
|
|
||||||
<FormSelect v-model="serverDisconnectedBehavior" class="_formBlock">
|
<FormSelect v-model="serverDisconnectedBehavior" class="_formBlock">
|
||||||
|
@ -142,6 +143,7 @@ const showFixedPostForm = computed(defaultStore.makeGetterSetter('showFixedPostF
|
||||||
const numberOfPageCache = computed(defaultStore.makeGetterSetter('numberOfPageCache'));
|
const numberOfPageCache = computed(defaultStore.makeGetterSetter('numberOfPageCache'));
|
||||||
const instanceTicker = computed(defaultStore.makeGetterSetter('instanceTicker'));
|
const instanceTicker = computed(defaultStore.makeGetterSetter('instanceTicker'));
|
||||||
const enableInfiniteScroll = computed(defaultStore.makeGetterSetter('enableInfiniteScroll'));
|
const enableInfiniteScroll = computed(defaultStore.makeGetterSetter('enableInfiniteScroll'));
|
||||||
|
const enterSendsMessage = computed(defaultStore.makeGetterSetter('enterSendsMessage'));
|
||||||
const useReactionPickerForContextMenu = computed(defaultStore.makeGetterSetter('useReactionPickerForContextMenu'));
|
const useReactionPickerForContextMenu = computed(defaultStore.makeGetterSetter('useReactionPickerForContextMenu'));
|
||||||
const squareAvatars = computed(defaultStore.makeGetterSetter('squareAvatars'));
|
const squareAvatars = computed(defaultStore.makeGetterSetter('squareAvatars'));
|
||||||
const aiChanMode = computed(defaultStore.makeGetterSetter('aiChanMode'));
|
const aiChanMode = computed(defaultStore.makeGetterSetter('aiChanMode'));
|
||||||
|
|
|
@ -255,6 +255,10 @@ export const defaultStore = markRaw(new Storage('base', {
|
||||||
where: 'device',
|
where: 'device',
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
|
enterSendsMessage: {
|
||||||
|
where: 'device',
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// TODO: 他のタブと永続化されたstateを同期
|
// TODO: 他のタブと永続化されたstateを同期
|
||||||
|
|
Loading…
Reference in New Issue