[evolution-patches] [Addressbook] Fix for #333855
- From: "simon.zheng" <Simon Zheng Sun COM>
- To: evolution-patches gnome org
- Subject: [evolution-patches] [Addressbook] Fix for #333855
- Date: Wed, 08 Mar 2006 15:41:08 +0800
Hi,
Bug 333855 â?? Fullname dialog in contacts editor shouldn't be modal as
well as categories dialog.
http://bugzilla.gnome.org/show_bug.cgi?id=333855
Sending patch for review.
Thanks,
-Simon
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/ChangeLog,v
retrieving revision 1.2062
diff -u -p -r1.2062 ChangeLog
--- ChangeLog 6 Mar 2006 10:59:03 -0000 1.2062
+++ ChangeLog 8 Mar 2006 06:36:43 -0000
@@ -1,3 +1,11 @@
+2006-03-08 Simon Zheng <simon zheng sun com>
+
+ Fix for bug #333855
+ * gui/contact-editor/e-contact-editor.c (full_name_response),
+ (full_name_key_press_event), (full_name_editor_delete_event_cb),
+ (full_name_clicked):
+ The fullname dialog should be non-modal as well as categories dialog.
+
2006-03-06 Devashish Sharma <sdevashish novell com>
* gui/contact-editor/e-contact-editor.c (fill_in_address_textview):
Index: gui/contact-editor/e-contact-editor.c
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/contact-editor/e-contact-editor.c,v
retrieving revision 1.256
diff -u -p -r1.256 e-contact-editor.c
--- gui/contact-editor/e-contact-editor.c 6 Mar 2006 10:59:02 -0000 1.256
+++ gui/contact-editor/e-contact-editor.c 8 Mar 2006 06:36:43 -0000
@@ -2551,6 +2551,8 @@ source_selected (GtkWidget *source_optio
(EBookCallback) new_target_cb, editor);
}
+static GtkWidget *fullname_dialog = NULL;
+
static gboolean
full_name_key_press_event( GtkWidget *widget, GdkEventKey *event, EContactEditor *editor)
{
@@ -2562,29 +2564,18 @@ full_name_key_press_event( GtkWidget *wi
}
static void
-full_name_clicked (GtkWidget *button, EContactEditor *editor)
+full_name_response (GtkDialog *dialog, int response, EContactEditor *editor)
{
- GtkDialog *dialog = GTK_DIALOG (e_contact_editor_fullname_new (editor->name));
- gboolean fullname_supported;
- int result;
+ EContactName *name;
+ GtkWidget *fname_widget;
+ int style = 0;
+ gboolean editable = FALSE;
- fullname_supported = is_field_supported (editor, E_CONTACT_FULL_NAME);
-
- g_object_set (dialog,
- "editable", fullname_supported & editor->target_editable,
+ g_object_get (dialog,
+ "editable", &editable,
NULL);
- g_signal_connect (GTK_WIDGET (dialog), "key-press-event", G_CALLBACK (full_name_key_press_event), editor);
-
- gtk_widget_show (GTK_WIDGET(dialog));
- result = gtk_dialog_run (dialog);
- gtk_widget_hide (GTK_WIDGET (dialog));
-
- if (fullname_supported && editor->target_editable && result == GTK_RESPONSE_OK) {
- EContactName *name;
- GtkWidget *fname_widget;
- int style = 0;
-
+ if (editable && response == GTK_RESPONSE_OK) {
g_object_get (dialog,
"name", &name,
NULL);
@@ -2607,6 +2598,48 @@ full_name_clicked (GtkWidget *button, EC
file_as_set_style(editor, style);
}
gtk_widget_destroy (GTK_WIDGET (dialog));
+ fullname_dialog = NULL;
+}
+
+static gint
+full_name_editor_delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data)
+{
+ if (widget)
+ if (GTK_IS_WIDGET (widget)) {
+ gtk_widget_destroy(widget);
+ fullname_dialog = NULL;
+ }
+ return TRUE;
+}
+
+static void
+full_name_clicked (GtkWidget *button, EContactEditor *editor)
+{
+ gboolean fullname_supported;
+
+ if (fullname_dialog){
+ gtk_widget_show (fullname_dialog);
+ return;
+ }
+
+ fullname_dialog = e_contact_editor_fullname_new (editor->name);
+
+ fullname_supported = is_field_supported (editor, E_CONTACT_FULL_NAME);
+
+ g_object_set (fullname_dialog,
+ "editable", fullname_supported & editor->target_editable,
+ NULL);
+
+ g_signal_connect (fullname_dialog, "key-press-event", G_CALLBACK (full_name_key_press_event), editor);
+
+ g_signal_connect(fullname_dialog, "response",
+ G_CALLBACK (full_name_response), editor);
+
+ /* Close the fullname dialog if the editor is closed */
+ g_signal_connect_swapped (EAB_EDITOR (editor), "editor_closed",
+ G_CALLBACK (full_name_editor_delete_event_cb), fullname_dialog);
+
+ gtk_widget_show (fullname_dialog);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]