Add Ctrl+A X to close current session without quitting

session_close() disconnects, closes log, switches to another active
session, then frees the slot. If it's the last session open, exits
the program (same behavior as Q). Menu updated to show X - Close Session.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
gui-redesign
Ryan Collier 3 weeks ago
parent 0e31ca3406
commit 5b79ee4796

@ -241,6 +241,7 @@ static void session_switch(int n);
static void session_next(void); static void session_next(void);
static void session_prev(void); static void session_prev(void);
static void session_new(void); static void session_new(void);
static void session_close(void);
static void do_connect(int idx); static void do_connect(int idx);
/* ═══════════════════════════════════════════════════════════ /* ═══════════════════════════════════════════════════════════
@ -2688,6 +2689,22 @@ static void session_new(void)
do_connect(idx); do_connect(idx);
} }
static void session_close(void)
{
if (session_count() <= 1) {
if (S->connected) tcp_disconnect();
if (S->logging) close_log();
endwin();
exit(0);
}
int idx = session_index();
if (S->connected) tcp_disconnect();
if (S->logging) close_log();
session_next(); /* S now points to another active session */
sessions[idx].active = 0;
draw_status();
}
/* ═══════════════════════════════════════════════════════════ /* ═══════════════════════════════════════════════════════════
* Connect helper * Connect helper
* */ * */
@ -2829,13 +2846,14 @@ static void ctrl_a_menu(void)
mvwprintw(w, 2, 4, "C - Connect"); mvwprintw(w, 2, 4, "C - Connect");
mvwprintw(w, 3, 4, "D - Disconnect"); mvwprintw(w, 3, 4, "D - Disconnect");
mvwprintw(w, 4, 4, "N - New Session"); mvwprintw(w, 4, 4, "N - New Session");
mvwprintw(w, 5, 4, "1-4 Switch Session"); mvwprintw(w, 5, 4, "X - Close Session");
mvwprintw(w, 6, 4, "O - Config / Host Editor"); mvwprintw(w, 6, 4, "1-4 Switch Session");
mvwprintw(w, 7, 4, "M - Monitor Options"); mvwprintw(w, 7, 4, "O - Config / Host Editor");
mvwprintw(w, 8, 4, "L - Toggle Log"); mvwprintw(w, 8, 4, "M - Monitor Options");
mvwprintw(w, 9, 4, "F - Forms & Check-Ins"); mvwprintw(w, 9, 4, "L - Toggle Log");
mvwprintw(w, 10, 4, "H - Help"); mvwprintw(w, 10, 4, "F - Forms & Check-Ins");
mvwprintw(w, 11, 4, "Q - Quit"); mvwprintw(w, 11, 4, "H - Help");
mvwprintw(w, 12, 4, "Q - Quit");
mvwprintw(w, mh-2, 4, "Esc = close"); mvwprintw(w, mh-2, 4, "Esc = close");
wrefresh(w); wrefresh(w);
@ -2895,6 +2913,10 @@ static void ctrl_a_menu(void)
session_new(); session_new();
break; break;
case 'x':
session_close();
break;
case '1': case '2': case '3': case '4': case '1': case '2': case '3': case '4':
session_switch(ch - '1'); session_switch(ch - '1');
break; break;

Loading…
Cancel
Save

Powered by TurnKey Linux.