diff src/buddy_chat.c @ 2843:87d11d2a7d59

[gaim-migrate @ 2856] i think we've found our mole committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Tue, 04 Dec 2001 07:53:55 +0000
parents b917845dad3c
children 0c10058610a0
line wrap: on
line diff
--- a/src/buddy_chat.c	Tue Dec 04 05:38:53 2001 +0000
+++ b/src/buddy_chat.c	Tue Dec 04 07:53:55 2001 +0000
@@ -1074,35 +1074,6 @@
 			   GTK_SIGNAL_FUNC(right_click_chat), b);
 }
 
-static gint delete_all_chats(GtkWidget *w, GdkEventAny *e, gpointer d)
-{
-	while (chats) {
-		struct conversation *c = chats->data;
-		close_callback(c->close, c);
-	}
-	return FALSE;
-}
-
-static void chat_switch(GtkNotebook *notebook, GtkWidget *page, gint page_num, gpointer data)
-{
-	GtkWidget *label = gtk_notebook_get_tab_label(GTK_NOTEBOOK(chat_notebook),
-						      gtk_notebook_get_nth_page(GTK_NOTEBOOK
-										(chat_notebook),
-										page_num));
-	GtkStyle *style;
-	struct conversation *b = g_list_nth_data(chats, page_num);
-	if (b && b->window && b->entry)
-		gtk_window_set_focus(GTK_WINDOW(b->window), b->entry);
-	if (!GTK_WIDGET_REALIZED(label))
-		return;
-	style = gtk_style_new();
-	gdk_font_unref(gtk_style_get_font(style));
-	gtk_style_set_font(style, gdk_font_ref(gtk_style_get_font(label->style)));
-	gtk_widget_set_style(label, style);
-	gtk_style_unref(style);
-	b->unseen = 0;
-}
-
 void show_new_buddy_chat(struct conversation *b)
 {
 	GtkWidget *win;
@@ -1131,6 +1102,8 @@
 	if (chat_options & OPT_CHAT_ONE_WINDOW) {
 		if (!all_chats) {
 			win = all_chats = b->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+			if ((convo_options & OPT_CONVO_COMBINE) && (im_options & OPT_IM_ONE_WINDOW))
+				all_convos = all_chats;
 			gtk_window_set_wmclass(GTK_WINDOW(win), "buddy_chat", "Gaim");
 			gtk_window_set_policy(GTK_WINDOW(win), TRUE, TRUE, TRUE);
 			gtk_container_border_width(GTK_CONTAINER(win), 0);
@@ -1138,9 +1111,11 @@
 			aol_icon(win->window);
 			gtk_window_set_title(GTK_WINDOW(win), _("Gaim - Group Chats"));
 			gtk_signal_connect(GTK_OBJECT(win), "delete_event",
-					   GTK_SIGNAL_FUNC(delete_all_chats), NULL);
+					   GTK_SIGNAL_FUNC(delete_all_convo), NULL);
 
 			chat_notebook = gtk_notebook_new();
+			if ((convo_options & OPT_CONVO_COMBINE) && (im_options & OPT_IM_ONE_WINDOW))
+				convo_notebook = chat_notebook;
 			if (chat_options & OPT_CHAT_SIDE_TAB) {
 				if (chat_options & OPT_CHAT_BR_TAB) {
 					gtk_notebook_set_tab_pos(GTK_NOTEBOOK(chat_notebook),
@@ -1162,7 +1137,7 @@
 			gtk_notebook_popup_enable(GTK_NOTEBOOK(chat_notebook));
 			gtk_container_add(GTK_CONTAINER(win), chat_notebook);
 			gtk_signal_connect(GTK_OBJECT(chat_notebook), "switch-page",
-					   GTK_SIGNAL_FUNC(chat_switch), NULL);
+					   GTK_SIGNAL_FUNC(convo_switch), NULL);
 			gtk_widget_show(chat_notebook);
 		} else
 			win = b->window = all_chats;
@@ -1461,9 +1436,14 @@
 void chat_tabize()
 {
 	int pos = 0;
+	char tmp[BUF_LONG];
 	/* evil, evil i tell you! evil! */
 	if (chat_options & OPT_CHAT_ONE_WINDOW) {
 		GList *x = chats;
+		if ((convo_options & OPT_CONVO_COMBINE) && (im_options & OPT_IM_ONE_WINDOW)) {
+			all_chats = all_convos;
+			chat_notebook = convo_notebook;
+		}
 		while (x) {
 			struct conversation *c = x->data;
 			GtkWidget *imhtml, *win;
@@ -1482,6 +1462,10 @@
 			if (c->topic)
 				gtk_entry_set_text(GTK_ENTRY(c->topic_text), c->topic);
 
+			g_snprintf(tmp, sizeof(tmp), _("%d %s in room"), g_list_length(c->in_room),
+				   g_list_length(c->in_room) == 1 ? "person" : "people");
+			gtk_label_set_text(GTK_LABEL(c->count), tmp);
+
 			while (r) {
 				char *name = r->data;
 				GtkWidget *list_item;
@@ -1524,6 +1508,10 @@
 			if (c->topic)
 				gtk_entry_set_text(GTK_ENTRY(c->topic_text), c->topic);
 
+			g_snprintf(tmp, sizeof(tmp), _("%d %s in room"), g_list_length(c->in_room),
+				   g_list_length(c->in_room) == 1 ? "person" : "people");
+			gtk_label_set_text(GTK_LABEL(c->count), tmp);
+
 			while (r) {
 				char *name = r->data;
 				GtkWidget *list_item;
@@ -1548,10 +1536,17 @@
 
 			x = x->next;
 		}
-		if (all_chats)
+		chats = m;
+		if ((convo_options & OPT_CONVO_COMBINE) &&
+		    (im_options & OPT_IM_ONE_WINDOW) && conversations) {
+			while (m) {
+				gtk_notebook_remove_page(GTK_NOTEBOOK(chat_notebook),
+							 g_list_length(conversations));
+				m = m->next;
+			}
+		} else if (all_chats)
 			gtk_widget_destroy(all_chats);
 		all_chats = NULL;
 		chat_notebook = NULL;
-		chats = m;
 	}
 }