Skip to content

Commit fdc9271

Browse files
authored
[PM-17368] After cut, update text and clear selection. (#4714)
1 parent 6fdb390 commit fdc9271

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

app/src/main/java/com/x8bit/bitwarden/ui/platform/components/field/BitwardenPasswordField.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import androidx.compose.ui.Modifier
2727
import androidx.compose.ui.focus.FocusRequester
2828
import androidx.compose.ui.focus.focusRequester
2929
import androidx.compose.ui.platform.LocalClipboardManager
30+
import androidx.compose.ui.platform.LocalFocusManager
3031
import androidx.compose.ui.platform.LocalTextToolbar
3132
import androidx.compose.ui.platform.TextToolbar
3233
import androidx.compose.ui.res.stringResource
@@ -123,6 +124,7 @@ fun BitwardenPasswordField(
123124
onValueChange = onValueChange,
124125
defaultTextToolbar = LocalTextToolbar.current,
125126
clipboardManager = LocalClipboardManager.current.nativeClipboard,
127+
focusManager = LocalFocusManager.current,
126128
)
127129

128130
TextToolbarType.NONE -> BitwardenEmptyTextToolbar

app/src/main/java/com/x8bit/bitwarden/ui/platform/components/field/BitwardenTextField.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import androidx.compose.ui.focus.onFocusChanged
3838
import androidx.compose.ui.focus.onFocusEvent
3939
import androidx.compose.ui.layout.onGloballyPositioned
4040
import androidx.compose.ui.platform.LocalClipboardManager
41+
import androidx.compose.ui.platform.LocalFocusManager
4142
import androidx.compose.ui.platform.LocalTextToolbar
4243
import androidx.compose.ui.platform.TextToolbar
4344
import androidx.compose.ui.semantics.CustomAccessibilityAction
@@ -250,6 +251,7 @@ fun BitwardenTextField(
250251
onValueChange = onValueChange,
251252
defaultTextToolbar = LocalTextToolbar.current,
252253
clipboardManager = LocalClipboardManager.current.nativeClipboard,
254+
focusManager = LocalFocusManager.current,
253255
)
254256

255257
TextToolbarType.NONE -> BitwardenEmptyTextToolbar

app/src/main/java/com/x8bit/bitwarden/ui/platform/components/field/toolbar/BitwardenCutCopyTextToolbar.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.x8bit.bitwarden.ui.platform.components.field.toolbar
22

33
import android.content.ClipData
44
import android.content.ClipboardManager
5+
import androidx.compose.ui.focus.FocusManager
56
import androidx.compose.ui.geometry.Rect
67
import androidx.compose.ui.platform.TextToolbar
78
import androidx.compose.ui.platform.TextToolbarStatus
@@ -19,6 +20,7 @@ class BitwardenCutCopyTextToolbar(
1920
private val onValueChange: (String) -> Unit,
2021
private val defaultTextToolbar: TextToolbar,
2122
private val clipboardManager: ClipboardManager,
23+
private val focusManager: FocusManager,
2224
) : TextToolbar {
2325
override val status: TextToolbarStatus get() = defaultTextToolbar.status
2426

@@ -58,7 +60,16 @@ class BitwardenCutCopyTextToolbar(
5860
)
5961
},
6062
)
61-
onValueChange("")
63+
// Clear selection
64+
focusManager.clearFocus(force = true)
65+
// Add correct text without selection
66+
onValueChange(
67+
value.text.replaceRange(
68+
minOf(value.selection.start, value.selection.end),
69+
maxOf(value.selection.start, value.selection.end),
70+
"",
71+
),
72+
)
6273
}
6374
},
6475
onSelectAllRequested = onSelectAllRequested,

0 commit comments

Comments
 (0)