diff --git a/packages/frontend/src/components/TerminalTabBar.vue b/packages/frontend/src/components/TerminalTabBar.vue index d0553bf..8040c44 100644 --- a/packages/frontend/src/components/TerminalTabBar.vue +++ b/packages/frontend/src/components/TerminalTabBar.vue @@ -328,6 +328,41 @@ const handleDragStart = (event: DragEvent) => { } }; +// 新增:处理长按事件以在手机模式下触发挂起和取消挂起 +let touchTimeout: number | null = null; +const touchDuration = 800; // 长按时间阈值,单位毫秒 +let touchedSessionId: string | null = null; + +const handleTouchStart = (event: TouchEvent, sessionId: string) => { + if (props.isMobile) { + touchedSessionId = sessionId; + if (touchTimeout) { + clearTimeout(touchTimeout); + } + touchTimeout = window.setTimeout(() => { + if (touchedSessionId === sessionId) { + const sessionState = sessionStore.sessions.get(sessionId); + if (sessionState && sessionState.isMarkedForSuspend) { + console.log(`[TabBar] Long press to unmark suspend for session ID: ${sessionId}`); + sessionStore.requestUnmarkSshSuspend(sessionId); + } else if (sessionState) { + console.log(`[TabBar] Long press to mark suspend for session ID: ${sessionId}`); + sessionStore.requestStartSshSuspend(sessionId); + } + } + touchTimeout = null; + }, touchDuration); + } +}; + +const handleTouchEnd = (event: TouchEvent) => { + if (touchTimeout) { + clearTimeout(touchTimeout); + touchTimeout = null; + } + touchedSessionId = null; +}; +