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



Hi Jeff,

Thanks a lot for your rapid comments!

As you suggested, I've changed the warning message to

    "You are about to cancel editing this rule. Are you sure you want to cancel?"

I think it's clear enough and not too long. Users can understand what canceling
means, don't they?

I've attached the new patch here. Please review, thanks.

Jeffrey Stedfast wrote:
On Wed, 2003-08-20 at 02:56, Maxx Cao wrote:
  
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){
    

please add a space before the {

  
+		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?");
+
    

the message text needs to be marked for translation and also I suggest a
better wording, such as:

"You are about to cancel editing this rule. Are you sure you want to
cancel?"

your message is too ambiguous - am I quitting the application? the rule
editor? or what?

but perhaps the message text should warn the user that cancelling will
discard all changes?

probably also want to change OK_CANCEL to YES_NO.

  
+		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);
    

I'd prefer an empty line here.

  
+		return TRUE;
+	}
    

and an empty line here too.

  
+	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);
    



  

-- 
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 09:14:13 -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 09:14:15 -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,30 @@
 	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_YES_NO,
+							 _("You are about to cancel editing this rule. Are you sure you want to
+cancel?"));
+
+		response = gtk_dialog_run (GTK_DIALOG (confirm_dialog));
+		gtk_widget_destroy (confirm_dialog);
+
+		if (response == GTK_RESPONSE_OK)
+			gtk_dialog_response (widget, GTK_RESPONSE_YES);
+
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
 static void
 rule_add (GtkWidget *widget, RuleEditor *re)
 {
@@ -297,6 +323,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 +406,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]