diff options
-rw-r--r-- | src/com/android/terminal/Terminal.java | 28 | ||||
-rw-r--r-- | src/com/android/terminal/TerminalLineView.java | 8 | ||||
-rw-r--r-- | src/com/android/terminal/TerminalView.java | 8 |
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(); |