aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/org/connectbot/TerminalView.java
diff options
context:
space:
mode:
authorJeremy Klein <jlklein@google.com>2015-10-09 11:28:04 -0700
committerJeremy Klein <jlklein@google.com>2015-10-09 11:29:27 -0700
commitfc35568a1ad2b9eb852bc7577908f5aba161f413 (patch)
tree52ce817c838cfbf23dadbd5a46cdf0d469a25997 /app/src/main/java/org/connectbot/TerminalView.java
parentbe032f4719736adb19c1ec174d869923555e6d48 (diff)
downloadconnectbot-fc35568a1ad2b9eb852bc7577908f5aba161f413.tar.gz
connectbot-fc35568a1ad2b9eb852bc7577908f5aba161f413.tar.bz2
connectbot-fc35568a1ad2b9eb852bc7577908f5aba161f413.zip
Rebase and fix conflicts with textview change
Diffstat (limited to 'app/src/main/java/org/connectbot/TerminalView.java')
-rw-r--r--app/src/main/java/org/connectbot/TerminalView.java42
1 files changed, 35 insertions, 7 deletions
diff --git a/app/src/main/java/org/connectbot/TerminalView.java b/app/src/main/java/org/connectbot/TerminalView.java
index bc095fc..767a4a0 100644
--- a/app/src/main/java/org/connectbot/TerminalView.java
+++ b/app/src/main/java/org/connectbot/TerminalView.java
@@ -25,6 +25,7 @@ import org.connectbot.bean.SelectionArea;
import org.connectbot.service.FontSizeChangedListener;
import org.connectbot.service.TerminalBridge;
import org.connectbot.service.TerminalKeyListener;
+import org.connectbot.util.PreferenceConstants;
import org.connectbot.util.TerminalViewPager;
import android.annotation.TargetApi;
@@ -32,6 +33,7 @@ import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.pm.ResolveInfo;
import android.database.Cursor;
import android.graphics.Canvas;
@@ -45,6 +47,7 @@ import android.graphics.Typeface;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
+import android.preference.PreferenceManager;
import android.support.v4.view.MotionEventCompat;
import android.text.ClipboardManager;
import android.view.ActionMode;
@@ -54,6 +57,7 @@ import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
+import android.view.ViewConfiguration;
import android.view.ViewGroup.LayoutParams;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
@@ -83,6 +87,7 @@ public class TerminalView extends TextView implements FontSizeChangedListener {
private final TerminalViewPager viewPager;
private GestureDetector gestureDetector;
+ private SharedPreferences prefs;
private ClipboardManager clipboard;
private ActionMode selectionActionMode = null;
@@ -180,6 +185,7 @@ public class TerminalView extends TextView implements FontSizeChangedListener {
new AccessibilityStateTester().execute((Void) null);
clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
+ prefs = PreferenceManager.getDefaultSharedPreferences(context);
setTextColor(Color.TRANSPARENT);
setTypeface(Typeface.MONOSPACE);
@@ -202,13 +208,35 @@ public class TerminalView extends TextView implements FontSizeChangedListener {
totalY = 0;
}
- totalY += distanceY;
- final int moved = (int) (totalY / bridge.charHeight);
-
- if (moved != 0) {
- int base = bridge.buffer.getWindowBase();
- bridge.buffer.setWindowBase(base + moved);
- totalY = 0;
+ // activate consider if within x tolerance
+ int touchSlop =
+ ViewConfiguration.get(TerminalView.this.context).getScaledTouchSlop();
+ if (Math.abs(e1.getX() - e2.getX()) < touchSlop * 4) {
+ // estimate how many rows we have scrolled through
+ // accumulate distance that doesn't trigger immediate scroll
+ totalY += distanceY;
+ final int moved = (int) (totalY / bridge.charHeight);
+
+ // Consume as pg up/dn only if towards left third of screen with the gesture
+ // enabled.
+ boolean pgUpDnGestureEnabled =
+ prefs.getBoolean(PreferenceConstants.PG_UPDN_GESTURE, false);
+ if (e2.getX() <= getWidth() / 3 && pgUpDnGestureEnabled) {
+ // otherwise consume as pgup/pgdown for every 5 lines
+ if (moved > 5) {
+ ((vt320) bridge.buffer).keyPressed(vt320.KEY_PAGE_DOWN, ' ', 0);
+ bridge.tryKeyVibrate();
+ totalY = 0;
+ } else if (moved < -5) {
+ ((vt320) bridge.buffer).keyPressed(vt320.KEY_PAGE_UP, ' ', 0);
+ bridge.tryKeyVibrate();
+ totalY = 0;
+ }
+ } else if (moved != 0) {
+ int base = bridge.buffer.getWindowBase();
+ bridge.buffer.setWindowBase(base + moved);
+ totalY = 0;
+ }
}
return true;