diff -urN mousepad-0.2.12-orig/src/search.c mousepad-0.2.12/src/search.c --- mousepad-0.2.12-orig/src/search.c 2007-01-28 16:37:30.000000000 -0200 +++ mousepad-0.2.12/src/search.c 2007-01-28 18:33:51.000000000 -0200 @@ -19,6 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include "mousepad.h" #include "gtksourceiter.h" @@ -75,6 +76,16 @@ return res; } +static gboolean replace_dialog_key_press(GtkWidget *widget, GdkEventKey *event, gboolean * res) +{ + if (event->keyval == GDK_Escape) { + *res = 0; + gtk_widget_destroy(widget); + return TRUE; + } + return FALSE; +} + static gint document_replace_real(StructData *sd) { GtkTextIter iter, match_start, match_end; @@ -113,6 +124,7 @@ if (num == 0 && q_dialog == NULL) q_dialog = create_dialog_message_question( gtk_widget_get_toplevel(sd->mainwin->textview), _("Replace?")); + g_signal_connect(q_dialog, "key_press_event", G_CALLBACK(replace_dialog_key_press), &res); switch (gtk_dialog_run(GTK_DIALOG(q_dialog))) { case GTK_RESPONSE_CANCEL: res = 0; @@ -121,6 +133,11 @@ continue; case GTK_RESPONSE_NO: continue; + case GTK_RESPONSE_YES: + break; + default: + q_dialog = NULL; + continue; } } gtk_text_buffer_delete_selection(textbuffer, TRUE, TRUE);