diff options
author | Jon Trowbridge <trow@ximian.com> | 2001-08-10 02:07:35 +0800 |
---|---|---|
committer | Jon Trowbridge <trow@src.gnome.org> | 2001-08-10 02:07:35 +0800 |
commit | 07fbf1a035bfa00d99c6d00dfd04cba7c1c093c3 (patch) | |
tree | c2174fcd24dd8bba39f47b3ab2ca88aa1865eb5b /addressbook/gui/component/select-names/e-select-names-manager.c | |
parent | 1844cac7c104dd820ade14493d87937a2c580264 (diff) | |
download | gsoc2013-evolution-07fbf1a035bfa00d99c6d00dfd04cba7c1c093c3.tar.gz gsoc2013-evolution-07fbf1a035bfa00d99c6d00dfd04cba7c1c093c3.tar.zst gsoc2013-evolution-07fbf1a035bfa00d99c6d00dfd04cba7c1c093c3.zip |
Hook up some magic to (basically) cardify an entry on focus-out. (What we
2001-08-09 Jon Trowbridge <trow@ximian.com>
* gui/component/select-names/e-select-names-manager.c
(e_select_names_manager_create_entry): Hook up some magic to
(basically) cardify an entry on focus-out. (What we do is actually
more complicated than that.)
* gui/component/select-names/e-select-names-bonobo.c
(entry_set_property_fn): After we set an entry's text, try to
cardify it. We need to do this so that (for example) reply
e-mails get properly cardified.
* gui/component/select-names/e-select-names-model.c
(e_select_names_model_duplicate): Use e_select_names_model_append,
rather than manipulating lists directly.
(e_select_names_model_insert): Connect "changed" signal proxy for
added EDestination.
(e_select_names_model_append): Ditto.
(e_select_names_model_replace): Ditto, and disconnect signals for
replaced EDestination.
(e_select_names_model_delete): Ditto on the disconnection.
(e_select_names_model_delete_all): Ditto.
(e_select_names_model_cardify): Added. Try to cardify a specified
EDestination.
(e_select_names_model_cancel_cardify): Added. Cancel the pending
cardification of a single EDestination.
(e_select_names_model_cardify_all): Added. Cardify all of the
EDestinations in the model.
(e_select_names_model_cancel_cardify_all): Added. Cancel's any
and all pending cardifications.
* backend/ebook/e-destination.c (e_destination_class_init): Added
"changed" and "cardified" signals.
(e_destination_freeze): Added (static).
(e_destination_thaw): Added (static).
(e_destination_clear_card): Reset allow_cardify and
cannot_cardify, cancel any pending cardifications, and emit the
"changed" signal.
(e_destination_clear_strings): Emit the "changed" signal.
(e_destination_clear): Do freeze/thaw to prevent multiple signal
emissions.
(e_destination_set_card): Check that the card we are setting is
not equal to the current card, and emit the "changed" signal if we
are actually changing.
(e_destination_set_card_uri): Emit "changed" signal, if necessary.
(e_destination_set_name): Emit "changed" signal, if necessary.
(e_destination_set_email): Emit "changed" signal, if necessary.
(e_destination_set_html_mail_pref): Emit "changed" signal, if
necessary.
(use_card_cb): If we've just loaded/set the ECard, emit the
"changed" signal.
(e_destination_set_raw): Emit "changed" signal, if necessary.
(e_destination_allow_cardification): Added.
(e_destination_set_allow_cardification): Added.
(e_destination_cardify): Added. Tries to automatically convert
a string-based EDestination to one based on an ECard.
(e_destination_cardify_delayed): Added. Cardifies in a timeout.
(e_destination_cancel_cardify): Added. Cancels any pending
cardifications.
(e_destination_xml_decode): Added freeze/thaw.
* backend/ebook/e-book-util.c (e_book_nickname_query): Added. A
canned simple query for nicknames.
* backend/ebook/e-card.c (e_card_email_find_number): Added. Given
a card and an string containing an email address, return the index
number of the address inside of the card, or -1 if the address is
not found.
svn path=/trunk/; revision=11837
Diffstat (limited to 'addressbook/gui/component/select-names/e-select-names-manager.c')
-rw-r--r-- | addressbook/gui/component/select-names/e-select-names-manager.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/addressbook/gui/component/select-names/e-select-names-manager.c b/addressbook/gui/component/select-names/e-select-names-manager.c index 4481438327..0bec7da416 100644 --- a/addressbook/gui/component/select-names/e-select-names-manager.c +++ b/addressbook/gui/component/select-names/e-select-names-manager.c @@ -368,6 +368,38 @@ popup_cb (EEntry *entry, GdkEventButton *ev, gint pos, ESelectNamesModel *model) e_select_names_popup (model, ev, pos); } +static gint +focus_in_cb (GtkWidget *w, GdkEventFocus *ev, gpointer user_data) +{ + EEntry *entry = E_ENTRY (user_data); + ESelectNamesModel *model = E_SELECT_NAMES_MODEL (gtk_object_get_data (GTK_OBJECT (entry), "select_names_model")); + + e_select_names_model_cancel_cardify_all (model); + + return FALSE; +} + +static gint +focus_out_cb (GtkWidget *w, GdkEventFocus *ev, gpointer user_data) +{ + EEntry *entry = E_ENTRY (user_data); + ESelectNamesModel *model = E_SELECT_NAMES_MODEL (gtk_object_get_data (GTK_OBJECT (entry), "select_names_model")); + + if (!e_entry_completion_popup_is_visible (entry)) + e_select_names_model_cardify_all (model, NULL, 0); + + return FALSE; +} + +static void +completion_popup_cb (EEntry *entry, gint visible, gpointer user_data) +{ + ESelectNamesModel *model = E_SELECT_NAMES_MODEL (gtk_object_get_data (GTK_OBJECT (entry), "select_names_model")); + + if (!visible && !GTK_WIDGET_HAS_FOCUS (GTK_WIDGET (entry->canvas))) + e_select_names_model_cardify_all (model, NULL, 0); +} + GtkWidget * e_select_names_manager_create_entry (ESelectNamesManager *manager, const char *id) { @@ -389,6 +421,19 @@ e_select_names_manager_create_entry (ESelectNamesManager *manager, const char *i GTK_SIGNAL_FUNC (popup_cb), section->model); + gtk_signal_connect (GTK_OBJECT (eentry->canvas), + "focus_in_event", + GTK_SIGNAL_FUNC (focus_in_cb), + eentry); + gtk_signal_connect (GTK_OBJECT (eentry->canvas), + "focus_out_event", + GTK_SIGNAL_FUNC (focus_out_cb), + eentry); + gtk_signal_connect (GTK_OBJECT (eentry), + "completion_popup", + GTK_SIGNAL_FUNC (completion_popup_cb), + NULL); + entry = g_new (ESelectNamesManagerEntry, 1); entry->entry = eentry; entry->id = (char *)id; |