SF.net SVN: geany:[5549] branches/sm/src
statc at users.sourceforge.net
statc at xxxxx
Sun Feb 27 08:46:16 UTC 2011
Revision: 5549
http://geany.svn.sourceforge.net/geany/?rev=5549&view=rev
Author: statc
Date: 2011-02-27 08:46:16 +0000 (Sun, 27 Feb 2011)
Log Message:
-----------
SM: Don't save configuration on interactive SmSaveGlobal; don't ask to cancel shutdown if not a shutdown.
Modified Paths:
--------------
branches/sm/src/callbacks.c
branches/sm/src/main.c
branches/sm/src/main.h
branches/sm/src/sm.c
Modified: branches/sm/src/callbacks.c
===================================================================
--- branches/sm/src/callbacks.c 2011-02-27 08:45:50 UTC (rev 5548)
+++ branches/sm/src/callbacks.c 2011-02-27 08:46:16 UTC (rev 5549)
@@ -116,7 +116,7 @@
quit = FALSE;
}
- if (quit && main_save(TRUE))
+ if (quit && main_save(GEANY_MAIN_SAVE_ALL, TRUE))
{
main_finalize();
return FALSE;
Modified: branches/sm/src/main.c
===================================================================
--- branches/sm/src/main.c 2011-02-27 08:45:50 UTC (rev 5548)
+++ branches/sm/src/main.c 2011-02-27 08:46:16 UTC (rev 5549)
@@ -1190,17 +1190,20 @@
}
-gboolean main_save(gboolean interactive)
+gboolean main_save(GeanyMainSaveFlags flags, gboolean interactive)
{
- if (interactive && !document_account_for_unsaved())
- return FALSE;
+ if ((flags & GEANY_MAIN_SAVE_DOCUMENTS) && interactive)
+ if (!document_account_for_unsaved())
+ return FALSE;
- if (!cl_options.new_instance)
- configuration_save(GEANY_SETTINGS_RUNTIME);
+ if (flags & GEANY_MAIN_SAVE_CONFIGURATION)
+ {
+ if (!cl_options.new_instance)
+ configuration_save(GEANY_SETTINGS_RUNTIME);
+ if (app->project)
+ project_save(FALSE, GEANY_PROJECT_SETTINGS_RUNTIME);
+ }
- if (app->project)
- project_save(FALSE, GEANY_PROJECT_SETTINGS_RUNTIME);
-
return TRUE;
}
Modified: branches/sm/src/main.h
===================================================================
--- branches/sm/src/main.h 2011-02-27 08:45:50 UTC (rev 5548)
+++ branches/sm/src/main.h 2011-02-27 08:46:16 UTC (rev 5549)
@@ -69,11 +69,20 @@
extern GeanyStatus main_status;
+typedef enum
+{
+ GEANY_MAIN_SAVE_CONFIGURATION = 1,
+ GEANY_MAIN_SAVE_DOCUMENTS = 2,
+ GEANY_MAIN_SAVE_ALL = 3
+}
+GeanyMainSaveFlags;
+
+
const gchar *main_get_version_string(void);
gchar *main_get_argv_filename(const gchar *filename);
-gboolean main_save(gboolean interactive);
+gboolean main_save(GeanyMainSaveFlags flags, gboolean interactive);
void main_finalize(void);
Modified: branches/sm/src/sm.c
===================================================================
--- branches/sm/src/sm.c 2011-02-27 08:45:50 UTC (rev 5548)
+++ branches/sm/src/sm.c 2011-02-27 08:46:16 UTC (rev 5549)
@@ -109,6 +109,11 @@
*/
static SmPropValue sm_client_id_arg_val;
+/* The last values received by sm_save_yourself_callback().
+ * Used by the sm_interact_callback(). */
+static GeanyMainSaveFlags sm_last_save_flags;
+static Bool sm_last_shutdown;
+
#endif
/*
@@ -576,16 +581,34 @@
static void sm_save_yourself_callback(SmcConn smcon, SmPointer client_data,
int save_type, Bool shutdown, int interact_style, Bool fast)
{
+ sm_last_shutdown = shutdown;
+ switch (save_type)
+ {
+ case SmSaveGlobal:
+ sm_last_save_flags = GEANY_MAIN_SAVE_DOCUMENTS;
+ break;
+ case SmSaveLocal:
+ sm_last_save_flags = GEANY_MAIN_SAVE_CONFIGURATION;
+ break;
+ case SmSaveBoth:
+ sm_last_save_flags = GEANY_MAIN_SAVE_ALL;
+ break;
+ default:
+ sm_last_save_flags = 0;
+ }
+
if (save_type == SmSaveGlobal || save_type == SmSaveBoth)
{
+ /* if we may save documents... */
if (interact_style == SmInteractStyleAny && document_any_unsaved())
{
+ /* ...and do it interactively, then use InteractRequest */
+ sm_last_save_flags = save_type;
+ sm_last_shutdown = shutdown;
if (!SmcInteractRequest(smcon, SmDialogNormal, sm_interact_callback, NULL))
SmcSaveYourselfDone(smcon, FALSE);
return;
}
- else
- main_save(FALSE);
}
/*
@@ -594,6 +617,7 @@
* until we get "Die" or "Shutdown" message.
*/
+ main_save(sm_last_save_flags, FALSE);
sm_set_runtime_props(smcon);
SmcSaveYourselfDone(smcon, TRUE);
}
@@ -619,9 +643,9 @@
*/
static void sm_interact_callback(SmcConn smcon, SmPointer client_data)
{
- gboolean cancelled = !main_save(TRUE);
+ gboolean cancelled = !main_save(sm_last_save_flags, TRUE);
sm_set_runtime_props(smcon);
- SmcInteractDone(smcon, cancelled);
+ SmcInteractDone(smcon, sm_last_shutdown && cancelled);
SmcSaveYourselfDone(smcon, TRUE);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list