diff options
author | Marco Pesenti Gritti <marco@localhost.localdomain> | 2007-06-13 09:27:04 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@localhost.localdomain> | 2007-06-13 09:27:04 (GMT) |
commit | ceff7d71a21245adb31a8f805a66103da8f12765 (patch) | |
tree | 1295328a0d673e187b62e704d834d5d3a373701b | |
parent | 5cf263537ff9a337059978c9176c674c3e25c2cf (diff) |
Improve address/title logic
-rw-r--r-- | lib/sugar-address-entry.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/sugar-address-entry.c b/lib/sugar-address-entry.c index 07f2d13..6b6ea0d 100644 --- a/lib/sugar-address-entry.c +++ b/lib/sugar-address-entry.c @@ -494,16 +494,30 @@ sugar_address_entry_expose(GtkWidget *widget, } static void +entry_changed_cb(SugarAddressEntry *entry) +{ + if (entry->address) { + g_free (entry->address); + } + + entry->address = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1); +} + +static void update_entry_text(SugarAddressEntry *address_entry, gboolean has_focus) { - if (has_focus) { + g_signal_handlers_block_by_func(address_entry, entry_changed_cb, NULL); + + if (has_focus || address_entry->title == NULL) { gtk_entry_set_text(GTK_ENTRY(address_entry), address_entry->address); } else { gtk_entry_set_text(GTK_ENTRY(address_entry), address_entry->title); } + + g_signal_handlers_unblock_by_func(address_entry, entry_changed_cb, NULL); } static void @@ -656,6 +670,8 @@ sugar_address_entry_init(SugarAddressEntry *entry) G_CALLBACK(focus_in_event_cb), NULL); g_signal_connect(entry, "focus-out-event", G_CALLBACK(focus_out_event_cb), NULL); + g_signal_connect(entry, "changed", + G_CALLBACK(entry_changed_cb), NULL); g_signal_connect(entry, "button-press-event", G_CALLBACK(button_press_event_cb), NULL); } |