[geany/geany] a87655: Merge most of PR#298

Colomban Wendling git-noreply at xxxxx
Fri Jul 11 16:06:59 UTC 2014


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Fri, 11 Jul 2014 16:06:59 UTC
Commit:      a87655480ffbfdb8c29a843c77ba23e5c00dc79a
             https://github.com/geany/geany/commit/a87655480ffbfdb8c29a843c77ba23e5c00dc79a

Log Message:
-----------
Merge most of PR#298


Modified Paths:
--------------
    src/document.c

Modified: src/document.c
32 lines changed, 14 insertions(+), 18 deletions(-)
===================================================================
@@ -3177,8 +3177,10 @@ static void on_monitor_reload_file_response(GtkWidget *bar, gint response_id, Ge
 	unprotect_document(doc);
 	doc->priv->info_bars[MSG_TYPE_RELOAD] = NULL;
 
-	if (response_id == GTK_RESPONSE_ACCEPT)
+	if (response_id == GTK_RESPONSE_REJECT)
 		document_reload_file(doc, doc->encoding);
+	else if (response_id == GTK_RESPONSE_ACCEPT)
+		document_save_file(doc, FALSE);
 }
 
 static gboolean on_sci_key(GtkWidget *widget, GdkEventKey *event, gpointer data)
@@ -3207,19 +3209,16 @@ static gboolean on_sci_key(GtkWidget *widget, GdkEventKey *event, gpointer data)
 	}
 }
 
-/* g_signal_handlers_disconnect_by_data is a macro that cannot be used as GCallback */
-static void on_bar_unrealize(GtkWidget *bar, ScintillaObject *sci)
-{
-	g_signal_handlers_disconnect_by_func(sci, on_sci_key, bar);
-}
 
+/* Sets up a signal handler to intercept some keys during the lifetime of the GtkInfoBar */
 static void enable_key_intercept(GeanyDocument *doc, GtkWidget *bar)
 {
-	g_signal_connect(doc->editor->sci, "key-press-event", G_CALLBACK(on_sci_key), bar);
-	/* make the signal disconnect automatically */
-	g_signal_connect(bar, "unrealize", G_CALLBACK(on_bar_unrealize), doc->editor->sci);
+	/* automatically focus editor again on bar close */
+	g_signal_connect_swapped(bar, "unrealize", G_CALLBACK(document_grab_focus), doc);
+	g_signal_connect_object(doc->editor->sci, "key-press-event", G_CALLBACK(on_sci_key), bar, 0);
 }
 
+
 static void monitor_reload_file(GeanyDocument *doc)
 {
 	gchar *base_name = g_path_get_basename(doc->file_name);
@@ -3230,13 +3229,14 @@ static void monitor_reload_file(GeanyDocument *doc)
 		GtkWidget *bar;
 
 		bar = document_show_message(doc, GTK_MESSAGE_QUESTION, on_monitor_reload_file_response,
-				_("_Reload"), GTK_RESPONSE_ACCEPT,
+				_("_Reload"), GTK_RESPONSE_REJECT,
+				GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
 				GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-				NULL, GTK_RESPONSE_NONE,
 				_("Do you want to reload it?"),
 				_("The file '%s' on the disk is more recent than the current buffer."),
 				base_name);
 
+		document_set_text_changed(doc, TRUE);
 		protect_document(doc);
 		doc->priv->info_bars[MSG_TYPE_RELOAD] = bar;
 		enable_key_intercept(doc, bar);
@@ -3256,13 +3256,6 @@ static void on_monitor_resave_missing_file_response(GtkWidget *bar,
 	if (response_id == GTK_RESPONSE_ACCEPT)
 		file_saved = dialogs_show_save_as();
 
-	if (!file_saved)
-	{
-		document_set_text_changed(doc, TRUE);
-		/* don't prompt more than once */
-		SETPTR(doc->real_path, NULL);
-	}
-
 	doc->priv->info_bars[MSG_TYPE_RESAVE] = NULL;
 }
 
@@ -3286,6 +3279,9 @@ static void monitor_resave_missing_file(GeanyDocument *doc)
 				doc->file_name);
 
 		protect_document(doc);
+		document_set_text_changed(doc, TRUE);
+		/* don't prompt more than once */
+		SETPTR(doc->real_path, NULL);
 		doc->priv->info_bars[MSG_TYPE_RESAVE] = bar;
 		enable_key_intercept(doc, bar);
 	}



--------------
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