# HG changeset patch # User Tim Ringenbach # Date 1113524934 0 # Node ID 8d52201620d0d2b4cba46c6181dca8345215058e # Parent c1bb12625b3f0ed530424fb9f3b40bf740abc5f4 [gaim-migrate @ 12488] This changes gaim_conv_window_remove_conversation to take a GaimConversion pointer to remore instead of an index. Every place just called a function to get the index before calling it anyway. This may or may not help the contact aware convo bugs, I didn't test it yet, but I believe it to be a step in the right direction. committer: Tailor Script diff -r c1bb12625b3f -r 8d52201620d0 plugins/ChangeLog.API --- a/plugins/ChangeLog.API Thu Apr 14 04:08:10 2005 +0000 +++ b/plugins/ChangeLog.API Fri Apr 15 00:28:54 2005 +0000 @@ -56,6 +56,8 @@ non-NULL value. This value is now returned. Previously, all registered handlers were called and the value from the last handler was used. + * Changed: gaim_conv_window_remove_conversation()'s last argument to + be a GaimConversation. version 1.0.0 (09/17/2004): * Added: get_chat_name to the GaimPluginProtocolInfo struct diff -r c1bb12625b3f -r 8d52201620d0 plugins/gestures/gestures.c --- a/plugins/gestures/gestures.c Thu Apr 14 04:08:10 2005 +0000 +++ b/plugins/gestures/gestures.c Fri Apr 15 00:28:54 2005 +0000 @@ -104,7 +104,7 @@ new_win = gaim_conv_window_new(); - gaim_conv_window_remove_conversation(old_win, gaim_conversation_get_index(conv)); + gaim_conv_window_remove_conversation(old_win, conv); gaim_conv_window_add_conversation(new_win, conv); gaim_conv_window_show(new_win); diff -r c1bb12625b3f -r 8d52201620d0 src/conversation.c --- a/src/conversation.c Thu Apr 14 04:08:10 2005 +0000 +++ b/src/conversation.c Fri Apr 15 00:28:54 2005 +0000 @@ -468,7 +468,7 @@ if (gaim_conversation_get_window(conv) != NULL) { gaim_conv_window_remove_conversation( gaim_conversation_get_window(conv), - gaim_conversation_get_index(conv)); + conv); } ops = gaim_conv_window_get_ui_ops(win); @@ -492,20 +492,21 @@ } GaimConversation * -gaim_conv_window_remove_conversation(GaimConvWindow *win, unsigned int index) +gaim_conv_window_remove_conversation(GaimConvWindow *win, GaimConversation *conv) { GaimConvWindowUiOps *ops; - GaimConversation *conv; GList *node; g_return_val_if_fail(win != NULL, NULL); - g_return_val_if_fail(index < gaim_conv_window_get_conversation_count(win), NULL); + g_return_val_if_fail(conv != NULL, NULL); ops = gaim_conv_window_get_ui_ops(win); - node = g_list_nth(gaim_conv_window_get_conversations(win), index); - conv = (GaimConversation *)node->data; - + node = g_list_find(gaim_conv_window_get_conversations(win), conv); + + if (!node) + return NULL; + if (ops != NULL && ops->remove_conversation != NULL) ops->remove_conversation(win, conv); @@ -1019,8 +1020,7 @@ conv->data = NULL; if (win != NULL) { - gaim_conv_window_remove_conversation(win, - gaim_conversation_get_index(conv)); + gaim_conv_window_remove_conversation(win, conv); } if (ops != NULL && ops->destroy_conversation != NULL) diff -r c1bb12625b3f -r 8d52201620d0 src/conversation.h --- a/src/conversation.h Thu Apr 14 04:08:10 2005 +0000 +++ b/src/conversation.h Fri Apr 15 00:28:54 2005 +0000 @@ -402,17 +402,15 @@ GaimConversation *conv); /** - * Removes the conversation at the specified index from the window. - * - * If there is no conversation at this index, this will do nothing. + * Removes the conversation from the window. * * @param win The window. - * @param index The index of the conversation. + * @param conv The conversation. * * @return The conversation removed. */ GaimConversation *gaim_conv_window_remove_conversation(GaimConvWindow *win, - unsigned int index); + GaimConversation *conv); /** * Moves the conversation at the specified index in a window to a new index. diff -r c1bb12625b3f -r 8d52201620d0 src/gtkconv.c --- a/src/gtkconv.c Thu Apr 14 04:08:10 2005 +0000 +++ b/src/gtkconv.c Fri Apr 15 00:28:54 2005 +0000 @@ -2250,8 +2250,8 @@ dest_win = gaim_conv_window_new(); gaim_conv_window_add_conversation(dest_win, - gaim_conv_window_remove_conversation(win, - gaim_conversation_get_index(conv))); + gaim_conv_window_remove_conversation(win, + conv)); dest_gtkwin = GAIM_GTK_WINDOW(dest_win); @@ -2281,8 +2281,7 @@ else { size_t pos; - gaim_conv_window_remove_conversation(win, - gaim_conversation_get_index(conv)); + gaim_conv_window_remove_conversation(win, conv); pos = gaim_conv_window_add_conversation(dest_win, conv); @@ -4119,9 +4118,8 @@ if (c != NULL) { GaimConvWindow *oldwin; oldwin = gaim_conversation_get_window(c); - index = gaim_conversation_get_index(c); if (oldwin != win) { - gaim_conv_window_remove_conversation(oldwin, index); + gaim_conv_window_remove_conversation(oldwin, c); gaim_conv_window_add_conversation(win, c); } } else {