aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addressbook/ChangeLog10
-rw-r--r--addressbook/gui/contact-editor/e-contact-editor.c25
2 files changed, 26 insertions, 9 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index 670b6b74b1..4ee5f49a45 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,5 +1,15 @@
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.
+
+2003-03-23 Chris Toshok <toshok@ximian.com>
+
* gui/contact-editor/arrow.png: nuke.
* gui/contact-editor/Makefile.am (EXTRA_DIST): remove images_DATA
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));