Ask for confirmation before closing an unsaved message
This commit is contained in:
parent
67f3ad147c
commit
a1bb65ef4c
|
@ -185,12 +185,7 @@ gboolean on_compose_closex(gpointer data)
|
||||||
{
|
{
|
||||||
Compose * compose = data;
|
Compose * compose = data;
|
||||||
|
|
||||||
#if 0 /* XXX disabled for now */
|
return compose_close(compose);
|
||||||
if(compose_save(compose) != 0)
|
|
||||||
return TRUE;
|
|
||||||
#endif
|
|
||||||
compose_delete(compose);
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -333,6 +333,7 @@ static GtkWidget * _new_text_view(Mailer * mailer)
|
||||||
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
|
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
|
||||||
gtk_text_buffer_set_text(buffer, prefix, sizeof(prefix) - 1);
|
gtk_text_buffer_set_text(buffer, prefix, sizeof(prefix) - 1);
|
||||||
gtk_text_buffer_insert_at_cursor(buffer, buf, cnt);
|
gtk_text_buffer_insert_at_cursor(buffer, buf, cnt);
|
||||||
|
gtk_text_buffer_set_modified(buffer, FALSE);
|
||||||
return textview;
|
return textview;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -370,7 +371,7 @@ static void _on_header_edited(GtkCellRendererText * renderer, gchar * path,
|
||||||
/* compose_delete */
|
/* compose_delete */
|
||||||
void compose_delete(Compose * compose)
|
void compose_delete(Compose * compose)
|
||||||
{
|
{
|
||||||
gtk_widget_hide(compose->window);
|
gtk_widget_destroy(compose->window);
|
||||||
free(compose);
|
free(compose);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -405,6 +406,41 @@ void compose_add_field(Compose * compose, char const * field,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* compose_close */
|
||||||
|
gboolean compose_close(Compose * compose)
|
||||||
|
{
|
||||||
|
GtkWidget * dialog;
|
||||||
|
int res;
|
||||||
|
|
||||||
|
if(gtk_text_buffer_get_modified(gtk_text_view_get_buffer(GTK_TEXT_VIEW(
|
||||||
|
compose->view))) == FALSE)
|
||||||
|
{
|
||||||
|
compose_delete(compose);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
dialog = gtk_message_dialog_new(GTK_WINDOW(compose->window),
|
||||||
|
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||||
|
GTK_MESSAGE_WARNING, GTK_BUTTONS_NONE, "%s",
|
||||||
|
#if GTK_CHECK_VERSION(2, 6, 0)
|
||||||
|
_("Warning"));
|
||||||
|
gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),
|
||||||
|
"%s",
|
||||||
|
#endif
|
||||||
|
_("There are unsaved changes.\n"
|
||||||
|
"Are you sure you want to close?"));
|
||||||
|
gtk_dialog_add_buttons(GTK_DIALOG(dialog), GTK_STOCK_CANCEL,
|
||||||
|
GTK_RESPONSE_CANCEL, GTK_STOCK_CLOSE,
|
||||||
|
GTK_RESPONSE_CLOSE, NULL);
|
||||||
|
gtk_window_set_title(GTK_WINDOW(dialog), _("Warning"));
|
||||||
|
res = gtk_dialog_run(GTK_DIALOG(dialog));
|
||||||
|
gtk_widget_destroy(dialog);
|
||||||
|
if(res != GTK_RESPONSE_CLOSE)
|
||||||
|
return TRUE;
|
||||||
|
compose_delete(compose);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* compose_error */
|
/* compose_error */
|
||||||
int compose_error(Compose * compose, char const * message, int ret)
|
int compose_error(Compose * compose, char const * message, int ret)
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,6 +37,8 @@ void compose_set_subject(Compose * compose, char const * subject);
|
||||||
void compose_add_field(Compose * compose, char const * field,
|
void compose_add_field(Compose * compose, char const * field,
|
||||||
char const * value);
|
char const * value);
|
||||||
|
|
||||||
|
gboolean compose_close(Compose * compose);
|
||||||
|
|
||||||
int compose_error(Compose * compose, char const * message, int ret);
|
int compose_error(Compose * compose, char const * message, int ret);
|
||||||
|
|
||||||
int compose_save(Compose * compose);
|
int compose_save(Compose * compose);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user