Bug fixes
[nikiroo-utils.git] / src / jexer / backend / SwingTerminal.java
index 6e902195fa59d40a8306fc1f27a713440992c364..8ac6c2b54afaa708f28616c29c0110018ebcdf8e 100644 (file)
@@ -633,6 +633,8 @@ public final class SwingTerminal extends LogicalScreen
     private void drawCursor(final Graphics gr) {
 
         if (cursorVisible
+            && (cursorY >= 0)
+            && (cursorX >= 0)
             && (cursorY <= height - 1)
             && (cursorX <= width - 1)
             && cursorBlinkVisible
@@ -657,6 +659,16 @@ public final class SwingTerminal extends LogicalScreen
         }
     }
 
+    /**
+     * Reset the blink timer.
+     */
+    private void resetBlinkTimer() {
+        // See if it is time to flip the blink time.
+        long nowTime = (new Date()).getTime();
+        lastBlinkTime = nowTime;
+        cursorBlinkVisible = true;
+    }
+
     /**
      * Paint redraws the whole screen.
      *
@@ -932,6 +944,8 @@ public final class SwingTerminal extends LogicalScreen
         }
 
         if (cursorVisible
+            && (cursorY >= 0)
+            && (cursorX >= 0)
             && (cursorY <= height - 1)
             && (cursorX <= width - 1)
         ) {
@@ -1539,6 +1553,7 @@ public final class SwingTerminal extends LogicalScreen
         // Save it and we are done.
         synchronized (eventQueue) {
             eventQueue.add(new TKeypressEvent(keypress));
+            resetBlinkTimer();
         }
         if (listener != null) {
             synchronized (listener) {
@@ -1577,6 +1592,7 @@ public final class SwingTerminal extends LogicalScreen
         // Drop a cmAbort and walk away
         synchronized (eventQueue) {
             eventQueue.add(new TCommandEvent(cmAbort));
+            resetBlinkTimer();
         }
         if (listener != null) {
             synchronized (listener) {
@@ -1667,6 +1683,7 @@ public final class SwingTerminal extends LogicalScreen
             TResizeEvent windowResize = new TResizeEvent(TResizeEvent.Type.SCREEN,
                 sessionInfo.getWindowWidth(), sessionInfo.getWindowHeight());
             eventQueue.add(windowResize);
+            resetBlinkTimer();
         }
         if (listener != null) {
             synchronized (listener) {
@@ -1705,6 +1722,7 @@ public final class SwingTerminal extends LogicalScreen
 
         synchronized (eventQueue) {
             eventQueue.add(mouseEvent);
+            resetBlinkTimer();
         }
         if (listener != null) {
             synchronized (listener) {
@@ -1733,6 +1751,7 @@ public final class SwingTerminal extends LogicalScreen
 
         synchronized (eventQueue) {
             eventQueue.add(mouseEvent);
+            resetBlinkTimer();
         }
         if (listener != null) {
             synchronized (listener) {
@@ -1798,6 +1817,7 @@ public final class SwingTerminal extends LogicalScreen
 
         synchronized (eventQueue) {
             eventQueue.add(mouseEvent);
+            resetBlinkTimer();
         }
         if (listener != null) {
             synchronized (listener) {
@@ -1845,6 +1865,7 @@ public final class SwingTerminal extends LogicalScreen
 
         synchronized (eventQueue) {
             eventQueue.add(mouseEvent);
+            resetBlinkTimer();
         }
         if (listener != null) {
             synchronized (listener) {
@@ -1891,6 +1912,7 @@ public final class SwingTerminal extends LogicalScreen
 
         synchronized (eventQueue) {
             eventQueue.add(mouseEvent);
+            resetBlinkTimer();
         }
         if (listener != null) {
             synchronized (listener) {