diff --git a/app/src/main/java/com/termux/app/TermuxActivity.java b/app/src/main/java/com/termux/app/TermuxActivity.java index eff4fa35..12b12780 100644 --- a/app/src/main/java/com/termux/app/TermuxActivity.java +++ b/app/src/main/java/com/termux/app/TermuxActivity.java @@ -611,7 +611,7 @@ public final class TermuxActivity extends Activity implements ServiceConnection requestAutoFill(); return true; case CONTEXT_MENU_RESET_TERMINAL_ID: - resetSession(session); + onResetTerminalSession(session); return true; case CONTEXT_MENU_KILL_PROCESS_ID: showKillSessionDialog(session); @@ -650,10 +650,13 @@ public final class TermuxActivity extends Activity implements ServiceConnection b.show(); } - private void resetSession(TerminalSession session) { + private void onResetTerminalSession(TerminalSession session) { if (session != null) { session.reset(); showToast(getResources().getString(R.string.msg_terminal_reset), true); + + if (mTermuxTerminalSessionClient != null) + mTermuxTerminalSessionClient.onResetTerminalSession(); } } diff --git a/app/src/main/java/com/termux/app/terminal/TermuxTerminalSessionClient.java b/app/src/main/java/com/termux/app/terminal/TermuxTerminalSessionClient.java index 312a5483..be98ddc9 100644 --- a/app/src/main/java/com/termux/app/terminal/TermuxTerminalSessionClient.java +++ b/app/src/main/java/com/termux/app/terminal/TermuxTerminalSessionClient.java @@ -205,6 +205,15 @@ public class TermuxTerminalSessionClient extends TermuxTerminalSessionClientBase mActivity.getTerminalView().setTerminalCursorBlinkerState(enabled, false); } + /** + * Should be called when mActivity.onResetTerminalSession() is called + */ + public void onResetTerminalSession() { + // Ensure blinker starts again after reset if cursor blinking was disabled before reset like + // with "tput civis" which would have called onTerminalCursorStateChange() + mActivity.getTerminalView().setTerminalCursorBlinkerState(true, true); + } + @Override diff --git a/terminal-view/src/main/java/com/termux/view/TerminalView.java b/terminal-view/src/main/java/com/termux/view/TerminalView.java index d041248f..432fea80 100644 --- a/terminal-view/src/main/java/com/termux/view/TerminalView.java +++ b/terminal-view/src/main/java/com/termux/view/TerminalView.java @@ -905,6 +905,10 @@ public final class TerminalView extends View { * to be shown. It should also be checked if activity is visible if blinker is to be started * before calling this. * + * It should also be called after terminal is reset with {@link TerminalSession#reset()} in case + * cursor blinker was disabled before reset due to call to + * {@link com.termux.terminal.TerminalSessionClient#onTerminalCursorStateChange(boolean)}. + * * How cursor blinker starting works is by registering a {@link Runnable} with the looper of * the main thread of the app which when run, toggles the cursor blinking state and re-registers * itself to be called with the delay set by {@link #mTerminalCursorBlinkerRate}. When cursor