diff --git a/src/event/server_events.c b/src/event/server_events.c index 09b8af0a..71d7af35 100644 --- a/src/event/server_events.c +++ b/src/event/server_events.c @@ -341,7 +341,7 @@ sv_ev_room_message(ProfMessage* message) status_bar_active(num, WIN_MUC, mucwin->roomjid); if ((g_strcmp0(mynick, message->from_jid->resourcepart) != 0) && (prefs_get_boolean(PREF_BEEP))) { - beep(); + ui_beep(); } // not currently on groupchat window @@ -349,7 +349,7 @@ sv_ev_room_message(ProfMessage* message) status_bar_new(num, WIN_MUC, mucwin->roomjid); if ((g_strcmp0(mynick, message->from_jid->resourcepart) != 0) && (prefs_get_boolean(PREF_FLASH))) { - flash(); + ui_flash(); } cons_show_incoming_room_message(message->from_jid->resourcepart, mucwin->roomjid, num, mention, triggers, mucwin->unread, window); diff --git a/src/ui/chatwin.c b/src/ui/chatwin.c index f231c23e..414d3517 100644 --- a/src/ui/chatwin.c +++ b/src/ui/chatwin.c @@ -327,7 +327,7 @@ chatwin_incoming_msg(ProfChatWin* chatwin, ProfMessage* message, gboolean win_cr cons_show_incoming_message(display_name, num, chatwin->unread, window); if (prefs_get_boolean(PREF_FLASH)) { - flash(); + ui_flash(); } chatwin->unread++; @@ -364,7 +364,7 @@ chatwin_incoming_msg(ProfChatWin* chatwin, ProfMessage* message, gboolean win_cr wins_add_quotes_ac(window, message->plain, FALSE); if (prefs_get_boolean(PREF_BEEP)) { - beep(); + ui_beep(); } } diff --git a/src/ui/core.c b/src/ui/core.c index f755cfa9..f67df803 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -180,6 +180,7 @@ void ui_suspend(void) { inp_suspend(); + doupdate(); endwin(); } @@ -190,6 +191,22 @@ ui_resume(void) inp_resume(); } +void +ui_beep(void) +{ + if (!isendwin()) { + beep(); + } +} + +void +ui_flash(void) +{ + if (!isendwin()) { + flash(); + } +} + void ui_resize(void) { diff --git a/src/ui/inputwin.c b/src/ui/inputwin.c index c9c4aef8..9ad741c6 100644 --- a/src/ui/inputwin.c +++ b/src/ui/inputwin.c @@ -459,7 +459,9 @@ _inp_write(char* line, int offset) _inp_win_handle_scroll(); _inp_win_update_virtual(); - doupdate(); + if (!isendwin()) { + doupdate(); + } } static int diff --git a/src/ui/privwin.c b/src/ui/privwin.c index 19384d6e..33bd53a6 100644 --- a/src/ui/privwin.c +++ b/src/ui/privwin.c @@ -57,7 +57,7 @@ privwin_incoming_msg(ProfPrivateWin* privatewin, ProfMessage* message) privatewin->unread++; if (prefs_get_boolean(PREF_FLASH)) { - flash(); + ui_flash(); } } @@ -65,7 +65,7 @@ privwin_incoming_msg(ProfPrivateWin* privatewin, ProfMessage* message) wins_add_quotes_ac(window, message->plain, TRUE); if (prefs_get_boolean(PREF_BEEP)) { - beep(); + ui_beep(); } if (notify) { diff --git a/src/ui/ui.h b/src/ui/ui.h index 7bed0782..4622ca1c 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -84,6 +84,8 @@ void ui_handle_recipient_error(const char* const recipient, const char* const er void ui_handle_error(const char* const err_msg); void ui_clear_win_title(void); void ui_goodbye_title(void); +void ui_beep(void); +void ui_flash(void); void ui_handle_room_configuration_form_error(const char* const roomjid, const char* const message); void ui_handle_room_config_submit_result(const char* const roomjid); void ui_handle_room_config_submit_result_error(const char* const roomjid, const char* const message); diff --git a/tests/unittests/ui/stub_ui.c b/tests/unittests/ui/stub_ui.c index 2d5da2ef..ad338403 100644 --- a/tests/unittests/ui/stub_ui.c +++ b/tests/unittests/ui/stub_ui.c @@ -1475,3 +1475,13 @@ ui_is_suspended(void) { return FALSE; } + +void +ui_beep(void) +{ +} + +void +ui_flash(void) +{ +}