Dont allow unsaved form windows to be closed

This commit is contained in:
James Booth
2014-09-15 22:31:15 +01:00
parent 529b4f175b
commit c5b697dba7
6 changed files with 39 additions and 5 deletions

View File

@@ -632,7 +632,7 @@ _ui_close_all_wins(void)
while (curr != NULL) {
int num = GPOINTER_TO_INT(curr->data);
if (num != 1) {
if ((num != 1) && (!ui_win_has_unsaved_form(num))) {
if (conn_status == JABBER_CONNECTED) {
ui_close_connected_win(num);
}
@@ -659,7 +659,7 @@ _ui_close_read_wins(void)
while (curr != NULL) {
int num = GPOINTER_TO_INT(curr->data);
if ((num != 1) && (ui_win_unread(num) == 0)) {
if ((num != 1) && (ui_win_unread(num) == 0) && (!ui_win_has_unsaved_form(num))) {
if (conn_status == JABBER_CONNECTED) {
ui_close_connected_win(num);
}
@@ -675,6 +675,20 @@ _ui_close_read_wins(void)
return count;
}
static gboolean
_ui_win_has_unsaved_form(int num)
{
ProfWin *window = wins_get_by_num(num);
if (window->type != WIN_MUC_CONFIG) {
return FALSE;
}
if (window->form == NULL) {
return FALSE;
}
return window->form->modified;
}
GString *
_get_recipient_string(ProfWin *window)
{
@@ -2295,4 +2309,5 @@ ui_init_module(void)
ui_room_destroyed = _ui_room_destroyed;
ui_handle_room_configuration = _ui_handle_room_configuration;
ui_handle_room_config_submit_result = _ui_handle_room_config_submit_result;
ui_win_has_unsaved_form = _ui_win_has_unsaved_form;
}

View File

@@ -201,6 +201,8 @@ void (*ui_create_xmlconsole_win)(void);
gboolean (*ui_xmlconsole_exists)(void);
void (*ui_open_xmlconsole_win)(void);
gboolean (*ui_win_has_unsaved_form)(int num);
// console window actions
void (*cons_show)(const char * const msg, ...);
void (*cons_about)(void);