SF.net SVN: geany: [2254] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Tue Feb 12 15:50:22 UTC 2008


Revision: 2254
          http://geany.svn.sourceforge.net/geany/?rev=2254&view=rev
Author:   eht16
Date:     2008-02-12 07:50:22 -0800 (Tue, 12 Feb 2008)

Log Message:
-----------
Fix compiler warnings.
Improve Save As dialog usability problems.      

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

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-02-12 15:49:54 UTC (rev 2253)
+++ trunk/ChangeLog	2008-02-12 15:50:22 UTC (rev 2254)
@@ -10,6 +10,12 @@
    Improve filename of created symlink to the socket file.
  * src/document.c: Don't force unique line ending characters when saving
                    files to avoid unexpected saving behaviour.
+ * src/keybindings.c, src/keybindings.h, src/prefs.c:
+   Use a modifiers mask to ignore unwanted modifiers(caps lock,
+   num lock) when handling key presses (maybe fixes #1891276).
+ * src/dialogs.c:
+   Fix compiler warnings.
+   Improve Save As dialog usability problems.
 
 
 2008-02-11  Frank Lanitz  <frank(at)frank(dot)uvena(dot)de>

Modified: trunk/src/dialogs.c
===================================================================
--- trunk/src/dialogs.c	2008-02-12 15:49:54 UTC (rev 2253)
+++ trunk/src/dialogs.c	2008-02-12 15:50:22 UTC (rev 2254)
@@ -525,24 +525,34 @@
 static gboolean gtk_show_save_as(const gchar *initdir)
 {
 	gint idx = document_get_cur_idx(), resp;
+	gboolean folder_set = FALSE;
 
 	if (ui_widgets.save_filesel == NULL)
 		create_save_file_dialog();
 
-	if (initdir && g_path_is_absolute(initdir))
-		gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(ui_widgets.save_filesel),
-			initdir);
+	gtk_file_chooser_unselect_all(GTK_FILE_CHOOSER(ui_widgets.save_filesel));
 
-	// If the current document has a filename we use that as the default.
 	if (doc_list[idx].file_name != NULL)
 	{
-		gchar *locale_filename = utils_get_locale_from_utf8(doc_list[idx].file_name);
-		if (g_path_is_absolute(locale_filename))
-			gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(ui_widgets.save_filesel), locale_filename);
+		if (g_path_is_absolute(doc_list[idx].file_name))
+		{
+			gchar *locale_filename = utils_get_locale_from_utf8(doc_list[idx].file_name);
+			gchar *locale_basename = g_path_get_basename(locale_filename);
+			gchar *locale_dirname = g_path_get_dirname(locale_filename);
+
+			folder_set = TRUE;
+			gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(ui_widgets.save_filesel),
+				locale_dirname);
+			gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(ui_widgets.save_filesel),
+				locale_basename);
+
+			g_free(locale_filename);
+			g_free(locale_basename);
+			g_free(locale_dirname);
+		}
 		else
 			gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(ui_widgets.save_filesel),
 				doc_list[idx].file_name);
-		g_free(locale_filename);
 	}
 	else
 	{
@@ -555,12 +565,15 @@
 		else
 			fname = g_strdup(GEANY_STRING_UNTITLED);
 
-		gtk_file_chooser_unselect_all(GTK_FILE_CHOOSER(ui_widgets.save_filesel));
 		gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(ui_widgets.save_filesel), fname);
 
 		g_free(fname);
 	}
 
+	// if the folder wasn't set so far, we set it to the given directory
+	if (! folder_set && initdir != NULL && g_path_is_absolute(initdir))
+		gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(ui_widgets.save_filesel), initdir);
+
 	// Run the dialog synchronously, pausing this function call
 	resp = gtk_dialog_run(GTK_DIALOG(ui_widgets.save_filesel));
 	return (resp == GTK_RESPONSE_ACCEPT);
@@ -797,7 +810,7 @@
                          gint response,
                          GtkWidget *entry)
 {
-	gboolean persistent = (gboolean) g_object_get_data(G_OBJECT(dialog), "has_combo");
+	gboolean persistent = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(dialog), "has_combo"));
 
 	if (response == GTK_RESPONSE_ACCEPT)
 	{
@@ -878,7 +891,7 @@
 	gtk_widget_set_name(dialog, "GeanyDialog");
 	gtk_box_set_spacing(GTK_BOX(vbox), 6);
 
-	g_object_set_data(G_OBJECT(dialog), "has_combo", (gpointer) persistent);
+	g_object_set_data(G_OBJECT(dialog), "has_combo", GINT_TO_POINTER(persistent));
 	g_object_set_data(G_OBJECT(dialog), "input_cb", (gpointer) input_cb);
 
 	add_input_widgets(dialog, vbox, label_text, default_text, persistent);


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