summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Marshall <tdm@cyngn.com>2014-12-31 10:51:01 -0800
committerElliott Hughes <enh@google.com>2015-01-06 11:04:20 -0800
commit5b68e8ad082625206492ca9baf889f8c5427eb01 (patch)
treee102ffe1abcdadde2666b3bcfd02dfd3ece72832
parentd3090cb2c2ca1d6a2441c3bd1413da129ceadc38 (diff)
downloadandroid_packages_apps_Terminal-5b68e8ad082625206492ca9baf889f8c5427eb01.tar.gz
android_packages_apps_Terminal-5b68e8ad082625206492ca9baf889f8c5427eb01.tar.bz2
android_packages_apps_Terminal-5b68e8ad082625206492ca9baf889f8c5427eb01.zip
Show cursor
Change-Id: I31e99d20f3c0fa887f057b352e69969cb805016e
-rw-r--r--src/com/android/terminal/Terminal.java28
-rw-r--r--src/com/android/terminal/TerminalLineView.java8
-rw-r--r--src/com/android/terminal/TerminalView.java8
3 files changed, 44 insertions, 0 deletions
diff --git a/src/com/android/terminal/Terminal.java b/src/com/android/terminal/Terminal.java
index 7aa7949..b6e981e 100644
--- a/src/com/android/terminal/Terminal.java
+++ b/src/com/android/terminal/Terminal.java
@@ -58,6 +58,7 @@ public class Terminal {
public void onDamage(int startRow, int endRow, int startCol, int endCol);
public void onMoveRect(int destStartRow, int destEndRow, int destStartCol, int destEndCol,
int srcStartRow, int srcEndRow, int srcStartCol, int srcEndCol);
+ public void onMoveCursor(int posRow, int posCol, int oldPosRow, int oldPosCol, int visible);
public void onBell();
}
@@ -68,6 +69,10 @@ public class Terminal {
private TerminalClient mClient;
+ private boolean mCursorVisible;
+ private int mCursorRow;
+ private int mCursorCol;
+
private final TerminalCallbacks mCallbacks = new TerminalCallbacks() {
@Override
public int damage(int startRow, int endRow, int startCol, int endCol) {
@@ -88,6 +93,17 @@ public class Terminal {
}
@Override
+ public int moveCursor(int posRow, int posCol, int oldPosRow, int oldPosCol, int visible) {
+ mCursorVisible = (visible != 0);
+ mCursorRow = posRow;
+ mCursorCol = posCol;
+ if (mClient != null) {
+ mClient.onMoveCursor(posRow, posCol, oldPosRow, oldPosCol, visible);
+ }
+ return 1;
+ }
+
+ @Override
public int bell() {
if (mClient != null) {
mClient.onBell();
@@ -149,6 +165,18 @@ public class Terminal {
}
}
+ public boolean getCursorVisible() {
+ return mCursorVisible;
+ }
+
+ public int getCursorRow() {
+ return mCursorRow;
+ }
+
+ public int getCursorCol() {
+ return mCursorCol;
+ }
+
public String getTitle() {
// TODO: hook up to title passed through termprop
return mTitle;
diff --git a/src/com/android/terminal/TerminalLineView.java b/src/com/android/terminal/TerminalLineView.java
index fff1301..11a9282 100644
--- a/src/com/android/terminal/TerminalLineView.java
+++ b/src/com/android/terminal/TerminalLineView.java
@@ -81,5 +81,13 @@ public class TerminalLineView extends View {
col += m.run.colSize;
}
+
+ if (mTerm.getCursorVisible() && mTerm.getCursorRow() == row) {
+ canvas.save();
+ canvas.translate(mTerm.getCursorCol() * m.charWidth, 0);
+ canvas.drawRect(0, 0, m.charWidth, m.charHeight, m.cursorPaint);
+ canvas.restore();
+ }
+
}
}
diff --git a/src/com/android/terminal/TerminalView.java b/src/com/android/terminal/TerminalView.java
index f6794b7..076da80 100644
--- a/src/com/android/terminal/TerminalView.java
+++ b/src/com/android/terminal/TerminalView.java
@@ -68,6 +68,7 @@ public class TerminalView extends ListView {
final Paint bgPaint = new Paint();
final Paint textPaint = new Paint();
+ final Paint cursorPaint = new Paint();
/** Run of cells used when drawing */
final CellRun run;
@@ -202,6 +203,11 @@ public class TerminalView extends ListView {
}
@Override
+ public void onMoveCursor(int posRow, int posCol, int oldPosRow, int oldPosCol, int visible) {
+ post(mDamageRunnable);
+ }
+
+ @Override
public void onBell() {
Log.i(TAG, "DING!");
}
@@ -277,6 +283,8 @@ public class TerminalView extends ListView {
term.setClient(mClient);
mTermKeys.setTerminal(term);
+ mMetrics.cursorPaint.setColor(0xfff0f0f0);
+
// Populate any current settings
mRows = mTerm.getRows();
mCols = mTerm.getCols();