From 426460951a1229aa0a2566f3e454776de5c20fab Mon Sep 17 00:00:00 2001 From: Devashish Sharma Date: Fri, 10 Mar 2006 05:40:11 +0000 Subject: Fix for Bug #333855 svn path=/trunk/; revision=31678 --- addressbook/ChangeLog | 10 +++ addressbook/gui/contact-editor/e-contact-editor.c | 96 ++++++++++++----------- 2 files changed, 59 insertions(+), 47 deletions(-) diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog index 02e19a7204..c1d341c034 100644 --- a/addressbook/ChangeLog +++ b/addressbook/ChangeLog @@ -1,3 +1,13 @@ +2006-03-10 Devashish Sharma + + 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. + Patch by Simon Zheng . Made some changes to the + patch and committed. + 2006-03-06 Devashish Sharma * gui/contact-editor/e-contact-editor.c (fill_in_address_textview): diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 5bd9d1e09f..bbd81018cf 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -2551,40 +2551,19 @@ source_selected (GtkWidget *source_option_menu, ESource *source, EContactEditor (EBookCallback) new_target_cb, editor); } -static gboolean -full_name_key_press_event( GtkWidget *widget, GdkEventKey *event, EContactEditor *editor) -{ - if (event->keyval == GDK_Return) { - gtk_dialog_response (GTK_DIALOG (widget), GTK_RESPONSE_OK); - return TRUE; - } - return FALSE; -} - 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; - - fullname_supported = is_field_supported (editor, E_CONTACT_FULL_NAME); + EContactName *name; + GtkWidget *fname_widget; + int style = 0; + gboolean editable = FALSE; - 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); @@ -2606,11 +2585,45 @@ full_name_clicked (GtkWidget *button, EContactEditor *editor) file_as_set_style(editor, style); } - gtk_widget_destroy (GTK_WIDGET (dialog)); + gtk_widget_hide (GTK_WIDGET (dialog)); +} + +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); + } + return TRUE; } static void -response (GtkDialog *dialog, int response, EContactEditor *editor) +full_name_clicked (GtkWidget *button, EContactEditor *editor) +{ + GtkDialog *dialog = GTK_DIALOG (e_contact_editor_fullname_new (editor->name)); + gboolean fullname_supported; + + + fullname_supported = is_field_supported (editor, E_CONTACT_FULL_NAME); + + g_object_set (dialog, + "editable", fullname_supported & editor->target_editable, + NULL); + + g_signal_connect(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), GTK_WIDGET (dialog)); + + gtk_widget_show (GTK_WIDGET(dialog)); +} + + +static void +categories_response (GtkDialog *dialog, int response, EContactEditor *editor) { const char *categories; GtkWidget *entry = glade_xml_get_widget(editor->gui, "entry-categories"); @@ -2625,22 +2638,13 @@ response (GtkDialog *dialog, int response, EContactEditor *editor) gtk_widget_hide(GTK_WIDGET(dialog)); } -static gboolean -categories_key_press_event( GtkWidget *widget, GdkEventKey *event, EContactEditor *editor) -{ - if (event->keyval == GDK_Return) { - gtk_dialog_response (GTK_DIALOG (widget), GTK_RESPONSE_OK); - return TRUE; - } - return FALSE; -} - static gint -editor_delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data) +categories_editor_delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data) { - if (widget) + if (widget) { if (GTK_IS_WIDGET (widget)) gtk_widget_destroy(widget); + } return TRUE; } @@ -2662,14 +2666,12 @@ categories_clicked (GtkWidget *button, EContactEditor *editor) return; } - g_signal_connect (GTK_WIDGET (dialog), "key-press-event", G_CALLBACK (categories_key_press_event), editor); - g_signal_connect(dialog, "response", - G_CALLBACK (response), editor); + G_CALLBACK (categories_response), editor); /* Close the category dialog if the editor is closed*/ g_signal_connect_swapped (EAB_EDITOR (editor), "editor_closed", - G_CALLBACK (editor_delete_event_cb), GTK_WIDGET (dialog)); + G_CALLBACK (categories_editor_delete_event_cb), GTK_WIDGET (dialog)); gtk_widget_show(GTK_WIDGET(dialog)); g_free (categories); -- cgit v1.2.3