diff options
-rw-r--r-- | addressbook/ChangeLog | 12 | ||||
-rw-r--r-- | addressbook/gui/component/select-names/e-select-names.c | 36 |
2 files changed, 48 insertions, 0 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog index 1ecae91348..167419884d 100644 --- a/addressbook/ChangeLog +++ b/addressbook/ChangeLog @@ -1,3 +1,15 @@ +2001-06-05 Jason Leach <jleach@ximian.com> + + (Fix bug #655: SelectNames doesn't let you remove addresses after + you add them) + + * gui/component/select-names/e-select-names.c + (section_right_click_cb): New function, provides a popup menu with + just "Remove" in it. + (remove_cb): New callback to do the remove. + (e_select_names_add_section): Attach the "right_click" signal to + the section_right_click_cb above. + 2001-06-05 Jon Trowbridge <trow@ximian.com> * gui/component/select-names/e-select-names-manager.c diff --git a/addressbook/gui/component/select-names/e-select-names.c b/addressbook/gui/component/select-names/e-select-names.c index 84ef76f9e0..94c613b274 100644 --- a/addressbook/gui/component/select-names/e-select-names.c +++ b/addressbook/gui/component/select-names/e-select-names.c @@ -496,6 +496,40 @@ remove_address(ETable *table, int row, int col, GdkEvent *event, ESelectNamesChi e_select_names_model_delete (child->source, row); } +#include <gal/widgets/e-popup-menu.h> +struct _RightClickData { + int row; + ESelectNamesChild *child; +}; +typedef struct _RightClickData RightClickData; + +static void +remove_cb (GtkWidget *widget, void *data) +{ + RightClickData *rcdata = (RightClickData *)data; + + remove_address (NULL, rcdata->row, 0, NULL, rcdata->child); + + g_free (rcdata); +} + +static void +section_right_click_cb (ETable *table, gint row, gint col, GdkEvent *event, ESelectNamesChild *child) +{ + EPopupMenu right_click_menu[] = { + { N_("Remove"), NULL, + GTK_SIGNAL_FUNC (remove_cb), NULL, 0 }, + { NULL, NULL, NULL, 0 } + }; + + RightClickData *rcdata = g_new0 (RightClickData, 1); + rcdata->row = row; + rcdata->child = child; + + e_popup_menu_run (right_click_menu, event, 0, 0, + rcdata); +} + void e_select_names_add_section(ESelectNames *e_select_names, char *name, char *id, ESelectNamesModel *source) { @@ -546,6 +580,8 @@ e_select_names_add_section(ESelectNames *e_select_names, char *name, char *id, E model = e_select_names_table_model_new(source); etable = e_table_scrolled_new (model, NULL, SPEC2, NULL); + gtk_signal_connect(GTK_OBJECT(e_table_scrolled_get_table(E_TABLE_SCROLLED(etable))), "right_click", + GTK_SIGNAL_FUNC(section_right_click_cb), child); gtk_signal_connect(GTK_OBJECT(e_table_scrolled_get_table(E_TABLE_SCROLLED(etable))), "double_click", GTK_SIGNAL_FUNC(remove_address), child); |