Share native side arrow touch handling
This commit is contained in:
@@ -76,7 +76,7 @@ internal class SamsungHoneyspaceHooks(
|
|||||||
registerSettingsReceiver()
|
registerSettingsReceiver()
|
||||||
trackNavContainerFrom(navButtonView as? View)
|
trackNavContainerFrom(navButtonView as? View)
|
||||||
|
|
||||||
return@hookMethod handleNativeSideArrowTouch(navButtonView, keyCode, motionEvent) {
|
return@hookMethod sideArrowLongPresses.handleNativeTouch(navButtonView, keyCode, motionEvent) {
|
||||||
chain.proceed()
|
chain.proceed()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -366,28 +366,6 @@ internal class SamsungHoneyspaceHooks(
|
|||||||
restoreHoneyspaceSideArrowDrawables(container)
|
restoreHoneyspaceSideArrowDrawables(container)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleNativeSideArrowTouch(
|
|
||||||
view: Any,
|
|
||||||
keyCode: Int,
|
|
||||||
event: MotionEvent,
|
|
||||||
proceed: () -> Any?,
|
|
||||||
): Any? {
|
|
||||||
return when (event.actionMasked) {
|
|
||||||
MotionEvent.ACTION_DOWN -> {
|
|
||||||
sideArrowLongPresses.startAfter(view, keyCode, proceed)
|
|
||||||
}
|
|
||||||
|
|
||||||
MotionEvent.ACTION_UP,
|
|
||||||
MotionEvent.ACTION_CANCEL,
|
|
||||||
-> {
|
|
||||||
sideArrowLongPresses.finish(view)
|
|
||||||
proceed()
|
|
||||||
}
|
|
||||||
|
|
||||||
else -> proceed()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun markLongClicked(navButtonView: Any) {
|
private fun markLongClicked(navButtonView: Any) {
|
||||||
try {
|
try {
|
||||||
callMethod(
|
callMethod(
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package se.ajpanton.navbuttons
|
package se.ajpanton.navbuttons
|
||||||
|
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
|
import android.view.MotionEvent
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import java.util.WeakHashMap
|
import java.util.WeakHashMap
|
||||||
|
|
||||||
@@ -27,6 +28,25 @@ internal class SideArrowLongPressController(
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun handleNativeTouch(
|
||||||
|
target: Any,
|
||||||
|
keyCode: Int,
|
||||||
|
event: MotionEvent,
|
||||||
|
proceed: () -> Any?,
|
||||||
|
): Any? {
|
||||||
|
return when (event.actionMasked) {
|
||||||
|
MotionEvent.ACTION_DOWN -> startAfter(target, keyCode, proceed)
|
||||||
|
MotionEvent.ACTION_UP,
|
||||||
|
MotionEvent.ACTION_CANCEL,
|
||||||
|
-> {
|
||||||
|
finish(target)
|
||||||
|
proceed()
|
||||||
|
}
|
||||||
|
|
||||||
|
else -> proceed()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun finish(target: Any): Boolean {
|
fun finish(target: Any): Boolean {
|
||||||
val wasTriggered = triggered[target] == true
|
val wasTriggered = triggered[target] == true
|
||||||
cancel(target)
|
cancel(target)
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ internal class SystemUiNavHooks(
|
|||||||
registerSettingsReceiver()
|
registerSettingsReceiver()
|
||||||
trackSamsungNavigationBarView(keyButtonView)
|
trackSamsungNavigationBarView(keyButtonView)
|
||||||
configureAospSideArrowButton(keyButtonView)
|
configureAospSideArrowButton(keyButtonView)
|
||||||
return@hookMethod handleNativeSideArrowTouch(keyButtonView, keyCode, motionEvent) {
|
return@hookMethod sideArrowLongPresses.handleNativeTouch(keyButtonView, keyCode, motionEvent) {
|
||||||
chain.proceed()
|
chain.proceed()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -205,28 +205,6 @@ internal class SystemUiNavHooks(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleNativeSideArrowTouch(
|
|
||||||
view: Any,
|
|
||||||
keyCode: Int,
|
|
||||||
event: MotionEvent,
|
|
||||||
proceed: () -> Any?,
|
|
||||||
): Any? {
|
|
||||||
return when (event.actionMasked) {
|
|
||||||
MotionEvent.ACTION_DOWN -> {
|
|
||||||
sideArrowLongPresses.startAfter(view, keyCode, proceed)
|
|
||||||
}
|
|
||||||
|
|
||||||
MotionEvent.ACTION_UP,
|
|
||||||
MotionEvent.ACTION_CANCEL,
|
|
||||||
-> {
|
|
||||||
sideArrowLongPresses.finish(view)
|
|
||||||
proceed()
|
|
||||||
}
|
|
||||||
|
|
||||||
else -> proceed()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun markLongClicked(keyButtonView: Any) {
|
private fun markLongClicked(keyButtonView: Any) {
|
||||||
try {
|
try {
|
||||||
findField(keyButtonView.javaClass, "mLongClicked").setBoolean(keyButtonView, true)
|
findField(keyButtonView.javaClass, "mLongClicked").setBoolean(keyButtonView, true)
|
||||||
|
|||||||
Reference in New Issue
Block a user