From aafb39c435341d2ba449d109adeeba7b6dc4dacd Mon Sep 17 00:00:00 2001 From: Doji Date: Wed, 2 Sep 2026 18:58:51 +0800 Subject: [PATCH] fix(stage-layouts): fix Android input bubble dragging (#2438) --- .../Layouts/MobileInteractiveArea.vue | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/packages/stage-layouts/src/components/Layouts/MobileInteractiveArea.vue b/packages/stage-layouts/src/components/Layouts/MobileInteractiveArea.vue index 6eee3cf06..2f55b34ab 100644 --- a/packages/stage-layouts/src/components/Layouts/MobileInteractiveArea.vue +++ b/packages/stage-layouts/src/components/Layouts/MobileInteractiveArea.vue @@ -149,6 +149,20 @@ function isMobileDevice() { return /Mobi|Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) } +function isAndroidDevice() { + return /Android/i.test(navigator.userAgent) +} + +const messageInputPointerEventsClass = computed(() => { + if (inputBubbleDocked.value) + return 'pointer-events-none' + + if (isAndroidDevice()) + return 'pointer-events-none group-focus-within:pointer-events-auto' + + return 'pointer-events-auto' +}) + const { isListening, startStreamingTranscription, stopStreamingTranscription } = useTranscriptions( { messageInputRef: messageInput, @@ -260,6 +274,7 @@ function handleInputBubbleLongPress() { suppressNextInputBubbleClick = true inputBubbleDragging.value = true + inputBubble.value!.querySelector('textarea')!.blur() inputBubble.value!.style.transform = 'translate3d(0, 0, 0) scale(.98)' } @@ -277,6 +292,11 @@ function handleInputBubblePointerDown(event: PointerEvent) { event.preventDefault() } +function handleInputBubbleContextMenu(event: MouseEvent) { + if (isAndroidDevice()) + event.preventDefault() +} + onLongPress(inputBubble, handleInputBubbleLongPress, { delay: 500, distanceThreshold: 10, @@ -538,21 +558,23 @@ onUnmounted(() => { : 'max-w-[70%] w-full focus-within:max-w-full', ]" @click="handleInputBubbleClick" + @contextmenu="handleInputBubbleContextMenu" @pointerdown="handleInputBubblePointerDown" > +