diff --git a/command.c b/command.c index e8dea950..117240f4 100644 --- a/command.c +++ b/command.c @@ -25,10 +25,12 @@ int handle_start_command(char *cmd) user = strndup(cmd+9, strlen(cmd)-9); status_bar_get_password(); + status_bar_refresh(); char passwd[20]; inp_get_password(passwd); status_bar_print_message(user); + status_bar_refresh(); jabber_connect(user, passwd); result = START_MAIN; } else { diff --git a/profanity.c b/profanity.c index 8548b2c8..61b0c975 100644 --- a/profanity.c +++ b/profanity.c @@ -18,6 +18,7 @@ void profanity_start(void) char cmd[50]; while (cmd_result == AWAIT_COMMAND) { + status_bar_refresh(); inp_get_command_str(cmd); cmd_result = handle_start_command(cmd); } @@ -51,7 +52,7 @@ static void _profanity_event_loop(int *ch, char *cmd, int *size) { usleep(1); - status_bar_update_time(); + status_bar_refresh(); // handle incoming messages jabber_process_events(); diff --git a/status_bar.c b/status_bar.c index dc855416..cbc0d810 100644 --- a/status_bar.c +++ b/status_bar.c @@ -4,6 +4,8 @@ static WINDOW *status_bar; +static void _status_bar_update_time(void); + void create_status_bar(void) { int rows, cols; @@ -14,34 +16,42 @@ void create_status_bar(void) wrefresh(status_bar); } +void status_bar_refresh(void) +{ + _status_bar_update_time(); + touchwin(status_bar); + wrefresh(status_bar); + inp_put_back(); +} + void status_bar_inactive(int win) { mvwaddch(status_bar, 0, 30 + win, ' '); if (win == 9) mvwaddch(status_bar, 0, 30 + win + 1, ' '); - wrefresh(status_bar); } void status_bar_active(int win) { mvwprintw(status_bar, 0, 30 + win, "%d", win+1); - touchwin(status_bar); - wrefresh(status_bar); } void status_bar_get_password(void) { - mvwprintw(status_bar, 0, 1, "Enter password:"); - wrefresh(status_bar); + mvwprintw(status_bar, 0, 9, "Enter password:"); } void status_bar_print_message(char *msg) { mvwprintw(status_bar, 0, 9, msg); - wrefresh(status_bar); } -void status_bar_update_time(void) +void status_bar_clear(void) +{ + wclear(status_bar); +} + +static void _status_bar_update_time(void) { char bar_time[8]; char tstmp[80]; @@ -49,12 +59,5 @@ void status_bar_update_time(void) sprintf(bar_time, "[%s]", tstmp); mvwprintw(status_bar, 0, 1, bar_time); - wrefresh(status_bar); - inp_put_back(); } -void status_bar_clear(void) -{ - wclear(status_bar); - wrefresh(status_bar); -} diff --git a/windows.h b/windows.h index 9e997e0b..b73e04d0 100644 --- a/windows.h +++ b/windows.h @@ -18,6 +18,7 @@ void create_status_bar(void); void create_input_window(void); // status bar actions +void status_bar_refresh(void); void status_bar_clear(void); void status_bar_get_password(void); void status_bar_print_message(char *msg);