aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/gui
diff options
context:
space:
mode:
authorChris Toshok <toshok@ximian.com>2003-03-24 08:22:42 +0800
committerChris Toshok <toshok@src.gnome.org>2003-03-24 08:22:42 +0800
commite72b58b2450931ae9e694a41eb4a73fe8706e1f8 (patch)
tree8b2b174f8506199db6c0f87f892f2b29bca39c27 /addressbook/gui
parentb88d0715276fd4e57540232b9abe0efbfe691044 (diff)
downloadgsoc2013-evolution-e72b58b2450931ae9e694a41eb4a73fe8706e1f8.tar.gz
gsoc2013-evolution-e72b58b2450931ae9e694a41eb4a73fe8706e1f8.tar.zst
gsoc2013-evolution-e72b58b2450931ae9e694a41eb4a73fe8706e1f8.zip
[ fixes bug #40026 ] add EContactEditor arg, and block/unblock signals
2003-03-23 Chris Toshok <toshok@ximian.com> [ fixes bug #40026 ] * gui/contact-editor/e-contact-editor.c (set_field): add EContactEditor arg, and block/unblock signals around the gtk_entry_set_text, since that generates a "changed" signal which causes problems. (set_phone_field): take and pass along an EContactEditor arg. (set_fields): pass editor to set_field. svn path=/trunk/; revision=20474
Diffstat (limited to 'addressbook/gui')
-rw-r--r--addressbook/gui/contact-editor/e-contact-editor.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c
index bfe09c729f..a51b066ad7 100644
--- a/addressbook/gui/contact-editor/e-contact-editor.c
+++ b/addressbook/gui/contact-editor/e-contact-editor.c
@@ -1956,19 +1956,26 @@ find_address_mailing (EContactEditor *editor)
}
static void
-set_field(GtkEntry *entry, const char *string)
+set_field(EContactEditor *editor, GtkEntry *entry, const char *string)
{
const char *oldstring = gtk_entry_get_text(entry);
if (!string)
string = "";
- if (strcmp(string, oldstring))
+ if (strcmp(string, oldstring)) {
+ g_signal_handlers_block_matched (entry,
+ G_SIGNAL_MATCH_DATA,
+ 0, 0, NULL, NULL, editor);
gtk_entry_set_text(entry, string);
+ g_signal_handlers_unblock_matched (entry,
+ G_SIGNAL_MATCH_DATA,
+ 0, 0, NULL, NULL, editor);
+ }
}
static void
-set_phone_field(GtkWidget *entry, const ECardPhone *phone)
+set_phone_field(EContactEditor *editor, GtkWidget *entry, const ECardPhone *phone)
{
- set_field(GTK_ENTRY(entry), phone ? phone->number : "");
+ set_field(editor, GTK_ENTRY(entry), phone ? phone->number : "");
}
static void
@@ -1980,23 +1987,23 @@ set_fields(EContactEditor *editor)
entry = glade_xml_get_widget(editor->gui, "entry-phone1");
if (entry && GTK_IS_ENTRY(entry))
- set_phone_field(entry, e_card_simple_get_phone(editor->simple, editor->phone_choice[0]));
+ set_phone_field(editor, entry, e_card_simple_get_phone(editor->simple, editor->phone_choice[0]));
entry = glade_xml_get_widget(editor->gui, "entry-phone2");
if (entry && GTK_IS_ENTRY(entry))
- set_phone_field(entry, e_card_simple_get_phone(editor->simple, editor->phone_choice[1]));
+ set_phone_field(editor, entry, e_card_simple_get_phone(editor->simple, editor->phone_choice[1]));
entry = glade_xml_get_widget(editor->gui, "entry-phone3");
if (entry && GTK_IS_ENTRY(entry))
- set_phone_field(entry, e_card_simple_get_phone(editor->simple, editor->phone_choice[2]));
+ set_phone_field(editor, entry, e_card_simple_get_phone(editor->simple, editor->phone_choice[2]));
entry = glade_xml_get_widget(editor->gui, "entry-phone4");
if (entry && GTK_IS_ENTRY(entry))
- set_phone_field(entry, e_card_simple_get_phone(editor->simple, editor->phone_choice[3]));
+ set_phone_field(editor, entry, e_card_simple_get_phone(editor->simple, editor->phone_choice[3]));
entry = glade_xml_get_widget(editor->gui, "entry-email1");
if (entry && GTK_IS_ENTRY(entry))
- set_field(GTK_ENTRY(entry), e_card_simple_get_email(editor->simple, editor->email_choice));
+ set_field(editor, GTK_ENTRY(entry), e_card_simple_get_email(editor->simple, editor->email_choice));