Skip to content
Snippets Groups Projects
Commit 69216564 authored by Nico's avatar Nico Committed by Sebastian
Browse files

Don't use text PointerIcon on buttons in text fields

Thanks to the research of Paul, I could quickly find the right modifier
to change the mouse appearance upon hovering buttons.

For most buttons we stay with the default PointerIcon, just inside text
fields it showed the text PointerIcon. With this commit the default
PointerIcon is shown consistently across all buttons.

In a later MR we could switch all buttons to show the hand icon, but I
wouldn't do it because later Compose versions might do this
automatically and the APIs used here are experimental.
parent 91c764b8
No related branches found
No related tags found
1 merge request!175Don't use text PointerIcon on buttons in text fields
Pipeline #9954 passed
......@@ -34,11 +34,15 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.PersonAdd
import androidx.compose.material.icons.filled.Search
import androidx.compose.runtime.Composable
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.pointer.PointerIconDefaults
import androidx.compose.ui.input.pointer.pointerHoverIcon
import androidx.compose.ui.unit.dp
import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n
@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun SearchTextField(searchValue: String, onValueChange: (String) -> Unit, onContactAdd: () -> Unit) {
TextField(
......@@ -58,7 +62,7 @@ fun SearchTextField(searchValue: String, onValueChange: (String) -> Unit, onCont
IconButton(
onClick = onContactAdd,
modifier = Modifier.padding(end = 10.dp).size(32.dp)
.background(MaterialTheme.colors.primary, CircleShape)
.background(MaterialTheme.colors.primary, CircleShape).pointerHoverIcon(PointerIconDefaults.Default)
) {
Icon(
Icons.Filled.PersonAdd,
......
......@@ -60,10 +60,13 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.shadow
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.input.pointer.PointerIconDefaults
import androidx.compose.ui.input.pointer.pointerHoverIcon
import androidx.compose.ui.platform.ClipboardManager
import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.text.AnnotatedString
......@@ -359,7 +362,7 @@ fun OwnLink(
}
}
@OptIn(ExperimentalFoundationApi::class)
@OptIn(ExperimentalFoundationApi::class, ExperimentalComposeUiApi::class)
@Composable
fun ContactLink(
remoteHandshakeLink: String,
......@@ -410,26 +413,29 @@ fun ContactLink(
alignment = Alignment.BottomCenter,
)
) {
IconButton({
val clipboardText = clipboardManager.getText().toString()
if (clipboardText.isNotEmpty()) {
setRemoteHandshakeLink(clipboardManager.getText().toString())
coroutineScope.launch {
scaffoldState.snackbarHostState.showSnackbar(
message = i18n("contact.add.remote.link_pasted_snackbar"),
duration = SnackbarDuration.Short,
)
}
aliasFocusRequester.requestFocus()
} else {
coroutineScope.launch {
scaffoldState.snackbarHostState.showSnackbar(
message = i18n("contact.add.remote.paste_error_snackbar"),
duration = SnackbarDuration.Short,
)
IconButton(
{
val clipboardText = clipboardManager.getText().toString()
if (clipboardText.isNotEmpty()) {
setRemoteHandshakeLink(clipboardManager.getText().toString())
coroutineScope.launch {
scaffoldState.snackbarHostState.showSnackbar(
message = i18n("contact.add.remote.link_pasted_snackbar"),
duration = SnackbarDuration.Short,
)
}
aliasFocusRequester.requestFocus()
} else {
coroutineScope.launch {
scaffoldState.snackbarHostState.showSnackbar(
message = i18n("contact.add.remote.paste_error_snackbar"),
duration = SnackbarDuration.Short,
)
}
}
}
}) {
},
Modifier.pointerHoverIcon(PointerIconDefaults.Default)
) {
Icon(
Icons.Filled.ContentPaste,
"contact.add.remote.paste_tooltip",
......
......@@ -48,6 +48,8 @@ import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.input.pointer.PointerIconDefaults
import androidx.compose.ui.input.pointer.pointerHoverIcon
import androidx.compose.ui.res.ResourceLoader
import androidx.compose.ui.res.loadImageBitmap
import androidx.compose.ui.unit.dp
......@@ -80,6 +82,7 @@ fun main() = preview {
}
}
@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun ConversationInput(
text: String,
......@@ -118,7 +121,8 @@ fun ConversationInput(
}
},
Modifier.padding(4.dp).size(32.dp)
.background(MaterialTheme.colors.primary, CircleShape),
.background(MaterialTheme.colors.primary, CircleShape)
.pointerHoverIcon(PointerIconDefaults.Default),
) {
if (image == null) {
Icon(Icons.Filled.Add, i18n("access.attachment_add"), Modifier.size(24.dp), Color.White)
......@@ -129,7 +133,7 @@ fun ConversationInput(
},
trailingIcon = {
IconButton(
onClick = onSend, modifier = Modifier.padding(4.dp).size(32.dp),
onClick = onSend, modifier = Modifier.padding(4.dp).size(32.dp).pointerHoverIcon(PointerIconDefaults.Default),
) {
Icon(
Icons.Filled.Send,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment