[PM-17368] After cut, update text and clear selection. (#4714)

This commit is contained in:
André Bispo
2025-02-11 23:02:08 +00:00
committed by GitHub
parent 6fdb39026f
commit fdc92712c4
3 changed files with 16 additions and 1 deletions

View File

@@ -27,6 +27,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.platform.LocalTextToolbar
import androidx.compose.ui.platform.TextToolbar
import androidx.compose.ui.res.stringResource
@@ -123,6 +124,7 @@ fun BitwardenPasswordField(
onValueChange = onValueChange,
defaultTextToolbar = LocalTextToolbar.current,
clipboardManager = LocalClipboardManager.current.nativeClipboard,
focusManager = LocalFocusManager.current,
)
TextToolbarType.NONE -> BitwardenEmptyTextToolbar

View File

@@ -38,6 +38,7 @@ import androidx.compose.ui.focus.onFocusChanged
import androidx.compose.ui.focus.onFocusEvent
import androidx.compose.ui.layout.onGloballyPositioned
import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.platform.LocalTextToolbar
import androidx.compose.ui.platform.TextToolbar
import androidx.compose.ui.semantics.CustomAccessibilityAction
@@ -250,6 +251,7 @@ fun BitwardenTextField(
onValueChange = onValueChange,
defaultTextToolbar = LocalTextToolbar.current,
clipboardManager = LocalClipboardManager.current.nativeClipboard,
focusManager = LocalFocusManager.current,
)
TextToolbarType.NONE -> BitwardenEmptyTextToolbar

View File

@@ -2,6 +2,7 @@ package com.x8bit.bitwarden.ui.platform.components.field.toolbar
import android.content.ClipData
import android.content.ClipboardManager
import androidx.compose.ui.focus.FocusManager
import androidx.compose.ui.geometry.Rect
import androidx.compose.ui.platform.TextToolbar
import androidx.compose.ui.platform.TextToolbarStatus
@@ -19,6 +20,7 @@ class BitwardenCutCopyTextToolbar(
private val onValueChange: (String) -> Unit,
private val defaultTextToolbar: TextToolbar,
private val clipboardManager: ClipboardManager,
private val focusManager: FocusManager,
) : TextToolbar {
override val status: TextToolbarStatus get() = defaultTextToolbar.status
@@ -58,7 +60,16 @@ class BitwardenCutCopyTextToolbar(
)
},
)
onValueChange("")
// Clear selection
focusManager.clearFocus(force = true)
// Add correct text without selection
onValueChange(
value.text.replaceRange(
minOf(value.selection.start, value.selection.end),
maxOf(value.selection.start, value.selection.end),
"",
),
)
}
},
onSelectAllRequested = onSelectAllRequested,