diff options
author | Jon Trowbridge <trow@ximian.com> | 2001-12-28 11:08:27 +0800 |
---|---|---|
committer | Jon Trowbridge <trow@src.gnome.org> | 2001-12-28 11:08:27 +0800 |
commit | 2786536d7f25b29b20a41b417896cff810368d85 (patch) | |
tree | 3ecdda5c24e1de152937a451a10bc09a5be891ba /addressbook/gui/component/select-names/e-select-names-popup.c | |
parent | b054d4b4e6f7eff593a2ac7c3b40f2d8bb92b82c (diff) | |
download | gsoc2013-evolution-2786536d7f25b29b20a41b417896cff810368d85.tar gsoc2013-evolution-2786536d7f25b29b20a41b417896cff810368d85.tar.gz gsoc2013-evolution-2786536d7f25b29b20a41b417896cff810368d85.tar.bz2 gsoc2013-evolution-2786536d7f25b29b20a41b417896cff810368d85.tar.lz gsoc2013-evolution-2786536d7f25b29b20a41b417896cff810368d85.tar.xz gsoc2013-evolution-2786536d7f25b29b20a41b417896cff810368d85.tar.zst gsoc2013-evolution-2786536d7f25b29b20a41b417896cff810368d85.zip |
When we clean, don't clean the model's last element. This helps keep
2001-12-27 Jon Trowbridge <trow@ximian.com>
* gui/component/select-names/e-select-names.c
(real_add_address_cb): When we clean, don't clean the model's last
element. This helps keep things working properly when we have
signal-character separators.
(section_right_click_cb): Changed to work properly with our
EText-emitted popup signal.
(e_select_names_add_section): Use ETexts for the recipient
sections, rather than tables. This lets us make them directly
editable. (Bug #1721)
* gui/component/select-names/e-select-names-popup.c
(popup_info_new): Pass in a ESelectNamesTextModel, not a
ESelectNamesModel.
(e_select_names_popup): Adjust for the new signature for
e_select_names_model_text_pos.
* gui/component/select-names/e-select-names-manager.c
(focus_out_cb): Schedule a cleaning when we focus out.
(focus_in_cb): Cancel pending cleaning when we get focus. This
helps us avoid bad things happening during the fast focus out/ins
that happen when the completion dropdown appears.
(completion_handler): Adjust for new signatures of
e_select_names_model_text_pos and e_select_names_model_name_pos.
(e_select_names_manager_entry_new): Pass in our
ESelectNamesTextModel when constructing the
ESelectNamesCompletion.
(e_select_names_manager_entry_free): Cancel any pending clean-ups.
* gui/component/select-names/e-select-names-bonobo.c
(entry_get_property_fn): Get the text off of the text model.
Which is the only way that really makes sense when you think about
it.
* gui/component/select-names/e-select-names-completion.c: Added a
copy of the associated ESelectNamesTextModel to
ESelectNamesCompletionPrivate. This replaces the
ESelectNamesModel.
(e_select_names_completion_destroy): Unref ->text_model.
(e_select_names_completion_handle_request): Pass in our text
model's separator info when calling e_select_names_model_text_pos.
(e_select_names_completion_new): Pass in the text model as an arg
instead of the model, and ref it as needed.
* gui/component/select-names/e-select-names-text-model.c
(e_select_names_text_model_init): Set separator as either ", " or
",", depending on the value of the EVOLUTION_DISABLE_MAGIC_COMMA
environment variable.
(e_select_names_text_model_destroy): Free the separator.
(changed_cb): Flush our cached text on changed.
(e_select_names_text_model_set_source): Use our own changed_cb
callback on changed, rather than just connecting up
e_text_model_changed.
(e_select_names_text_model_set_separator): Added. Lets the
separator between recipients be specified.
(e_select_names_text_model_get_text): Cache the text we get from
calling e_select_names_model_get_textification.
(e_select_names_text_model_insert_length): A bunch of small
changes to properly support generic separators, rather than
(implicit and explicitly) assuming ", ".
(e_select_names_text_model_delete): More small tweaks to handle
generic separators.
(e_select_names_text_model_get_nth_obj): Use new signature when
calling e_select_names_model_name_pos, and use our cached text.
* gui/component/select-names/e-select-names-model.c
(e_select_names_model_destroy): We don't cache the text or
addr_text anymore, so no need to free them here.
(e_select_names_model_changed): ...and no need to reset our text
and addr_text caches here.
(e_select_names_model_get_textification): Take a separator as an
arg, rather than just using ", ". Also, no caching.
(e_select_names_model_get_address_text): Take a separator as an
arg, rather than just using ", ". And no caching here either.
(e_select_names_model_clean): Add arg that give us control over
whether or not the last entry should get cleaned. We need this
when using a one-character separator, so that new destinations
that get tacked onto the end don't get immediately cleaned away
for being empty.
(e_select_names_model_name_pos): Take the separator length as an
argument, remove implicit assumption of length 2.
(e_select_names_model_text_pos): Take the separator length as an
argument, remove implicit assumption of length 2.CVS: ----------------------------------------------------------------------
svn path=/trunk/; revision=15221
Diffstat (limited to 'addressbook/gui/component/select-names/e-select-names-popup.c')
-rw-r--r-- | addressbook/gui/component/select-names/e-select-names-popup.c | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/addressbook/gui/component/select-names/e-select-names-popup.c b/addressbook/gui/component/select-names/e-select-names-popup.c index a6e6bdea8e..442a00b6c1 100644 --- a/addressbook/gui/component/select-names/e-select-names-popup.c +++ b/addressbook/gui/component/select-names/e-select-names-popup.c @@ -46,23 +46,23 @@ typedef struct _PopupInfo PopupInfo; struct _PopupInfo { - ESelectNamesModel *model; + ESelectNamesTextModel *text_model; const EDestination *dest; gint pos; gint index; }; static PopupInfo * -popup_info_new (ESelectNamesModel *model, const EDestination *dest, gint pos, gint index) +popup_info_new (ESelectNamesTextModel *text_model, const EDestination *dest, gint pos, gint index) { PopupInfo *info = g_new0 (PopupInfo, 1); - info->model = model; + info->text_model = text_model; info->dest = dest; info->pos = pos; info->index = index; - if (model) - gtk_object_ref (GTK_OBJECT (model)); + if (text_model) + gtk_object_ref (GTK_OBJECT (text_model)); if (dest) gtk_object_ref (GTK_OBJECT (dest)); @@ -75,8 +75,8 @@ popup_info_free (PopupInfo *info) { if (info) { - if (info->model) - gtk_object_unref (GTK_OBJECT (info->model)); + if (info->text_model) + gtk_object_unref (GTK_OBJECT (info->text_model)); if (info->dest) gtk_object_unref (GTK_OBJECT (info->dest)); @@ -144,7 +144,7 @@ change_email_num_cb (GtkWidget *w, gpointer user_data) if (n != e_destination_get_email_num (info->dest)) { dest = e_destination_new (); e_destination_set_card (dest, e_destination_get_card (info->dest), n); - e_select_names_model_replace (info->model, info->index, dest); + e_select_names_model_replace (info->text_model->source, info->index, dest); } } @@ -153,7 +153,7 @@ static void remove_recipient_cb (GtkWidget *w, gpointer user_data) { PopupInfo *info = (PopupInfo *) user_data; - e_select_names_model_delete (info->model, info->index); + e_select_names_model_delete (info->text_model->source, info->index); } static void @@ -168,7 +168,7 @@ static void remove_all_recipients_cb (GtkWidget *w, gpointer user_data) { PopupInfo *info = (PopupInfo *) user_data; - e_select_names_model_delete_all (info->model); + e_select_names_model_delete_all (info->text_model->source); } static void @@ -511,19 +511,22 @@ popup_menu_nocard (PopupInfo *info) } void -e_select_names_popup (ESelectNamesModel *model, GdkEventButton *ev, gint pos) +e_select_names_popup (ESelectNamesTextModel *text_model, GdkEventButton *ev, gint pos) { + ESelectNamesModel *model; GtkWidget *popup; PopupInfo *info; const EDestination *dest; ECard *card; gint index; - g_return_if_fail (model && E_IS_SELECT_NAMES_MODEL (model)); + g_return_if_fail (E_IS_SELECT_NAMES_TEXT_MODEL (text_model)); g_return_if_fail (ev); g_return_if_fail (0 <= pos); - e_select_names_model_text_pos (model, pos, &index, NULL, NULL); + model = text_model->source; + + e_select_names_model_text_pos (model, text_model->seplen, pos, &index, NULL, NULL); if (index < 0 || index >= e_select_names_model_count (model)) return; @@ -533,7 +536,7 @@ e_select_names_popup (ESelectNamesModel *model, GdkEventButton *ev, gint pos) card = e_destination_get_card (dest); - info = popup_info_new (model, dest, pos, index); + info = popup_info_new (text_model, dest, pos, index); if (e_destination_contains_card (dest)) { if (e_destination_is_evolution_list (dest)) |