Skip to content

Commit dc88aca

Browse files
committed
make tap on gesture surface ignore tiny movments when tapping
1 parent 0991e82 commit dc88aca

File tree

4 files changed

+20
-15
lines changed

4 files changed

+20
-15
lines changed

new-player/src/main/java/net/newpipe/newplayer/model/NewPlayerViewModelImpl.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,6 @@ class NewPlayerViewModelImpl @Inject constructor(
347347
if (!uiState.value.uiMode.fullscreen && newUiModeState.fullscreen && embeddedUiConfig != null) {
348348
this.embeddedUiConfig = embeddedUiConfig
349349
}
350-
newUiModeState.fullscreen
351350

352351
if ((newUiModeState == UIModeState.EMBEDDED_VIDEO_CONTROLLER_UI ||
353352
newUiModeState == UIModeState.FULLSCREEN_VIDEO_CONTROLLER_UI)

new-player/src/main/java/net/newpipe/newplayer/ui/videoplayer/gesture_ui/EmbeddedGestureUI.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,6 @@ internal fun EmbeddedGestureUI(
8989
}
9090
}
9191

92-
val handleUp = {
93-
downwardMovementMode = false
94-
sumOfMovement = 0f
95-
}
96-
9792
val defaultOnRegularTap = {
9893
if (uiState.uiMode.videoControllerUiVisible) {
9994
viewModel.changeUiMode(uiState.uiMode.getUiHiddenState(), null)
@@ -102,6 +97,11 @@ internal fun EmbeddedGestureUI(
10297
}
10398
}
10499

100+
val handleUp = {
101+
downwardMovementMode = false
102+
sumOfMovement = 0f
103+
}
104+
105105
Row(modifier = modifier) {
106106
GestureSurface(
107107
modifier = Modifier.weight(1f),

new-player/src/main/java/net/newpipe/newplayer/ui/videoplayer/gesture_ui/GestureSurface.kt

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ import androidx.compose.foundation.layout.fillMaxSize
2626
import androidx.compose.material3.Surface
2727
import androidx.compose.runtime.Composable
2828
import androidx.compose.runtime.getValue
29+
import androidx.compose.runtime.mutableFloatStateOf
30+
import androidx.compose.runtime.mutableIntStateOf
2931
import androidx.compose.runtime.mutableStateOf
3032
import androidx.compose.runtime.remember
3133
import androidx.compose.runtime.rememberCoroutineScope
@@ -54,14 +56,15 @@ internal fun GestureSurface(
5456
onMovement: (TouchedPosition) -> Unit = {},
5557
content: @Composable () -> Unit = {}
5658
) {
57-
var moveOccured by remember {
58-
mutableStateOf(false)
59-
}
6059

6160
var lastTouchedPosition by remember {
6261
mutableStateOf(TouchedPosition(0f, 0f))
6362
}
6463

64+
var yMovementSum by remember {
65+
mutableFloatStateOf(0f)
66+
}
67+
6568
var lastFingerUpTime by remember {
6669
mutableStateOf(System.currentTimeMillis())
6770
}
@@ -73,12 +76,13 @@ internal fun GestureSurface(
7376

7477
val defaultActionDown = { event: MotionEvent ->
7578
lastTouchedPosition = TouchedPosition(event.x, event.y)
76-
moveOccured = false
79+
yMovementSum = 0f
80+
7781
true
7882
}
7983

8084
var multitapAmount:Int by remember {
81-
mutableStateOf(0)
85+
mutableIntStateOf(0)
8286
}
8387

8488
var cancelMultitapJob: Job? by remember {
@@ -87,7 +91,8 @@ internal fun GestureSurface(
8791

8892
val defaultActionUp = { onMultiTap: (Int) -> Unit, onRegularTap: () -> Unit ->
8993
onUp()
90-
if (!moveOccured) {
94+
95+
if (yMovementSum < 10) {
9196
val currentTime = System.currentTimeMillis()
9297
val timeSinceLastTouch = currentTime - lastFingerUpTime
9398
if (timeSinceLastTouch <= MULTITAB_MODE_DELAY) {
@@ -109,7 +114,7 @@ internal fun GestureSurface(
109114

110115
lastFingerUpTime = currentTime
111116
}
112-
moveOccured = false
117+
yMovementSum = 0f
113118
true
114119
}
115120

@@ -118,7 +123,8 @@ internal fun GestureSurface(
118123
val movement = currentTouchedPosition - lastTouchedPosition
119124

120125
lastTouchedPosition = currentTouchedPosition
121-
moveOccured = true
126+
127+
yMovementSum += abs(movement.y)
122128

123129
// filter out left and right movements as these are not important for the app
124130
if(abs(movement.x) <= abs(movement.y)) {

test-app/src/main/java/net/newpipe/newplayer/testapp/MainActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ import javax.inject.Inject
4646
@AndroidEntryPoint
4747
class MainActivity : AppCompatActivity() {
4848

49-
val newPlayerViewModel: NewPlayerViewModel by viewModels<NewPlayerViewModelImpl>()
49+
private val newPlayerViewModel: NewPlayerViewModel by viewModels<NewPlayerViewModelImpl>()
5050

5151
private var currentOrientation = -1
5252
private var reconfigurationPending = false

0 commit comments

Comments
 (0)