SF.net SVN: geany:[5838] trunk/src/dialogs.c

colombanw at users.sourceforge.net colombanw at xxxxx
Fri Jun 10 23:13:08 UTC 2011


Revision: 5838
          http://geany.svn.sourceforge.net/geany/?rev=5838&view=rev
Author:   colombanw
Date:     2011-06-10 23:13:08 +0000 (Fri, 10 Jun 2011)

Log Message:
-----------
Properly save and restore the encoding state in Open File dialog (oops)

Modified Paths:
--------------
    trunk/src/dialogs.c

Modified: trunk/src/dialogs.c
===================================================================
--- trunk/src/dialogs.c	2011-06-10 22:13:29 UTC (rev 5837)
+++ trunk/src/dialogs.c	2011-06-10 23:13:08 UTC (rev 5838)
@@ -82,8 +82,16 @@
 	} save;
 }
 filesel_state = {
-	{ 0, 0, 0, FALSE, FALSE },
-	{ FALSE }
+	{
+		0,
+		GEANY_ENCODINGS_MAX, /* default encoding is detect from file */
+		0,
+		FALSE,
+		FALSE
+	},
+	{
+		FALSE
+	}
 };
 
 
@@ -125,7 +133,6 @@
 	if (response == GTK_RESPONSE_ACCEPT || response == GEANY_RESPONSE_VIEW)
 	{
 		GSList *filelist;
-		gint encoding_idx;
 		GtkTreeModel *encoding_model;
 		GtkTreeIter encoding_iter;
 		GeanyFiletype *ft = NULL;
@@ -138,7 +145,6 @@
 		filesel_state.open.more_options_visible = gtk_expander_get_expanded(GTK_EXPANDER(expander));
 		filesel_state.open.filter_idx = file_chooser_get_filter_idx(GTK_FILE_CHOOSER(dialog));
 		filesel_state.open.filetype_idx = gtk_combo_box_get_active(GTK_COMBO_BOX(filetype_combo));
-		filesel_state.open.encoding_idx = gtk_combo_box_get_active(GTK_COMBO_BOX(encoding_combo));
 
 		/* ignore detect from file item */
 		if (filesel_state.open.filetype_idx > 0)
@@ -146,9 +152,9 @@
 
 		encoding_model = gtk_combo_box_get_model(GTK_COMBO_BOX(encoding_combo));
 		gtk_combo_box_get_active_iter(GTK_COMBO_BOX(encoding_combo), &encoding_iter);
-		gtk_tree_model_get(encoding_model, &encoding_iter, 0, &encoding_idx, -1);
-		if (encoding_idx >= 0 && encoding_idx < GEANY_ENCODINGS_MAX)
-			charset = encodings[encoding_idx].charset;
+		gtk_tree_model_get(encoding_model, &encoding_iter, 0, &filesel_state.open.encoding_idx, -1);
+		if (filesel_state.open.encoding_idx >= 0 && filesel_state.open.encoding_idx < GEANY_ENCODINGS_MAX)
+			charset = encodings[filesel_state.open.encoding_idx].charset;
 
 		filelist = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));
 		if (filelist != NULL)
@@ -252,6 +258,9 @@
 		encoding_string = encodings_to_string(&encodings[i]);
 		gtk_tree_store_set(store, &iter_current, 0, i, 1, encoding_string, -1);
 		g_free(encoding_string);
+		/* restore the saved state */
+		if (i == filesel_state.open.encoding_idx)
+			*iter_detect = iter_current;
 	}
 
 	gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), 1, GTK_SORT_ASCENDING);
@@ -419,7 +428,6 @@
 	static gboolean initialized = FALSE;
 	GtkWidget *check_hidden = ui_lookup_widget(dialog, "check_hidden");
 	GtkWidget *filetype_combo = ui_lookup_widget(dialog, "filetype_combo");
-	GtkWidget *encoding_combo = ui_lookup_widget(dialog, "encoding_combo");
 	GtkWidget *expander = ui_lookup_widget(dialog, "more_options_expander");
 
 	/* we can't know the initial position of combo boxes, so retreive it the first time */
@@ -427,7 +435,6 @@
 	{
 		filesel_state.open.filter_idx = file_chooser_get_filter_idx(GTK_FILE_CHOOSER(dialog));
 		filesel_state.open.filetype_idx = gtk_combo_box_get_active(GTK_COMBO_BOX(filetype_combo));
-		filesel_state.open.encoding_idx = gtk_combo_box_get_active(GTK_COMBO_BOX(encoding_combo));
 
 		initialized = TRUE;
 	}
@@ -435,10 +442,10 @@
 	{
 		file_chooser_set_filter_idx(GTK_FILE_CHOOSER(dialog), filesel_state.open.filter_idx);
 		gtk_combo_box_set_active(GTK_COMBO_BOX(filetype_combo), filesel_state.open.filetype_idx);
-		gtk_combo_box_set_active(GTK_COMBO_BOX(encoding_combo), filesel_state.open.encoding_idx);
 	}
 	gtk_expander_set_expanded(GTK_EXPANDER(expander), filesel_state.open.more_options_visible);
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_hidden), filesel_state.open.show_hidden);
+	/* encoding combo is restored at creating time, see create_encoding_combo_store() */
 }
 
 


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