From 9f8a4ffa9057a57a92176d6c26cab07f885f48ca Mon Sep 17 00:00:00 2001
From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com>
Date: Mon, 23 Mar 2026 21:12:06 +0100
Subject: [PATCH] fix: prevent native text selection on mobile long-press
iOS triggered both the app context menu and native text selection overlay
on long-press. Three-layer fix: CSS user-select:none on buttons/[role=button]/
[data-context-menu] elements; non-passive touchstart listener with conditional
preventDefault on context-menu targets; removeAllRanges() at timer fire to
clear any residual selection. Added data-context-menu to all mobile surfaces
that use onContextMenu handlers.
---
packages/web/src/components/chat/Message.tsx | 3 ++-
packages/web/src/components/layout/MobileDmsScreen.tsx | 1 +
packages/web/src/components/layout/MobileFolderSheet.tsx | 2 +-
.../web/src/components/layout/MobileSpacesScreen.tsx | 2 ++
.../web/src/components/layout/MobileVoiceFullScreen.tsx | 1 +
packages/web/src/components/ui/ContextMenuRenderer.tsx | 6 +++++-
packages/web/src/styles/globals.css | 9 +++++++--
7 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/packages/web/src/components/chat/Message.tsx b/packages/web/src/components/chat/Message.tsx
index a8a309cf..56dabc79 100644
--- a/packages/web/src/components/chat/Message.tsx
+++ b/packages/web/src/components/chat/Message.tsx
@@ -224,6 +224,7 @@ export function Message({ message, isCompact, isFirstInGroup, previousMessageId
const ownerId = spaces.find(s => s.id === currentSpaceId)?.ownerId;
const getMemberDisplayColor = (userId: string) => {
+ if (isDmMessage) return { color: '#d8d8de' };
const member = members.find(m => m.userId === userId);
if (member?.roles && member.roles.length > 0) {
const sorted = [...member.roles].sort((a, b) => b.position - a.position);
@@ -524,7 +525,7 @@ export function Message({ message, isCompact, isFirstInGroup, previousMessageId
);
return (
-
+
{content}
);
diff --git a/packages/web/src/components/layout/MobileDmsScreen.tsx b/packages/web/src/components/layout/MobileDmsScreen.tsx
index 5a3c8090..49fbca1e 100644
--- a/packages/web/src/components/layout/MobileDmsScreen.tsx
+++ b/packages/web/src/components/layout/MobileDmsScreen.tsx
@@ -165,6 +165,7 @@ export function MobileDmsScreen() {
return (