summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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();