Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMarco 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)
commitceff7d71a21245adb31a8f805a66103da8f12765 (patch)
tree1295328a0d673e187b62e704d834d5d3a373701b /lib
parent5cf263537ff9a337059978c9176c674c3e25c2cf (diff)
Improve address/title logic
Diffstat (limited to 'lib')
-rw-r--r--lib/sugar-address-entry.c18
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);
}