SF.net SVN: geany: [2526] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Thu Apr 24 14:33:14 UTC 2008
Revision: 2526
http://geany.svn.sourceforge.net/geany/?rev=2526&view=rev
Author: ntrel
Date: 2008-04-24 07:33:12 -0700 (Thu, 24 Apr 2008)
Log Message:
-----------
Move Close All functions to document.c.
Add document_account_for_unsaved().
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/callbacks.c
trunk/src/document.c
trunk/src/document.h
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-04-24 14:17:11 UTC (rev 2525)
+++ trunk/ChangeLog 2008-04-24 14:33:12 UTC (rev 2526)
@@ -11,6 +11,11 @@
* src/utils.c:
Make utils_get_file_list() use a case-insensitive search so that the
file browser lists files and directories in a more intuitive order.
+ * src/project.c:
+ Fix build because of wrong document_close_all() usage - oops.
+ * src/callbacks.c, src/document.c, src/document.h:
+ Move Close All functions to document.c.
+ Add document_account_for_unsaved().
2008-04-23 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
Modified: trunk/src/callbacks.c
===================================================================
--- trunk/src/callbacks.c 2008-04-24 14:17:11 UTC (rev 2525)
+++ trunk/src/callbacks.c 2008-04-24 14:33:12 UTC (rev 2526)
@@ -105,25 +105,6 @@
}
-/* @return TRUE if all files were saved or had their changes discarded. */
-static gboolean account_for_unsaved(void)
-{
- gint p;
-
- for (p = 0; p < gtk_notebook_get_n_pages(GTK_NOTEBOOK(app->notebook)); p++)
- {
- gint idx = document_get_n_idx(p);
-
- if (doc_list[idx].changed)
- {
- if (! dialogs_show_unsaved_file(idx))
- return FALSE;
- }
- }
- return TRUE;
-}
-
-
/* set editor_info.click_pos to the current cursor position if insert_callback_from_menu is TRUE
* to prevent invalid cursor positions which can cause segfaults */
static void verify_click_pos(gint idx)
@@ -136,29 +117,6 @@
}
-static void force_close_all()
-{
- guint i, len = doc_array->len;
-
- main_status.closing_all = TRUE;
-
- /* all documents should be accounted for, so ignore any changes */
- for (i = 0; i < len; i++)
- {
- if (doc_list[i].is_valid && doc_list[i].changed)
- {
- doc_list[i].changed = FALSE;
- }
- }
- while (gtk_notebook_get_n_pages(GTK_NOTEBOOK(app->notebook)) > 0)
- {
- document_remove(0);
- }
-
- main_status.closing_all = FALSE;
-}
-
-
/* should only be called from on_exit_clicked */
static void quit_app(void)
{
@@ -167,7 +125,7 @@
if (app->project != NULL)
project_close(FALSE); /* save project session files */
- force_close_all();
+ document_close_all();
main_quit();
}
@@ -181,7 +139,7 @@
if (! check_no_unsaved())
{
- if (account_for_unsaved())
+ if (document_account_for_unsaved())
{
quit_app();
return FALSE;
@@ -267,23 +225,11 @@
}
-static gboolean close_all(void)
-{
- if (! account_for_unsaved())
- return FALSE;
-
- force_close_all();
-
- tm_workspace_update(TM_WORK_OBJECT(app->tm_workspace), TRUE, TRUE, FALSE);
- return TRUE;
-}
-
-
void
on_close_all1_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
- close_all();
+ document_close_all();
}
Modified: trunk/src/document.c
===================================================================
--- trunk/src/document.c 2008-04-24 14:17:11 UTC (rev 2525)
+++ trunk/src/document.c 2008-04-24 14:33:12 UTC (rev 2526)
@@ -516,14 +516,6 @@
}
-void document_close_all()
-{
- /* the code is in callbacks.c because when quitting, checking for changes
- * has to be done before saving the session */
- on_close_all1_activate(NULL, NULL);
-}
-
-
/**
* Remove the given notebook tab at @a page_num and clear all related information
* in the document list.
@@ -2724,3 +2716,68 @@
}
+/* @note If successful, this should always be followed up with a call to
+ * document_close_all().
+ * @return TRUE if all files were saved or had their changes discarded. */
+gboolean document_account_for_unsaved(void)
+{
+ gint p;
+ guint i, len = doc_array->len;
+
+ for (p = 0; p < gtk_notebook_get_n_pages(GTK_NOTEBOOK(app->notebook)); p++)
+ {
+ gint idx = document_get_n_idx(p);
+
+ if (doc_list[idx].changed)
+ {
+ if (! dialogs_show_unsaved_file(idx))
+ return FALSE;
+ }
+ }
+ /* all documents should now be accounted for, so ignore any changes */
+ for (i = 0; i < len; i++)
+ {
+ if (doc_list[i].is_valid && doc_list[i].changed)
+ {
+ doc_list[i].changed = FALSE;
+ }
+ }
+ return TRUE;
+}
+
+
+static void force_close_all(void)
+{
+ guint i, len = doc_array->len;
+
+ /* check all documents have been accounted for */
+ for (i = 0; i < len; i++)
+ {
+ if (doc_list[i].is_valid)
+ {
+ g_return_if_fail(!doc_list[i].changed);
+ }
+ }
+ main_status.closing_all = TRUE;
+
+ while (gtk_notebook_get_n_pages(GTK_NOTEBOOK(app->notebook)) > 0)
+ {
+ document_remove(0);
+ }
+
+ main_status.closing_all = FALSE;
+}
+
+
+gboolean document_close_all(void)
+{
+ if (! document_account_for_unsaved())
+ return FALSE;
+
+ force_close_all();
+
+ tm_workspace_update(TM_WORK_OBJECT(app->tm_workspace), TRUE, TRUE, FALSE);
+ return TRUE;
+}
+
+
Modified: trunk/src/document.h
===================================================================
--- trunk/src/document.h 2008-04-24 14:17:11 UTC (rev 2525)
+++ trunk/src/document.h 2008-04-24 14:33:12 UTC (rev 2526)
@@ -151,11 +151,13 @@
void document_apply_update_prefs(gint idx);
-void document_close_all();
-
gboolean document_remove(guint page_num);
+gboolean document_account_for_unsaved(void);
+gboolean document_close_all(void);
+
+
gint document_new_file_if_non_open();
gint document_new_file(const gchar *filename, filetype *ft, const gchar *text);
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