Added hand icon on hover where it's intended to be

This commit is contained in:
Abdelilah El Aissaoui 2022-05-27 20:07:24 +02:00
parent eca68aaf07
commit 60a1ef21d8
15 changed files with 85 additions and 28 deletions

View File

@ -16,6 +16,8 @@ import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.pointer.PointerIconDefaults
import androidx.compose.ui.input.pointer.pointerHoverIcon
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp
@ -204,7 +206,8 @@ class App {
IconButton(
modifier = Modifier
.padding(horizontal = 8.dp)
.size(24.dp),
.size(24.dp)
.pointerHoverIcon(PointerIconDefaults.Hand),
onClick = onOpenSettings
) {
Icon(

View File

@ -1,8 +1,12 @@
package app.extensions
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
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
fun Modifier.backgroundIf(condition: Boolean, color: Color): Modifier {
return if (condition) {
@ -10,4 +14,10 @@ fun Modifier.backgroundIf(condition: Boolean, color: Color): Modifier {
} else {
this
}
}
@OptIn(ExperimentalComposeUiApi::class)
fun Modifier.handMouseClickable(onClick: () -> Unit): Modifier {
return this.clickable { onClick() }
.pointerHoverIcon(PointerIconDefaults.Hand)
}

View File

@ -1,3 +1,5 @@
@file:OptIn(ExperimentalComposeUiApi::class)
package app.ui
import androidx.compose.foundation.Image
@ -10,12 +12,16 @@ import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.input.pointer.PointerIconDefaults
import androidx.compose.ui.input.pointer.pointerHoverIcon
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import app.extensions.handMouseClickable
import app.extensions.lineAt
import app.theme.primaryTextColor
import app.ui.components.PrimaryButton
@ -52,7 +58,7 @@ fun Blame(
.width(200.dp)
.fillMaxHeight()
.background(MaterialTheme.colors.surface)
.clickable { onSelectCommit(commit) },
.handMouseClickable { onSelectCommit(commit) },
verticalArrangement = Arrangement.Center,
) {
Text(
@ -125,6 +131,7 @@ fun MinimizedBlame(
IconButton(
onClick = onClose,
modifier = Modifier.padding(horizontal = 16.dp)
.pointerHoverIcon(PointerIconDefaults.Hand)
) {
Image(
painter = painterResource("close.svg"),
@ -158,7 +165,9 @@ private fun Header(
Spacer(modifier = Modifier.weight(1f))
IconButton(
onClick = onClose
onClick = onClose,
modifier = Modifier
.pointerHoverIcon(PointerIconDefaults.Hand)
) {
Image(
painter = painterResource("close.svg"),

View File

@ -210,7 +210,7 @@ fun CommitLogChanges(
modifier = Modifier
.height(40.dp)
.fillMaxWidth()
.clickable {
.handMouseClickable {
onDiffSelected(diffEntry)
}
.backgroundIf(

View File

@ -1,3 +1,5 @@
@file:OptIn(ExperimentalComposeUiApi::class)
package app.ui
import androidx.compose.foundation.Image
@ -14,9 +16,12 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.input.pointer.PointerIconDefaults
import androidx.compose.ui.input.pointer.pointerHoverIcon
import androidx.compose.ui.res.loadImageBitmap
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontFamily
@ -326,7 +331,9 @@ fun DiffHeader(
}
IconButton(
onClick = onCloseDiffView
onClick = onCloseDiffView,
modifier = Modifier
.pointerHoverIcon(PointerIconDefaults.Hand)
) {
Image(
painter = painterResource("close.svg"),

View File

@ -17,9 +17,12 @@ import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.input.pointer.PointerIconDefaults
import androidx.compose.ui.input.pointer.pointerHoverIcon
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import app.extensions.handMouseClickable
import app.theme.primaryTextColor
import app.ui.context_menu.*
import app.viewmodels.MenuViewModel
@ -106,7 +109,8 @@ fun Menu(
Box {
IconMenuButton(
modifier = Modifier.padding(end = 8.dp),
modifier = Modifier
.padding(end = 8.dp),
icon = painterResource("more_vert.svg"),
onClick = {
showAdditionalOptionsDropDownMenu = true
@ -151,7 +155,7 @@ fun MenuButton(
Box(
modifier = modifier
.padding(horizontal = 2.dp)
.clickable { if (enabled) onClick() }
.handMouseClickable { if (enabled) onClick() }
.border(ButtonDefaults.outlinedBorder, RoundedCornerShape(3.dp))
.padding(vertical = 8.dp, horizontal = 16.dp),
) {
@ -196,7 +200,7 @@ fun ExtendedMenuButton(
Row(modifier = Modifier.height(IntrinsicSize.Min)) {
Box(
modifier = modifier
.clickable { if (enabled) onClick() }
.handMouseClickable { if (enabled) onClick() }
.border(ButtonDefaults.outlinedBorder, RoundedCornerShape(topStart = 3.dp, bottomStart = 3.dp))
.padding(vertical = 8.dp, horizontal = 16.dp),
) {
@ -226,7 +230,7 @@ fun ExtendedMenuButton(
.width(20.dp)
.fillMaxHeight()
.border(ButtonDefaults.outlinedBorder, RoundedCornerShape(topEnd = 3.dp, bottomEnd = 3.dp))
.clickable {
.handMouseClickable {
showDropDownMenu = true
},
contentAlignment = Alignment.Center,
@ -266,7 +270,8 @@ fun IconMenuButton(
}
IconButton(
modifier = modifier,
modifier = modifier
.pointerHoverIcon(PointerIconDefaults.Hand),
enabled = enabled,
onClick = onClick,
) {

View File

@ -1,4 +1,4 @@
@file:OptIn(ExperimentalFoundationApi::class)
@file:OptIn(ExperimentalFoundationApi::class, ExperimentalComposeUiApi::class)
package app.ui
@ -12,7 +12,10 @@ import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.*
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.PointerIconDefaults
import androidx.compose.ui.input.pointer.pointerHoverIcon
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import app.extensions.simpleName
@ -69,7 +72,8 @@ fun Remotes(
onClick = { showEditRemotesDialog = true },
modifier = Modifier
.padding(end = 8.dp)
.size(16.dp),
.size(16.dp)
.pointerHoverIcon(PointerIconDefaults.Hand),
) {
Icon(
painter = painterResource("settings.svg"),

View File

@ -31,10 +31,7 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import app.extensions.backgroundIf
import app.extensions.fileName
import app.extensions.isMerging
import app.extensions.parentDirectoryPath
import app.extensions.*
import app.git.DiffEntryType
import app.git.StatusEntry
import app.theme.*
@ -238,7 +235,7 @@ fun UncommitedChangesButtons(
.height(40.dp)
.clip(MaterialTheme.shapes.small.copy(topStart = CornerSize(0.dp), bottomStart = CornerSize(0.dp)))
.background(MaterialTheme.colors.confirmationButton)
.clickable { showDropDownMenu = true }
.handMouseClickable { showDropDownMenu = true }
) {
Icon(
Icons.Default.ArrowDropDown,
@ -467,7 +464,7 @@ private fun FileEntry(
Box(
modifier = Modifier
.clickable { onClick() }
.handMouseClickable { onClick() }
.fillMaxWidth()
.pointerMoveFilter(
onEnter = {

View File

@ -9,6 +9,7 @@ import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import app.extensions.handMouseClickable
@OptIn(ExperimentalAnimationApi::class)
@Composable
@ -20,7 +21,7 @@ fun VerticalExpandable(
) {
Column {
Box(
modifier = Modifier.clickable {
modifier = Modifier.handMouseClickable {
onExpand()
}
) {

View File

@ -1,3 +1,5 @@
@file:OptIn(ExperimentalComposeUiApi::class)
package app.ui.components
import androidx.compose.foundation.background
@ -13,15 +15,19 @@ import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.Close
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.draw.shadow
import androidx.compose.ui.input.pointer.PointerIconDefaults
import androidx.compose.ui.input.pointer.pointerHoverIcon
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import app.AppStateManager
import app.di.AppComponent
import app.di.DaggerTabComponent
import app.extensions.handMouseClickable
import app.theme.primaryTextColor
import app.theme.tabColorActive
import app.theme.tabColorInactive
@ -113,7 +119,8 @@ fun TabPanel(
IconButton(
onClick = onNewTabClicked,
modifier = Modifier
.size(36.dp),
.size(36.dp)
.pointerHoverIcon(PointerIconDefaults.Hand),
) {
Icon(
imageVector = Icons.Default.Add,
@ -144,7 +151,7 @@ fun Tab(title: MutableState<String>, selected: Boolean, onClick: () -> Unit, onC
.shadow(elevation = elevation)
.padding(start = 2.dp, end = 2.dp, top = 2.dp)
.clip(RoundedCornerShape(topStart = 8.dp, topEnd = 8.dp))
.clickable { onClick() }
.handMouseClickable { onClick() }
.background(backgroundColor),
verticalAlignment = Alignment.CenterVertically,
) {

View File

@ -12,6 +12,7 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import app.extensions.handMouseClickable
@Composable
fun SecondaryButton(
@ -26,7 +27,7 @@ fun SecondaryButton(
.padding(horizontal = 16.dp)
.clip(RoundedCornerShape(5.dp))
.background(backgroundButton)
.clickable { onClick() },
.handMouseClickable { onClick() },
) {
Text(
text = text,

View File

@ -10,6 +10,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import app.extensions.handMouseClickable
import app.extensions.openUrlInBrowser
import app.theme.primaryTextColor
@ -33,7 +34,7 @@ fun TextLink(
text = text,
modifier = Modifier
.hoverable(hoverInteraction)
.clickable {
.handMouseClickable {
openUrlInBrowser(url)
}
.then(modifier),

View File

@ -14,9 +14,12 @@ import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.PointerIconDefaults
import androidx.compose.ui.input.pointer.pointerHoverIcon
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.unit.dp
import app.extensions.handMouseClickable
import app.theme.borderColor
import app.theme.primaryTextColor
import app.theme.secondaryTextColor
@ -89,6 +92,8 @@ fun EditRemotesDialog(
IconButton(
onClick = onDismiss,
modifier = Modifier
.pointerHoverIcon(PointerIconDefaults.Hand)
) {
Icon(
imageVector = Icons.Default.Clear,
@ -126,7 +131,7 @@ fun EditRemotesDialog(
color = MaterialTheme.colors.primaryTextColor,
modifier = Modifier
.fillMaxWidth()
.clickable {
.handMouseClickable {
remotesEditorData = remotesEditorData.copy(selectedRemote = remote)
}
.background(background)
@ -141,7 +146,8 @@ fun EditRemotesDialog(
.background(MaterialTheme.colors.background)
) {
IconButton(
modifier = Modifier.size(36.dp),
modifier = Modifier.size(36.dp)
.pointerHoverIcon(PointerIconDefaults.Hand),
onClick = {
val remotesWithNew = remotesEditorData.listRemotes.toMutableList()
val newRemote = RemoteWrapper(
@ -168,7 +174,8 @@ fun EditRemotesDialog(
)
}
IconButton(
modifier = Modifier.size(36.dp),
modifier = Modifier.size(36.dp)
.pointerHoverIcon(PointerIconDefaults.Hand),
enabled = selectedRemote != null,
onClick = {
if (selectedRemote != null)

View File

@ -13,6 +13,7 @@ import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.isPrimaryPressed
import androidx.compose.ui.input.pointer.pointerHoverIcon
import androidx.compose.ui.unit.dp
import app.git.ResetType
import app.theme.primaryTextColor

View File

@ -524,7 +524,8 @@ fun GraphHeader(
)
IconButton(
modifier = Modifier.padding(end = 8.dp),
modifier = Modifier.padding(end = 8.dp)
.pointerHoverIcon(PointerIconDefaults.Hand),
onClick = onShowSearch
) {
Icon(
@ -1022,9 +1023,12 @@ fun RefChip(
endingContent: @Composable () -> Unit = {},
) {
Box(
modifier = Modifier.padding(horizontal = 4.dp).clip(RoundedCornerShape(16.dp))
modifier = Modifier
.padding(horizontal = 4.dp)
.clip(RoundedCornerShape(16.dp))
.border(width = 2.dp, color = color, shape = RoundedCornerShape(16.dp))
.combinedClickable(onDoubleClick = onCheckoutRef, onClick = {})
.pointerHoverIcon(PointerIconDefaults.Hand)
) {
ContextMenuArea(
items = contextMenuItemsList