mirror of
https://github.com/ggml-org/llama.cpp.git
synced 2025-10-29 08:41:22 +00:00
Prevent premature submission on IME input (#16673)
* fix: Prevent premature submission on IME input * chore: update webui static build * refactor: Put IME completion checker in a helper function and add checking for `KeyboardEvent.eventKey === 229` * chore: update webui static build * chore: update webui static build * chore: update webui static build
This commit is contained in:
committed by
GitHub
parent
0e4a0cf2fa
commit
79068501fa
Binary file not shown.
@@ -26,6 +26,7 @@
|
|||||||
MimeTypeImage,
|
MimeTypeImage,
|
||||||
MimeTypeText
|
MimeTypeText
|
||||||
} from '$lib/enums/files';
|
} from '$lib/enums/files';
|
||||||
|
import { isIMEComposing } from '$lib/utils/is-ime-composing';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
class?: string;
|
class?: string;
|
||||||
@@ -97,7 +98,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function handleKeydown(event: KeyboardEvent) {
|
async function handleKeydown(event: KeyboardEvent) {
|
||||||
if (event.key === 'Enter' && !event.shiftKey) {
|
if (event.key === 'Enter' && !event.shiftKey && !isIMEComposing(event)) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
if ((!message.trim() && uploadedFiles.length === 0) || disabled || isLoading) return;
|
if ((!message.trim() && uploadedFiles.length === 0) || disabled || isLoading) return;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { getDeletionInfo } from '$lib/stores/chat.svelte';
|
import { getDeletionInfo } from '$lib/stores/chat.svelte';
|
||||||
import { copyToClipboard } from '$lib/utils/copy';
|
import { copyToClipboard } from '$lib/utils/copy';
|
||||||
|
import { isIMEComposing } from '$lib/utils/is-ime-composing';
|
||||||
import ChatMessageAssistant from './ChatMessageAssistant.svelte';
|
import ChatMessageAssistant from './ChatMessageAssistant.svelte';
|
||||||
import ChatMessageUser from './ChatMessageUser.svelte';
|
import ChatMessageUser from './ChatMessageUser.svelte';
|
||||||
|
|
||||||
@@ -93,7 +94,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function handleEditKeydown(event: KeyboardEvent) {
|
function handleEditKeydown(event: KeyboardEvent) {
|
||||||
if (event.key === 'Enter' && !event.shiftKey) {
|
// Check for IME composition using isComposing property and keyCode 229 (specifically for IME composition on Safari)
|
||||||
|
// This prevents saving edit when confirming IME word selection (e.g., Japanese/Chinese input)
|
||||||
|
if (event.key === 'Enter' && !event.shiftKey && !isIMEComposing(event)) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
handleSaveEdit();
|
handleSaveEdit();
|
||||||
} else if (event.key === 'Escape') {
|
} else if (event.key === 'Escape') {
|
||||||
|
|||||||
5
tools/server/webui/src/lib/utils/is-ime-composing.ts
Normal file
5
tools/server/webui/src/lib/utils/is-ime-composing.ts
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
export function isIMEComposing(event: KeyboardEvent) {
|
||||||
|
// Check for IME composition using isComposing property and keyCode 229 (specifically for IME composition on Safari, which is notorious for not supporting KeyboardEvent.isComposing)
|
||||||
|
// This prevents form submission when confirming IME word selection (e.g., Japanese/Chinese input)
|
||||||
|
return event.isComposing || event.keyCode === 229;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user