[geany/geany] a733bf: Merge pull request #327 from ntrel/open-file-exists
Nick Treleaven
git-noreply at xxxxx
Mon Sep 1 16:01:41 UTC 2014
Branch: refs/heads/master
Author: Nick Treleaven <nick.treleaven at btinternet.com>
Committer: Nick Treleaven <nick.treleaven at btinternet.com>
Date: Mon, 01 Sep 2014 16:01:41 UTC
Commit: a733bf9b2a7e04156a60f43ed2c41b4090b63762
https://github.com/geany/geany/commit/a733bf9b2a7e04156a60f43ed2c41b4090b63762
Log Message:
-----------
Merge pull request #327 from ntrel/open-file-exists
Allow user to edit open dialog filename when file doesn't exist
Modified Paths:
--------------
src/dialogs.c
Modified: src/dialogs.c
23 lines changed, 18 insertions(+), 5 deletions(-)
===================================================================
@@ -123,8 +123,10 @@ static void file_chooser_set_filter_idx(GtkFileChooser *chooser, guint idx)
}
-static void open_file_dialog_handle_response(GtkWidget *dialog, gint response)
+static gboolean open_file_dialog_handle_response(GtkWidget *dialog, gint response)
{
+ gboolean ret = TRUE;
+
if (response == GTK_RESPONSE_ACCEPT || response == GEANY_RESPONSE_VIEW)
{
GSList *filelist;
@@ -150,7 +152,18 @@ static void open_file_dialog_handle_response(GtkWidget *dialog, gint response)
filelist = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));
if (filelist != NULL)
{
- document_open_files(filelist, ro, ft, charset);
+ const gchar *first = filelist->data;
+
+ // When there's only one filename it may have been typed manually
+ if (!filelist->next && !g_file_test(first, G_FILE_TEST_EXISTS))
+ {
+ dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("\"%s\" was not found."), first);
+ ret = FALSE;
+ }
+ else
+ {
+ document_open_files(filelist, ro, ft, charset);
+ }
g_slist_foreach(filelist, (GFunc) g_free, NULL); /* free filenames */
}
g_slist_free(filelist);
@@ -158,6 +171,7 @@ static void open_file_dialog_handle_response(GtkWidget *dialog, gint response)
if (app->project && !EMPTY(app->project->base_path))
gtk_file_chooser_remove_shortcut_folder(GTK_FILE_CHOOSER(dialog),
app->project->base_path, NULL);
+ return ret;
}
@@ -456,7 +470,6 @@ void dialogs_show_open_file(void)
#endif
{
GtkWidget *dialog = create_open_file_dialog();
- gint response;
open_file_dialog_apply_settings(dialog);
@@ -467,8 +480,8 @@ void dialogs_show_open_file(void)
gtk_file_chooser_add_shortcut_folder(GTK_FILE_CHOOSER(dialog),
app->project->base_path, NULL);
- response = gtk_dialog_run(GTK_DIALOG(dialog));
- open_file_dialog_handle_response(dialog, response);
+ while (!open_file_dialog_handle_response(dialog,
+ gtk_dialog_run(GTK_DIALOG(dialog))));
gtk_widget_destroy(dialog);
}
g_free(initdir);
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Commits
mailing list