diff options
author | Jason Leach <jleach@ximian.com> | 2001-06-06 07:59:31 +0800 |
---|---|---|
committer | Jacob Leach <jleach@src.gnome.org> | 2001-06-06 07:59:31 +0800 |
commit | 70c01c8bb7947db6b98ef637afd3f6d06d2c182c (patch) | |
tree | 42870d556b59ba5f9c669587e1fdc23ab2ceca2e /addressbook/gui | |
parent | ef02eff9c8aafbe1fd17a41e66af597496685998 (diff) | |
download | gsoc2013-evolution-70c01c8bb7947db6b98ef637afd3f6d06d2c182c.tar gsoc2013-evolution-70c01c8bb7947db6b98ef637afd3f6d06d2c182c.tar.gz gsoc2013-evolution-70c01c8bb7947db6b98ef637afd3f6d06d2c182c.tar.bz2 gsoc2013-evolution-70c01c8bb7947db6b98ef637afd3f6d06d2c182c.tar.lz gsoc2013-evolution-70c01c8bb7947db6b98ef637afd3f6d06d2c182c.tar.xz gsoc2013-evolution-70c01c8bb7947db6b98ef637afd3f6d06d2c182c.tar.zst gsoc2013-evolution-70c01c8bb7947db6b98ef637afd3f6d06d2c182c.zip |
Make this work when multiple names are selected then right click->Remove.
2001-06-05 Jason Leach <jleach@ximian.com>
* gui/component/select-names/e-select-names.c (remove_cb): Make
this work when multiple names are selected then right
click->Remove.
svn path=/trunk/; revision=10127
Diffstat (limited to 'addressbook/gui')
-rw-r--r-- | addressbook/gui/component/select-names/e-select-names.c | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/addressbook/gui/component/select-names/e-select-names.c b/addressbook/gui/component/select-names/e-select-names.c index d73b0e732b..b803ddd627 100644 --- a/addressbook/gui/component/select-names/e-select-names.c +++ b/addressbook/gui/component/select-names/e-select-names.c @@ -498,17 +498,43 @@ remove_address(ETable *table, int row, int col, GdkEvent *event, ESelectNamesChi } struct _RightClickData { - int row; + ETable *table; ESelectNamesChild *child; }; typedef struct _RightClickData RightClickData; +static GSList *selected_rows = NULL; + +static void +etable_selection_foreach_cb (int row, void *data) +{ + /* Build a list of rows in reverse order, then remove them, + necessary because otherwise it'll start trying to delete + rows out of index in ETableModel */ + selected_rows = g_slist_prepend (selected_rows, + GINT_TO_POINTER (row)); +} + +static void +selected_rows_foreach_cb (void *row, void *data) +{ + ESelectNamesChild *child = data; + + e_select_names_model_delete (child->source, GPOINTER_TO_INT (row)); +} + static void remove_cb (GtkWidget *widget, void *data) { RightClickData *rcdata = (RightClickData *)data; - remove_address (NULL, rcdata->row, 0, NULL, rcdata->child); + e_table_selected_row_foreach (rcdata->table, + etable_selection_foreach_cb, + rcdata->child); + + g_slist_foreach (selected_rows, + (GFunc)selected_rows_foreach_cb, + rcdata->child); g_free (rcdata); } @@ -523,7 +549,7 @@ section_right_click_cb (ETable *table, gint row, gint col, GdkEvent *event, ESel }; RightClickData *rcdata = g_new0 (RightClickData, 1); - rcdata->row = row; + rcdata->table = table; rcdata->child = child; e_popup_menu_run (right_click_menu, event, 0, 0, |