[evolution-patches] Seeking review for bug #47751 & #47752



Hi,

This patch fixes bug #47751 (New/Edit filter windows do not close on Esc) and #47752(New/Edit vfolder windows do not close on Esc).
Now when user presses ESC on the rule editor, he/she will be asked whether he/she wants to close the dialog.

Please review. Thanks.

-- 
Best Regards
Maxx
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/filter/ChangeLog,v
retrieving revision 1.373
diff -u -r1.373 ChangeLog
--- ChangeLog	5 Aug 2003 21:12:14 -0000	1.373
+++ ChangeLog	20 Aug 2003 06:49:51 -0000
@@ -1,3 +1,12 @@
+2003-08-20  Maxx Cao  <maxx cao sun com>
+
+	** For bug #47751 & #47752 
+
+	* rule-editor.c (rule_editor_key_press): Use Esc Key to close the
+	editor.
+	(rule_add): connect "key_press_event" of the "Add Rule" dialog.
+	(rule_edit): and the "Edit Rule" dialog.
+
 2003-08-05  Not Zed  <NotZed Ximian com>
 
 	** See bug #42636.
Index: rule-editor.c
===================================================================
RCS file: /cvs/gnome/evolution/filter/rule-editor.c,v
retrieving revision 1.54
diff -u -r1.54 rule-editor.c
--- rule-editor.c	29 Apr 2003 17:08:40 -0000	1.54
+++ rule-editor.c	20 Aug 2003 06:49:52 -0000
@@ -32,6 +32,8 @@
 
 #include "rule-editor.h"
 
+#include <gdk/gdkkeysyms.h>
+
 static int enable_undo = 0;
 
 void rule_editor_add_undo (RuleEditor *re, int type, FilterRule *rule, int rank, int newrank);
@@ -270,6 +272,27 @@
 	gtk_widget_destroy (dialog);
 }
 
+static gboolean
+rule_editor_key_press (GtkWidget *widget, GdkEventKey *event, gpointer data)
+{
+	if (event->keyval == GDK_Escape){
+		GtkWidget *confirm_dialog;
+		int response;
+
+		confirm_dialog = gtk_message_dialog_new (widget, GTK_DIALOG_MODAL,
+							 GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL,
+							 "Are you sure to quit now?");
+
+		response = gtk_dialog_run (GTK_DIALOG (confirm_dialog));
+		gtk_widget_destroy (confirm_dialog);
+
+		if (response == GTK_RESPONSE_OK)
+			gtk_dialog_response (widget, GTK_RESPONSE_CANCEL);
+		return TRUE;
+	}
+	return FALSE;
+}
+
 static void
 rule_add (GtkWidget *widget, RuleEditor *re)
 {
@@ -297,6 +320,7 @@
 	gtk_box_pack_start (GTK_BOX (GTK_DIALOG (re->dialog)->vbox), rules, TRUE, TRUE, 3);
 	
 	g_signal_connect (re->dialog, "response", G_CALLBACK (add_editor_response), re);
+	g_signal_connect (re->dialog, "key_press_event", G_CALLBACK (rule_editor_key_press), NULL);
 	g_object_weak_ref ((GObject *) re->dialog, (GWeakNotify) editor_destroy, re);
 	
 	gtk_widget_set_sensitive (GTK_WIDGET (re), FALSE);
@@ -379,6 +403,7 @@
 	gtk_box_pack_start (GTK_BOX (GTK_DIALOG (re->dialog)->vbox), rules, TRUE, TRUE, 3);
 	
 	g_signal_connect (re->dialog, "response", G_CALLBACK (edit_editor_response), re);
+	g_signal_connect (re->dialog, "key_press_event", G_CALLBACK (rule_editor_key_press), NULL);
 	g_object_weak_ref ((GObject *) re->dialog, (GWeakNotify) editor_destroy, re);
 	
 	gtk_widget_set_sensitive (GTK_WIDGET (re), FALSE);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]