aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/gui/component/select-names/e-select-names-popup.c
diff options
context:
space:
mode:
authorJon Trowbridge <trow@ximian.com>2001-12-28 11:08:27 +0800
committerJon Trowbridge <trow@src.gnome.org>2001-12-28 11:08:27 +0800
commit2786536d7f25b29b20a41b417896cff810368d85 (patch)
tree3ecdda5c24e1de152937a451a10bc09a5be891ba /addressbook/gui/component/select-names/e-select-names-popup.c
parentb054d4b4e6f7eff593a2ac7c3b40f2d8bb92b82c (diff)
downloadgsoc2013-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.c31
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))