SF.net SVN: geany:[4975] branches/sm

statc at users.sourceforge.net statc at xxxxx
Mon May 31 09:26:07 UTC 2010


Revision: 4975
          http://geany.svn.sourceforge.net/geany/?rev=4975&view=rev
Author:   statc
Date:     2010-05-31 09:26:07 +0000 (Mon, 31 May 2010)

Log Message:
-----------
Use a separate queue to store recently closed files

Modified Paths:
--------------
    branches/sm/ChangeLog.sm
    branches/sm/src/document.c
    branches/sm/src/keybindings.c
    branches/sm/src/main.c
    branches/sm/src/ui_utils.c
    branches/sm/src/ui_utils.h

Modified: branches/sm/ChangeLog.sm
===================================================================
--- branches/sm/ChangeLog.sm	2010-05-31 09:25:37 UTC (rev 4974)
+++ branches/sm/ChangeLog.sm	2010-05-31 09:26:07 UTC (rev 4975)
@@ -4,6 +4,9 @@
    src/keyfile.h, src/main.c, src/ui_utils.c, src/ui_utils.h:
    Update lists of recent files and projects in geany.conf immediately
    instead of writing them on exit.
+ * src/document.c, src/keybindings.c, src/main.c, src/ui_utils.c,
+   src/ui_utils.h:
+   Use a separate queue to store recently closed files
 
 
 2010-05-30  Eugene Arshinov  <earshinov(at)gmail(dot)com>

Modified: branches/sm/src/document.c
===================================================================
--- branches/sm/src/document.c	2010-05-31 09:25:37 UTC (rev 4974)
+++ branches/sm/src/document.c	2010-05-31 09:26:07 UTC (rev 4975)
@@ -636,7 +636,7 @@
 
 	/* Checking real_path makes it likely the file exists on disk */
 	if (! main_status.closing_all && doc->real_path != NULL)
-		ui_add_recent_file(doc->file_name, TRUE);
+		ui_add_closed_file(doc->file_name);
 
 	doc->is_valid = FALSE;
 

Modified: branches/sm/src/keybindings.c
===================================================================
--- branches/sm/src/keybindings.c	2010-05-31 09:25:37 UTC (rev 4974)
+++ branches/sm/src/keybindings.c	2010-05-31 09:26:07 UTC (rev 4975)
@@ -1349,10 +1349,18 @@
 			break;
 		case GEANY_KEYS_FILE_OPENLASTTAB:
 		{
-			gchar *utf8_filename = g_queue_peek_head(ui_prefs.recent_queue);
-			gchar *locale_filename = utils_get_locale_from_utf8(utf8_filename);
-			document_open_file(locale_filename, FALSE, NULL, NULL);
-			g_free(locale_filename);
+			gchar *utf8_filename = g_queue_pop_head(ui_prefs.closed_queue);
+			if (utf8_filename == NULL)
+			{
+				utils_beep();
+			}
+			else
+			{
+				gchar *locale_filename = utils_get_locale_from_utf8(utf8_filename);
+				document_open_file(locale_filename, FALSE, NULL, NULL);
+				g_free(utf8_filename);
+				g_free(locale_filename);
+			}
 			break;
 		}
 		case GEANY_KEYS_FILE_SAVE:

Modified: branches/sm/src/main.c
===================================================================
--- branches/sm/src/main.c	2010-05-31 09:25:37 UTC (rev 4974)
+++ branches/sm/src/main.c	2010-05-31 09:26:07 UTC (rev 4975)
@@ -276,6 +276,7 @@
 	app->tm_workspace		= tm_get_workspace();
 	ui_prefs.recent_queue				= g_queue_new();
 	ui_prefs.recent_projects_queue		= g_queue_new();
+	ui_prefs.closed_queue				= g_queue_new();
 	main_status.opening_session_files	= FALSE;
 
 	ui_init_stock_items();
@@ -1279,6 +1280,7 @@
 	if (ui_prefs.recent_projects_queue->length > 0)
 		g_warning("Unsaved recent projects (%d)", ui_prefs.recent_projects_queue->length);
 	queue_free(ui_prefs.recent_projects_queue);
+	queue_free(ui_prefs.closed_queue);
 
 	if (ui_widgets.prefs_dialog && GTK_IS_WIDGET(ui_widgets.prefs_dialog)) gtk_widget_destroy(ui_widgets.prefs_dialog);
 	if (ui_widgets.save_filesel && GTK_IS_WIDGET(ui_widgets.save_filesel)) gtk_widget_destroy(ui_widgets.save_filesel);

Modified: branches/sm/src/ui_utils.c
===================================================================
--- branches/sm/src/ui_utils.c	2010-05-31 09:25:37 UTC (rev 4974)
+++ branches/sm/src/ui_utils.c	2010-05-31 09:26:07 UTC (rev 4975)
@@ -1106,6 +1106,14 @@
 }
 
 
+void ui_add_closed_file(const gchar *utf8_filename)
+{
+	g_queue_push_head(ui_prefs.closed_queue, g_strdup(utf8_filename));
+	if (g_queue_get_length(ui_prefs.closed_queue) > file_prefs.mru_length)
+		g_free(g_queue_pop_tail(ui_prefs.closed_queue));
+}
+
+
 /* Returns: newly allocated string with the UTF-8 menu text. */
 gchar *ui_menu_item_get_text(GtkMenuItem *menu_item)
 {

Modified: branches/sm/src/ui_utils.h
===================================================================
--- branches/sm/src/ui_utils.h	2010-05-31 09:25:37 UTC (rev 4974)
+++ branches/sm/src/ui_utils.h	2010-05-31 09:26:07 UTC (rev 4975)
@@ -100,6 +100,10 @@
 	GQueue		*recent_queue;
 	GQueue		*recent_projects_queue;
 
+	/* Stores recently closed files. Should contain file_prefs.mru_length
+	 * elements max. Element type: gchar *. */
+	GQueue		*closed_queue;
+
 	/* Other menu-item related data */
 	gchar		*custom_date_format;
 	gchar		**custom_commands;
@@ -287,7 +291,9 @@
 
 void ui_add_recent_project_file(const gchar *utf8_filename);
 
+void ui_add_closed_file(const gchar *utf8_filename);
 
+
 void ui_update_tab_status(GeanyDocument *doc);
 
 


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