mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-06-03 05:10:14 +00:00
use timeout for both space swipe directions, and require minimum move distance
fixes #555
This commit is contained in:
parent
0ccc500c1e
commit
7058fb78b8
1 changed files with 8 additions and 9 deletions
|
@ -11,11 +11,7 @@ import static java.lang.Math.abs;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.content.res.TypedArray;
|
import android.content.res.TypedArray;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
|
||||||
import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode;
|
|
||||||
import helium314.keyboard.latin.utils.Log;
|
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.inputmethod.InputMethodSubtype;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
@ -32,18 +28,18 @@ import helium314.keyboard.keyboard.internal.GestureStrokeRecognitionParams;
|
||||||
import helium314.keyboard.keyboard.internal.PointerTrackerQueue;
|
import helium314.keyboard.keyboard.internal.PointerTrackerQueue;
|
||||||
import helium314.keyboard.keyboard.internal.TimerProxy;
|
import helium314.keyboard.keyboard.internal.TimerProxy;
|
||||||
import helium314.keyboard.keyboard.internal.TypingTimeRecorder;
|
import helium314.keyboard.keyboard.internal.TypingTimeRecorder;
|
||||||
|
import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode;
|
||||||
import helium314.keyboard.latin.R;
|
import helium314.keyboard.latin.R;
|
||||||
import helium314.keyboard.latin.RichInputMethodManager;
|
|
||||||
import helium314.keyboard.latin.common.Constants;
|
import helium314.keyboard.latin.common.Constants;
|
||||||
import helium314.keyboard.latin.common.CoordinateUtils;
|
import helium314.keyboard.latin.common.CoordinateUtils;
|
||||||
import helium314.keyboard.latin.common.InputPointers;
|
import helium314.keyboard.latin.common.InputPointers;
|
||||||
import helium314.keyboard.latin.define.DebugFlags;
|
import helium314.keyboard.latin.define.DebugFlags;
|
||||||
import helium314.keyboard.latin.settings.Settings;
|
import helium314.keyboard.latin.settings.Settings;
|
||||||
import helium314.keyboard.latin.settings.SettingsValues;
|
import helium314.keyboard.latin.settings.SettingsValues;
|
||||||
|
import helium314.keyboard.latin.utils.Log;
|
||||||
import helium314.keyboard.latin.utils.ResourceUtils;
|
import helium314.keyboard.latin.utils.ResourceUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
public final class PointerTracker implements PointerTrackerQueue.Element,
|
public final class PointerTracker implements PointerTrackerQueue.Element,
|
||||||
|
@ -905,12 +901,16 @@ public final class PointerTracker implements PointerTrackerQueue.Element,
|
||||||
final SettingsValues sv = Settings.getInstance().getCurrent();
|
final SettingsValues sv = Settings.getInstance().getCurrent();
|
||||||
|
|
||||||
if (oldKey != null && oldKey.getCode() == Constants.CODE_SPACE) {
|
if (oldKey != null && oldKey.getCode() == Constants.CODE_SPACE) {
|
||||||
|
// reason for timeout: https://github.com/openboard-team/openboard/issues/411
|
||||||
|
final int longpressTimeout = 2 * sv.mKeyLongpressTimeout / MULTIPLIER_FOR_LONG_PRESS_TIMEOUT_IN_SLIDING_INPUT;
|
||||||
|
if (mStartTime + longpressTimeout > System.currentTimeMillis())
|
||||||
|
return;
|
||||||
int dX = x - mStartX;
|
int dX = x - mStartX;
|
||||||
int dY = y - mStartY;
|
int dY = y - mStartY;
|
||||||
|
|
||||||
// vertical movement
|
// vertical movement
|
||||||
int stepsY = dY / sPointerStep;
|
int stepsY = dY / sPointerStep;
|
||||||
if (abs(dX) < abs(dY) && !mInHorizontalSwipe) {
|
if (stepsY != 0 && abs(dX) < abs(dY) && !mInHorizontalSwipe) {
|
||||||
mInVerticalSwipe = true;
|
mInVerticalSwipe = true;
|
||||||
if (sListener.onVerticalSpaceSwipe(stepsY)) {
|
if (sListener.onVerticalSpaceSwipe(stepsY)) {
|
||||||
mStartY += stepsY * sPointerStep;
|
mStartY += stepsY * sPointerStep;
|
||||||
|
@ -920,8 +920,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element,
|
||||||
|
|
||||||
// Horizontal movement
|
// Horizontal movement
|
||||||
int stepsX = dX / sPointerStep;
|
int stepsX = dX / sPointerStep;
|
||||||
final int longpressTimeout = 2 * sv.mKeyLongpressTimeout / MULTIPLIER_FOR_LONG_PRESS_TIMEOUT_IN_SLIDING_INPUT;
|
if (stepsX != 0 && !mInVerticalSwipe) {
|
||||||
if (!mInVerticalSwipe && mStartTime + longpressTimeout < System.currentTimeMillis()) {
|
|
||||||
mInHorizontalSwipe = true;
|
mInHorizontalSwipe = true;
|
||||||
if (sListener.onHorizontalSpaceSwipe(stepsX)) {
|
if (sListener.onHorizontalSpaceSwipe(stepsX)) {
|
||||||
mStartX += stepsX * sPointerStep;
|
mStartX += stepsX * sPointerStep;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue