* src/addressbook.c
Fix dnd of multiple addresses.
+2005-07-15 [colin] 1.9.12cvs60
+
+ * src/addressbook.c
+ Fix dnd of multiple addresses.
+
2005-07-15 [hoa] 1.9.12cvs59
* src/etpan/imap-thread.c
2005-07-15 [hoa] 1.9.12cvs59
* src/etpan/imap-thread.c
( cvs diff -u -r 1.61.2.30 -r 1.61.2.31 src/account.c; cvs diff -u -r 1.3.2.11 -r 1.3.2.12 src/ssl_manager.c; ) > 1.9.12cvs57.patchset
( cvs diff -u -r 1.61.2.31 -r 1.61.2.32 src/account.c; ) > 1.9.12cvs58.patchset
( cvs diff -u -r 1.1.4.8 -r 1.1.4.9 src/etpan/imap-thread.c; ) > 1.9.12cvs59.patchset
( cvs diff -u -r 1.61.2.30 -r 1.61.2.31 src/account.c; cvs diff -u -r 1.3.2.11 -r 1.3.2.12 src/ssl_manager.c; ) > 1.9.12cvs57.patchset
( cvs diff -u -r 1.61.2.31 -r 1.61.2.32 src/account.c; ) > 1.9.12cvs58.patchset
( cvs diff -u -r 1.1.4.8 -r 1.1.4.9 src/etpan/imap-thread.c; ) > 1.9.12cvs59.patchset
+( cvs diff -u -r 1.60.2.18 -r 1.60.2.19 src/addressbook.c; ) > 1.9.12cvs60.patchset
MICRO_VERSION=12
INTERFACE_AGE=0
BINARY_AGE=0
MICRO_VERSION=12
INTERFACE_AGE=0
BINARY_AGE=0
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
else if( aio->type == ADDR_ITEM_PERSON ) {
ItemPerson *item = ( ItemPerson * ) aio;
addressbook_folder_remove_one_person( clist, item );
else if( aio->type == ADDR_ITEM_PERSON ) {
ItemPerson *item = ( ItemPerson * ) aio;
addressbook_folder_remove_one_person( clist, item );
+ if (pobj->type == ADDR_ITEM_FOLDER)
+ addritem_folder_remove_person((ItemFolder *)pobj, item);
item = addrbook_remove_person( abf, item );
if( item ) {
addritem_free_item_person( item );
item = addrbook_remove_person( abf, item );
if( item ) {
addritem_free_item_person( item );
}
g_list_free( list );
addressbook_list_select_clear();
}
g_list_free( list );
addressbook_list_select_clear();
- if( refreshList ) gtk_ctree_select( ctree, addrbook.opened);
+ if( refreshList )
+ gtk_ctree_select( ctree, addrbook.opened);
+ addrbook_set_dirty(abf, TRUE);
+ addressbook_export_to_file();
return;
}
else if( pobj->type == ADDR_ITEM_GROUP ) {
return;
}
else if( pobj->type == ADDR_ITEM_GROUP ) {
g_list_free( list );
addressbook_list_select_clear();
gtk_ctree_select( ctree, addrbook.opened);
g_list_free( list );
addressbook_list_select_clear();
gtk_ctree_select( ctree, addrbook.opened);
+ addrbook_set_dirty(abf, TRUE);
+ addressbook_export_to_file();
aio = gtk_ctree_node_get_row_data( clist, node );
if( aio ) {
aio = gtk_ctree_node_get_row_data( clist, node );
if( aio ) {
- /* printf( "list select: %d : '%s'\n", aio->type, aio->name ); */
+ printf( "list select: %d : '%s'\n", aio->type, aio->name );
addressbook_list_select_add( aio, ds );
}
addressbook_list_select_add( aio, ds );
}
gtk_drag_set_icon_default(context);
}
gtk_drag_set_icon_default(context);
}
-static ItemPerson *dragged_person = NULL;
+static GSList *dragged_persons = NULL;
static ItemFolder *dragged_folder = NULL;
static AddressBookFile *dragged_ab = NULL;
static ItemFolder *dragged_folder = NULL;
static AddressBookFile *dragged_ab = NULL;
AddressObject *pobj = NULL;
AdapterDSource *ads = NULL;
AddressDataSource *ds = NULL;
AddressObject *pobj = NULL;
AdapterDSource *ads = NULL;
AddressDataSource *ds = NULL;
pobj = gtk_ctree_node_get_row_data( GTK_CTREE(addrbook.ctree), addrbook.treeSelected );
if( pobj == NULL ) return;
pobj = gtk_ctree_node_get_row_data( GTK_CTREE(addrbook.ctree), addrbook.treeSelected );
if( pobj == NULL ) return;
- if (addrbook.listSelected)
- aio = gtk_ctree_node_get_row_data( GTK_CTREE(addrbook.clist),
- addrbook.listSelected );
- while (aio && aio->type != ADDR_ITEM_PERSON) {
- aio = aio->parent;
+
+ for(cur = GTK_CLIST(addrbook.clist)->selection; cur; cur = cur->next) {
+ aio = (AddrItemObject *)gtk_ctree_node_get_row_data(GTK_CTREE(addrbook.clist),
+ GTK_CTREE_NODE(cur->data));
+ while (aio && aio->type != ADDR_ITEM_PERSON) {
+ aio = aio->parent;
+ }
+ if (aio) {
+ dragged_persons = g_slist_append(dragged_persons, aio);
+ }
}
if (aio && aio->type == ADDR_ITEM_PERSON) {
}
if (aio && aio->type == ADDR_ITEM_PERSON) {
- dragged_person = (ItemPerson *)aio;
dragged_folder = (ItemFolder *)ADAPTER_FOLDER(pobj)->itemFolder;
dragged_ab = addressbook_get_book_file();
dragged_folder = (ItemFolder *)ADAPTER_FOLDER(pobj)->itemFolder;
dragged_ab = addressbook_get_book_file();
drag_context->action = GDK_ACTION_COPY;
} else {
dragged_folder = NULL;
drag_context->action = GDK_ACTION_COPY;
} else {
dragged_folder = NULL;
+ g_slist_free(dragged_persons);
+ dragged_persons = NULL;
dragged_ab = NULL;
}
}
} else {
dragged_folder = NULL;
dragged_ab = NULL;
}
}
} else {
dragged_folder = NULL;
+ g_slist_free(dragged_persons);
+ dragged_persons = NULL;
AddressObject *obj = NULL;
AdapterDSource *ads = NULL;
AddressDataSource *ds = NULL;
AddressObject *obj = NULL;
AdapterDSource *ads = NULL;
AddressDataSource *ds = NULL;
+ GSList *cur = dragged_persons;
+
if (gtk_clist_get_selection_info
(GTK_CLIST(widget), x - 24, y - 24, &row, &column) == 0) {
if (gtk_clist_get_selection_info
(GTK_CLIST(widget), x - 24, y - 24, &row, &column) == 0) {
}
node = gtk_ctree_node_nth(GTK_CTREE(widget), row);
if( node )
obj = gtk_ctree_node_get_row_data(GTK_CTREE(addrbook.ctree), node );
if( obj == NULL )
}
node = gtk_ctree_node_nth(GTK_CTREE(widget), row);
if( node )
obj = gtk_ctree_node_get_row_data(GTK_CTREE(addrbook.ctree), node );
if( obj == NULL )
- return;
-
-
-
- person = ( ItemPerson * )dragged_person;
-
if (obj->type == ADDR_ITEM_FOLDER) {
afolder = ADAPTER_FOLDER(obj)->itemFolder;
} else if (obj->type == ADDR_DATASOURCE) {
ads = ADAPTER_DSOURCE(obj);
if( ads == NULL )
if (obj->type == ADDR_ITEM_FOLDER) {
afolder = ADAPTER_FOLDER(obj)->itemFolder;
} else if (obj->type == ADDR_DATASOURCE) {
ads = ADAPTER_DSOURCE(obj);
if( ads == NULL )
ds = ads->dataSource;
if( ds == NULL ||
ds->type == ADDR_IF_JPILOT ||
ds->type == ADDR_IF_LDAP)
ds = ads->dataSource;
if( ds == NULL ||
ds->type == ADDR_IF_JPILOT ||
ds->type == ADDR_IF_LDAP)
afolder = addrindex_ds_get_root_folder( ds );
} else {
afolder = addrindex_ds_get_root_folder( ds );
} else {
}
ofolder = dragged_folder;
}
ofolder = dragged_folder;
if (afolder && ofolder) {
AddressBookFile *obook = dragged_ab;
AddressBookFile *abook = addressbook_get_book_file_for_node(node);
if (afolder && ofolder) {
AddressBookFile *obook = dragged_ab;
AddressBookFile *abook = addressbook_get_book_file_for_node(node);
- addritem_folder_remove_person(ofolder, person);
- addritem_folder_add_person(afolder, person);
+ for (cur = dragged_persons; cur; cur = cur->next) {
+ person = (ItemPerson *)cur->data;
+ addritem_folder_remove_person(ofolder, person);
+ addritem_folder_add_person(afolder, person);
+ }
addressbook_list_select_clear();
gtk_ctree_select( GTK_CTREE(addrbook.ctree), addrbook.opened);
addressbook_list_select_clear();
gtk_ctree_select( GTK_CTREE(addrbook.ctree), addrbook.opened);
gtk_drag_finish(drag_context, TRUE, TRUE, time);
}
gtk_drag_finish(drag_context, TRUE, TRUE, time);
}
+free_list:
+ g_slist_free(dragged_persons);
+ dragged_persons = NULL;