--- ./src/main.c.orig 2007-11-17 21:30:00.000000000 +0200 +++ ./src/main.c 2008-08-16 19:02:55.000000000 +0300 @@ -20,6 +20,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include +#include #include "mousepad.h" static gint load_config_file(StructData *sd) @@ -140,12 +142,37 @@ return 0; } -static void create_new_process(gchar *filename) +static SessionClient *client; + +static void interact_proc_cb(gpointer client_data, SessionInteractStyle interact_style) +{ + if (interact_style == SESSION_INTERACT_ANY) + { + StructData *sd = (StructData *) client_data; + gchar *basename, *str; + gint res; + + basename = get_current_file_basename(sd->fi->filename); + str = g_strdup_printf(_("Save changes to '%s'?"), basename); + res = run_dialog_message_question(sd->mainwin->window, str); + g_free(str); + g_free(basename); + if (res == GTK_RESPONSE_CANCEL) + SmcInteractDone((SmcConn) client->session_connection, True); + } +} + +static void create_new_process(gchar *filename, int argc, char **argv) { StructData *sd = g_malloc(sizeof(StructData)); FileInfo *fi; GtkItemFactory *ifactory; - + + client = client_session_new(argc, argv, sd, SESSION_RESTART_IF_RUNNING, 50); + client->interact = interact_proc_cb; + client->interact_style = SESSION_INTERACT_ANY; + session_init(client); + load_config_file(sd); sd->mainwin = create_main_window(sd); gtk_widget_show_all(sd->mainwin->window); @@ -229,7 +256,7 @@ } } - create_new_process(filename); + create_new_process(filename, argc, argv); return 0; }