aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/gui/contact-editor/e-contact-editor.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/gui/contact-editor/e-contact-editor.c')
-rw-r--r--addressbook/gui/contact-editor/e-contact-editor.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c
index d48066f72b..ef45fbe426 100644
--- a/addressbook/gui/contact-editor/e-contact-editor.c
+++ b/addressbook/gui/contact-editor/e-contact-editor.c
@@ -759,13 +759,13 @@ full_name_clicked(GtkWidget *button, EContactEditor *editor)
int result;
g_object_set (dialog,
- "editable", editor->editable,
+ "editable", editor->fullname_editable,
NULL);
gtk_widget_show(GTK_WIDGET(dialog));
result = gtk_dialog_run (dialog);
gtk_widget_hide (GTK_WIDGET (dialog));
- if (result == GTK_RESPONSE_OK) {
+ if (editor->fullname_editable && result == GTK_RESPONSE_OK) {
ECardName *name;
GtkWidget *fname_widget;
int style = 0;
@@ -802,7 +802,7 @@ full_addr_clicked(GtkWidget *button, EContactEditor *editor)
dialog = GTK_DIALOG(e_contact_editor_address_new(address));
g_object_set (dialog,
- "editable", editor->editable,
+ "editable", editor->address_editable[editor->address_choice],
NULL);
gtk_widget_show(GTK_WIDGET(dialog));
@@ -810,7 +810,7 @@ full_addr_clicked(GtkWidget *button, EContactEditor *editor)
gtk_widget_hide (GTK_WIDGET (dialog));
- if (result == GTK_RESPONSE_OK) {
+ if (editor->address_editable[editor->address_choice] && result == GTK_RESPONSE_OK) {
ECardDeliveryAddress *new_address;
GtkWidget *address_widget;
@@ -2026,7 +2026,8 @@ _address_arrow_pressed (GtkWidget *widget, GdkEventButton *button, EContactEdito
/* make sure the buttons/entry is/are sensitive */
enable_widget (glade_xml_get_widget (editor->gui, "label-address"), TRUE);
- enable_widget (glade_xml_get_widget (editor->gui, "text-address"), editor->editable);
+ enable_widget (glade_xml_get_widget (editor->gui, "text-address"), editor->address_editable[result]);
+ enable_widget (glade_xml_get_widget (editor->gui, "checkbutton-mailingaddress"), editor->address_editable[result]);
}
}
@@ -2398,14 +2399,18 @@ enable_writable_fields(EContactEditor *editor)
enable_widget (glade_xml_get_widget (editor->gui, "label-email1"), FALSE);
enable_widget (glade_xml_get_widget (editor->gui, "entry-email1"), FALSE);
enable_widget (glade_xml_get_widget (editor->gui, "checkbutton-htmlmail"), FALSE);
+ enable_widget (glade_xml_get_widget (editor->gui, "checkbutton-mailingaddress"), FALSE);
enable_widget (glade_xml_get_widget (editor->gui, "label-address"), FALSE);
enable_widget (glade_xml_get_widget (editor->gui, "text-address"), FALSE);
+ editor->fullname_editable = FALSE;
+
/* enable widgets that map directly from a field to a widget (the drop down items) */
iter = e_list_get_iterator (fields);
for (; e_iterator_is_valid (iter); e_iterator_next (iter)) {
char *field = (char*)e_iterator_get (iter);
GtkWidget *widget = g_hash_table_lookup (dropdown_hash, field);
+ int i;
if (widget) {
enable_widget (widget, TRUE);
@@ -2417,6 +2422,12 @@ enable_writable_fields(EContactEditor *editor)
g_hash_table_insert (supported_hash, field, field);
}
+ for (i = 0; i < E_CARD_SIMPLE_ADDRESS_ID_LAST; i ++) {
+ if (!strcmp (field, e_card_simple_get_ecard_field (simple, e_card_simple_map_address_to_field(i)))) {
+ editor->address_editable [i] = TRUE;
+ }
+ }
+
/* ugh - this is needed to make sure we don't have a
disabled label next to a drop down when the item in
the menu (the one reflected in the label) is
@@ -2428,6 +2439,7 @@ enable_writable_fields(EContactEditor *editor)
}
else if (!strcmp (field, e_card_simple_get_ecard_field (simple, e_card_simple_map_address_to_field(editor->address_choice)))) {
enable_widget (glade_xml_get_widget (editor->gui, "label-address"), TRUE);
+ enable_widget (glade_xml_get_widget (editor->gui, "checkbutton-mailingaddress"), editor->editable);
enable_widget (glade_xml_get_widget (editor->gui, "text-address"), editor->editable);
}
else for (i = 0; i < 4; i ++) {
@@ -2467,6 +2479,8 @@ enable_writable_fields(EContactEditor *editor)
enable_widget (w, enabled);
}
+ editor->fullname_editable = (g_hash_table_lookup (supported_hash, "full_name") != NULL);
+
g_hash_table_destroy (dropdown_hash);
g_hash_table_destroy (supported_hash);
g_object_unref (simple);