diff src/conversation.c @ 10827:53e7884c549a

[gaim-migrate @ 12492] this should fix some problems with contact aware conversations, while possibly introducing new problems, and breaking some plugins. Someone needs to just remove GaimConvWindows all together. committer: Tailor Script <tailor@pidgin.im>
author Tim Ringenbach <marv@pidgin.im>
date Fri, 15 Apr 2005 22:32:00 +0000
parents 8d52201620d0
children c203cd637f95
line wrap: on
line diff
--- a/src/conversation.c	Fri Apr 15 17:56:04 2005 +0000
+++ b/src/conversation.c	Fri Apr 15 22:32:00 2005 +0000
@@ -260,22 +260,6 @@
 	g_free(sent);
 }
 
-static void
-update_conv_indexes(GaimConvWindow *win)
-{
-	GList *l;
-	int i;
-
-	for (l = gaim_conv_window_get_conversations(win), i = 0;
-		 l != NULL;
-		 l = l->next, i++) {
-
-		GaimConversation *conv = (GaimConversation *)l->data;
-
-		conv->conversation_pos = i;
-	}
-}
-
 GaimConvWindow *
 gaim_conv_window_new(void)
 {
@@ -476,8 +460,6 @@
 	win->conversations = g_list_append(win->conversations, conv);
 	win->conversation_count++;
 
-	conv->conversation_pos = win->conversation_count - 1;
-
 	if (ops != NULL) {
 		conv->window = win;
 
@@ -520,73 +502,10 @@
 
 	if (gaim_conv_window_get_conversation_count(win) == 0)
 		gaim_conv_window_destroy(win);
-	else {
-		/* Change all the indexes. */
-		update_conv_indexes(win);
-	}
 
 	return conv;
 }
 
-void
-gaim_conv_window_move_conversation(GaimConvWindow *win, unsigned int index,
-							  unsigned int new_index)
-{
-	GaimConvWindowUiOps *ops;
-	GaimConversation *conv;
-	GList *l;
-
-	g_return_if_fail(win != NULL);
-	g_return_if_fail(index < gaim_conv_window_get_conversation_count(win));
-	g_return_if_fail(index != new_index);
-
-	/* We can't move this past the last index. */
-	if (new_index > gaim_conv_window_get_conversation_count(win))
-		new_index = gaim_conv_window_get_conversation_count(win);
-
-	/* Get the list item for this conversation at its current index. */
-	l = g_list_nth(gaim_conv_window_get_conversations(win), index);
-
-	if (l == NULL) {
-		/* Should never happen. */
-		gaim_debug(GAIM_DEBUG_ERROR, "conversation",
-				   "Misordered conversations list in window %p\n", win);
-
-		return;
-	}
-
-	conv = (GaimConversation *)l->data;
-
-	/* Update the UI part of this. */
-	ops = gaim_conv_window_get_ui_ops(win);
-
-	if (ops != NULL && ops->move_conversation != NULL)
-		ops->move_conversation(win, conv, new_index);
-
-	if (new_index > index)
-		new_index--;
-
-	/* Remove the old one. */
-	win->conversations = g_list_delete_link(win->conversations, l);
-
-	/* Insert it where it should go. */
-	win->conversations = g_list_insert(win->conversations, conv, new_index);
-
-	update_conv_indexes(win);
-}
-
-GaimConversation *
-gaim_conv_window_get_conversation_at(const GaimConvWindow *win, unsigned int index)
-{
-	g_return_val_if_fail(win != NULL, NULL);
-	g_return_val_if_fail(index >= 0 &&
-						 index < gaim_conv_window_get_conversation_count(win),
-						 NULL);
-
-	return (GaimConversation *)g_list_nth_data(
-		gaim_conv_window_get_conversations(win), index);
-}
-
 size_t
 gaim_conv_window_get_conversation_count(const GaimConvWindow *win)
 {
@@ -596,17 +515,15 @@
 }
 
 void
-gaim_conv_window_switch_conversation(GaimConvWindow *win, unsigned int index)
+gaim_conv_window_switch_conversation(GaimConvWindow *win, GaimConversation *conv)
 {
 	GaimConvWindowUiOps *ops;
-	GaimConversation *old_conv, *conv;
+	GaimConversation *old_conv;
 
 	g_return_if_fail(win != NULL);
-	g_return_if_fail(index >= 0 &&
-					 index < gaim_conv_window_get_conversation_count(win));
+	g_return_if_fail(conv != NULL);
 
 	old_conv = gaim_conv_window_get_active_conversation(win);
-	conv = gaim_conv_window_get_conversation_at(win, index);
 
 	gaim_signal_emit(gaim_conversations_get_handle(),
 					 "conversation-switching", old_conv, conv);
@@ -614,7 +531,7 @@
 	ops = gaim_conv_window_get_ui_ops(win);
 
 	if (ops != NULL && ops->switch_conversation != NULL)
-		ops->switch_conversation(win, index);
+		ops->switch_conversation(win, conv);
 
 	gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE);
 
@@ -634,8 +551,8 @@
 
 	ops = gaim_conv_window_get_ui_ops(win);
 
-	if (ops != NULL && ops->get_active_index != NULL)
-		return gaim_conv_window_get_conversation_at(win, ops->get_active_index(win));
+	if (ops != NULL && ops->get_active_conversation != NULL)
+		return ops->get_active_conversation(win);
 
 	return NULL;
 }
@@ -1179,14 +1096,6 @@
 	gaim_conversation_set_title(conv, text);
 }
 
-int
-gaim_conversation_get_index(const GaimConversation *conv)
-{
-	g_return_val_if_fail(conv != NULL, 0);
-
-	return conv->conversation_pos;
-}
-
 void
 gaim_conversation_set_unseen(GaimConversation *conv, GaimUnseenState state)
 {
@@ -1734,7 +1643,7 @@
 	 * user is already using this window.
 	 */
 	if (!gaim_conv_window_has_focus(window))
-		gaim_conv_window_switch_conversation(window, gaim_conversation_get_index(conv));
+		gaim_conv_window_switch_conversation(window, conv);
 
 	gaim_conv_window_raise(window);