pidgin/gtkconv.c

branch
soc.2013.gobjectification.plugins
changeset 37123
9c245220151d
parent 37111
efe4b7c5218a
parent 35610
24b06c5e7760
child 37124
301131c1844c
--- a/pidgin/gtkconv.c	Tue Feb 25 20:26:02 2014 +0530
+++ b/pidgin/gtkconv.c	Wed Feb 26 04:37:49 2014 +0530
@@ -176,7 +176,7 @@
 static GtkWidget *invite_dialog = NULL;
 static GtkWidget *warn_close_dialog = NULL;
 
-static PidginWindow *hidden_convwin = NULL;
+static PidginConvWindow *hidden_convwin = NULL;
 static GList *window_list = NULL;
 
 /* Lists of status icons at all available sizes for use as window icons */
@@ -190,8 +190,8 @@
 
 static PurpleTheme *default_conv_theme = NULL;
 
-static gboolean update_send_to_selection(PidginWindow *win);
-static void generate_send_to_items(PidginWindow *win);
+static gboolean update_send_to_selection(PidginConvWindow *win);
+static void generate_send_to_items(PidginConvWindow *win);
 
 /* Prototypes. <-- because Paco-Paco hates this comment. */
 static void load_conv_theme(PidginConversation *gtkconv);
@@ -210,14 +210,14 @@
 static gboolean color_is_visible(GdkColor foreground, GdkColor background, guint color_contrast, guint brightness_contrast);
 static GtkTextTag *get_buddy_tag(PurpleChatConversation *chat, const char *who, PurpleMessageFlags flag, gboolean create);
 static void pidgin_conv_update_fields(PurpleConversation *conv, PidginConvFields fields);
-static void focus_out_from_menubar(GtkWidget *wid, PidginWindow *win);
-static void pidgin_conv_tab_pack(PidginWindow *win, PidginConversation *gtkconv);
+static void focus_out_from_menubar(GtkWidget *wid, PidginConvWindow *win);
+static void pidgin_conv_tab_pack(PidginConvWindow *win, PidginConversation *gtkconv);
 static gboolean infopane_press_cb(GtkWidget *widget, GdkEventButton *e, PidginConversation *conv);
 static void hide_conv(PidginConversation *gtkconv, gboolean closetimer);
 
-static void pidgin_conv_set_position_size(PidginWindow *win, int x, int y,
+static void pidgin_conv_set_position_size(PidginConvWindow *win, int x, int y,
 		int width, int height);
-static gboolean pidgin_conv_xy_to_right_infopane(PidginWindow *win, int x, int y);
+static gboolean pidgin_conv_xy_to_right_infopane(PidginConvWindow *win, int x, int y);
 
 static const GdkColor *get_nick_color(PidginConversation *gtkconv, const char *name)
 {
@@ -926,7 +926,7 @@
 	InviteBuddyInfo *info = NULL;
 
 	if (invite_dialog == NULL) {
-		PidginWindow *gtkwin;
+		PidginConvWindow *gtkwin;
 		GtkWidget *label;
 		GtkWidget *vbox, *hbox;
 		GtkWidget *table;
@@ -1104,7 +1104,7 @@
 static void
 menu_save_as_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win);
 	PurpleAccount *account = purple_conversation_get_account(conv);
 	PurpleBuddy *buddy = purple_blist_find_buddy(account, purple_conversation_get_name(conv));
@@ -1133,7 +1133,7 @@
 static void
 menu_view_log_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	PurpleConversation *conv;
 	PurpleLogType type;
 	PidginBuddyList *gtkblist;
@@ -1183,7 +1183,7 @@
 static void
 menu_clear_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	PurpleConversation *conv;
 
 	conv = pidgin_conv_window_get_active_conversation(win);
@@ -1193,7 +1193,7 @@
 static void
 menu_find_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *gtkwin = data;
+	PidginConvWindow *gtkwin = data;
 	PidginConversation *gtkconv = pidgin_conv_window_get_active_gtkconv(gtkwin);
 	gtk_widget_show_all(gtkconv->quickfind_container);
 	gtk_widget_grab_focus(gtkconv->quickfind_entry);
@@ -1203,7 +1203,7 @@
 static void
 menu_initiate_media_call_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = (PidginWindow *)data;
+	PidginConvWindow *win = (PidginConvWindow *)data;
 	PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win);
 	PurpleAccount *account = purple_conversation_get_account(conv);
 
@@ -1219,7 +1219,7 @@
 static void
 menu_send_file_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win);
 
 	if (PURPLE_IS_IM_CONVERSATION(conv)) {
@@ -1231,7 +1231,7 @@
 static void
 menu_get_attention_cb(GObject *obj, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win);
 
 	if (PURPLE_IS_IM_CONVERSATION(conv)) {
@@ -1248,7 +1248,7 @@
 static void
 menu_add_pounce_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	PurpleConversation *conv;
 
 	conv = pidgin_conv_window_get_active_gtkconv(win)->active_conv;
@@ -1260,7 +1260,7 @@
 static void
 menu_insert_link_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	PidginConversation *gtkconv;
 	PidginWebView *entry;
 
@@ -1273,7 +1273,7 @@
 static void
 menu_insert_image_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	PidginConversation *gtkconv;
 	PidginWebView *entry;
 
@@ -1286,7 +1286,7 @@
 static void
 menu_alias_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	PurpleConversation *conv;
 	PurpleAccount *account;
 	const char *name;
@@ -1313,7 +1313,7 @@
 static void
 menu_get_info_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	PurpleConversation *conv;
 
 	conv = pidgin_conv_window_get_active_conversation(win);
@@ -1324,7 +1324,7 @@
 static void
 menu_invite_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	PurpleConversation *conv;
 
 	conv = pidgin_conv_window_get_active_conversation(win);
@@ -1335,7 +1335,7 @@
 static void
 menu_block_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	PurpleConversation *conv;
 
 	conv = pidgin_conv_window_get_active_conversation(win);
@@ -1346,7 +1346,7 @@
 static void
 menu_unblock_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	PurpleConversation *conv;
 
 	conv = pidgin_conv_window_get_active_conversation(win);
@@ -1357,7 +1357,7 @@
 static void
 menu_add_remove_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	PurpleConversation *conv;
 
 	conv = pidgin_conv_window_get_active_conversation(win);
@@ -1402,7 +1402,7 @@
 static void
 menu_close_conv_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 
 	close_conv_cb(NULL, PIDGIN_CONVERSATION(pidgin_conv_window_get_active_conversation(win)));
 }
@@ -1410,7 +1410,7 @@
 static void
 menu_logging_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	PurpleConversation *conv;
 	gboolean logging;
 	PurpleBlistNode *node;
@@ -1472,7 +1472,7 @@
 static void
 menu_sounds_cb(GtkAction *action, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	PurpleConversation *conv;
 	PidginConversation *gtkconv;
 	PurpleBlistNode *node;
@@ -1889,7 +1889,7 @@
 {
 	PidginConversation *next_gtkconv = NULL, *most_active = NULL;
 	PidginUnseenState unseen_state = PIDGIN_UNSEEN_NONE;
-	PidginWindow *win;
+	PidginConvWindow *win;
 	int initial, i, total, diff;
 
 	win   = gtkconv->win;
@@ -2010,7 +2010,7 @@
 static gboolean
 conv_keypress_common(PidginConversation *gtkconv, GdkEventKey *event)
 {
-	PidginWindow *win;
+	PidginConvWindow *win;
 	int curconv;
 
 	win     = gtkconv->win;
@@ -2347,7 +2347,7 @@
 }
 
 static void
-regenerate_options_items(PidginWindow *win);
+regenerate_options_items(PidginConvWindow *win);
 
 void
 pidgin_conv_switch_active_conversation(PurpleConversation *conv)
@@ -2626,7 +2626,7 @@
 update_tab_icon(PurpleConversation *conv)
 {
 	PidginConversation *gtkconv;
-	PidginWindow *win;
+	PidginConvWindow *win;
 	GList *l;
 	GdkPixbuf *emblem = NULL;
 	const char *status = NULL;
@@ -3162,7 +3162,7 @@
 	return ret;
 }
 
-PidginWindow *
+PidginConvWindow *
 pidgin_conv_get_window(PidginConversation *gtkconv)
 {
 	g_return_val_if_fail(gtkconv != NULL, NULL);
@@ -3264,7 +3264,7 @@
 sound_method_pref_changed_cb(const char *name, PurplePrefType type,
 							 gconstpointer value, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	const char *method = value;
 
 	if (!strcmp(method, "none"))
@@ -3371,7 +3371,7 @@
 }
 
 static void
-regenerate_media_items(PidginWindow *win)
+regenerate_media_items(PidginConvWindow *win)
 {
 #ifdef USE_VV
 	PurpleAccount *account;
@@ -3425,7 +3425,7 @@
 }
 
 static void
-regenerate_attention_items(PidginWindow *win)
+regenerate_attention_items(PidginConvWindow *win)
 {
 	GtkWidget *attention;
 	GtkWidget *menu;
@@ -3480,7 +3480,7 @@
 }
 
 static void
-regenerate_options_items(PidginWindow *win)
+regenerate_options_items(PidginConvWindow *win)
 {
 	GtkWidget *menu;
 	PidginConversation *gtkconv;
@@ -3512,7 +3512,7 @@
 }
 
 static void
-remove_from_list(GtkWidget *widget, PidginWindow *win)
+remove_from_list(GtkWidget *widget, PidginConvWindow *win)
 {
 	GList *list = g_object_get_data(G_OBJECT(win->window), "plugin-actions");
 	list = g_list_remove(list, widget);
@@ -3520,7 +3520,7 @@
 }
 
 static void
-regenerate_plugins_items(PidginWindow *win)
+regenerate_plugins_items(PidginConvWindow *win)
 {
 	GList *action_items;
 	GtkWidget *menu;
@@ -3568,7 +3568,7 @@
 
 static void menubar_activated(GtkWidget *item, gpointer data)
 {
-	PidginWindow *win = data;
+	PidginConvWindow *win = data;
 	regenerate_media_items(win);
 	regenerate_options_items(win);
 	regenerate_plugins_items(win);
@@ -3581,7 +3581,7 @@
 }
 
 static void
-focus_out_from_menubar(GtkWidget *wid, PidginWindow *win)
+focus_out_from_menubar(GtkWidget *wid, PidginConvWindow *win)
 {
 	/* The menubar has been deactivated. Make sure the 'More' submenu is regenerated next time
 	 * the 'Conversation' menu pops up. */
@@ -3592,7 +3592,7 @@
 }
 
 static GtkWidget *
-setup_menubar(PidginWindow *win)
+setup_menubar(PidginConvWindow *win)
 {
 	GtkAccelGroup *accel_group;
 	const char *method;
@@ -3779,7 +3779,7 @@
 static gboolean
 typing_animation(gpointer data) {
 	PidginConversation *gtkconv = data;
-	PidginWindow *gtkwin = gtkconv->win;
+	PidginConvWindow *gtkwin = gtkconv->win;
 	const char *stock_id = NULL;
 
 	if(gtkconv != pidgin_conv_window_get_active_gtkconv(gtkwin)) {
@@ -3887,7 +3887,7 @@
 }
 
 static gboolean
-update_send_to_selection(PidginWindow *win)
+update_send_to_selection(PidginConvWindow *win)
 {
 	PurpleAccount *account;
 	PurpleConversation *conv;
@@ -4074,7 +4074,7 @@
 }
 
 static void
-generate_send_to_items(PidginWindow *win)
+generate_send_to_items(PidginConvWindow *win)
 {
 	GtkWidget *menu;
 	GSList *group = NULL;
@@ -4193,7 +4193,7 @@
 }
 
 static void
-generate_e2ee_controls(PidginWindow *win)
+generate_e2ee_controls(PidginConvWindow *win)
 {
 	PidginConversation *gtkconv;
 	PurpleConversation *conv;
@@ -5749,7 +5749,7 @@
               PidginConversation *gtkconv)
 {
 	PurpleConversation *conv = gtkconv->active_conv;
-	PidginWindow *win = gtkconv->win;
+	PidginConvWindow *win = gtkconv->win;
 	PurpleIMConversation *im;
 	PurpleAccount *convaccount = purple_conversation_get_account(conv);
 	PurpleConnection *gc = purple_account_get_connection(convaccount);
@@ -5792,7 +5792,7 @@
 			 */
 			im = purple_conversations_find_im_with_account(buddyname, buddyaccount);
 			if (im != NULL) {
-				PidginWindow *oldwin;
+				PidginConvWindow *oldwin;
 				gtkconv = PIDGIN_CONVERSATION(PURPLE_CONVERSATION(im));
 				oldwin = gtkconv->win;
 				if (oldwin != win) {
@@ -5904,7 +5904,7 @@
 
 	for (list = pidgin_conv_windows_get_list(); list; list = list->next)
 	{
-		PidginWindow *win = list->data;
+		PidginConvWindow *win = list->data;
 		PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win);
 
 		if (!PURPLE_IS_IM_CONVERSATION(conv))
@@ -7185,7 +7185,7 @@
 pidgin_conv_has_focus(PurpleConversation *conv)
 {
 	PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
-	PidginWindow *win;
+	PidginConvWindow *win;
 	gboolean has_focus;
 
 	win = gtkconv->win;
@@ -7362,7 +7362,7 @@
 static void
 gray_stuff_out(PidginConversation *gtkconv)
 {
-	PidginWindow *win;
+	PidginConvWindow *win;
 	PurpleConversation *conv = gtkconv->active_conv;
 	PurpleConnection *gc;
 	PurpleProtocol *protocol = NULL;
@@ -7571,7 +7571,7 @@
 pidgin_conv_update_fields(PurpleConversation *conv, PidginConvFields fields)
 {
 	PidginConversation *gtkconv;
-	PidginWindow *win;
+	PidginConvWindow *win;
 
 	gtkconv = PIDGIN_CONVERSATION(conv);
 	if (!gtkconv)
@@ -7866,7 +7866,7 @@
 {
 	PidginConversation *gtkconv;
 	PurpleConversation *conv;
-	PidginWindow *win;
+	PidginConvWindow *win;
 
 	PurpleBuddy *buddy;
 
@@ -8041,7 +8041,7 @@
 void
 pidgin_conv_update_buttons_by_protocol(PurpleConversation *conv)
 {
-	PidginWindow *win;
+	PidginConvWindow *win;
 
 	if (!PIDGIN_IS_PIDGIN_CONVERSATION(conv))
 		return;
@@ -8053,7 +8053,7 @@
 }
 
 static gboolean
-pidgin_conv_xy_to_right_infopane(PidginWindow *win, int x, int y)
+pidgin_conv_xy_to_right_infopane(PidginConvWindow *win, int x, int y)
 {
 	gint pane_x, pane_y, x_rel;
 	PidginConversation *gtkconv;
@@ -8068,7 +8068,7 @@
 }
 
 int
-pidgin_conv_get_tab_at_xy(PidginWindow *win, int x, int y, gboolean *to_right)
+pidgin_conv_get_tab_at_xy(PidginConvWindow *win, int x, int y, gboolean *to_right)
 {
 	gint nb_x, nb_y, x_rel, y_rel;
 	GtkNotebook *notebook;
@@ -8184,7 +8184,7 @@
 {
 	GList *gtkwins, *gtkconvs;
 	GtkPositionType pos;
-	PidginWindow *gtkwin;
+	PidginConvWindow *gtkwin;
 
 	pos = GPOINTER_TO_INT(value);
 
@@ -8204,7 +8204,7 @@
 	GList *l;
 	PurpleConversation *conv;
 	PidginConversation *gtkconv;
-	PidginWindow *win;
+	PidginConvWindow *win;
 
 	for (l = purple_conversations_get_all(); l != NULL; l = l->next)
 	{
@@ -8236,7 +8236,7 @@
 	GList *l;
 	PurpleConversation *conv;
 	PidginConversation *gtkconv;
-	PidginWindow *win;
+	PidginConvWindow *win;
 
 	if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons"))
 		return;
@@ -8279,7 +8279,7 @@
 
 	/* Make the tabs show/hide correctly */
 	for (l = pidgin_conv_windows_get_list(); l != NULL; l = l->next) {
-		PidginWindow *win = l->data;
+		PidginConvWindow *win = l->data;
 		if (pidgin_conv_window_get_gtkconv_count(win) == 1)
 			gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook),
 						   GPOINTER_TO_INT(value) == 0);
@@ -8861,8 +8861,8 @@
 	 **********************************************************************/
 	purple_signal_register(handle, "conversation-dragging",
 	                     purple_marshal_VOID__POINTER_POINTER, G_TYPE_NONE, 2,
-	                     G_TYPE_POINTER, /* pointer to a (PidginWindow *) */
-	                     G_TYPE_POINTER); /* pointer to a (PidginWindow *) */
+	                     G_TYPE_POINTER, /* pointer to a (PidginConvWindow *) */
+	                     G_TYPE_POINTER); /* pointer to a (PidginConvWindow *) */
 
 	purple_signal_register(handle, "conversation-timestamp",
 #if SIZEOF_TIME_T == 4
@@ -9147,7 +9147,7 @@
 #include "pidginstock.h"
 
 static void
-do_close(GtkWidget *w, int resp, PidginWindow *win)
+do_close(GtkWidget *w, int resp, PidginConvWindow *win)
 {
 	gtk_widget_destroy(warn_close_dialog);
 	warn_close_dialog = NULL;
@@ -9157,7 +9157,7 @@
 }
 
 static void
-build_warn_close_dialog(PidginWindow *gtkwin)
+build_warn_close_dialog(PidginConvWindow *gtkwin)
 {
 	GtkWidget *label, *vbox, *hbox, *img;
 
@@ -9212,7 +9212,7 @@
 static gboolean
 close_win_cb(GtkWidget *w, GdkEventAny *e, gpointer d)
 {
-	PidginWindow *win = d;
+	PidginConvWindow *win = d;
 	GList *l;
 
 	/* If there are unread messages then show a warning dialog */
@@ -9298,7 +9298,7 @@
 static gboolean
 focus_win_cb(GtkWidget *w, GdkEventFocus *e, gpointer d)
 {
-	PidginWindow *win = d;
+	PidginConvWindow *win = d;
 	PidginConversation *gtkconv = pidgin_conv_window_get_active_gtkconv(win);
 
 	if (gtkconv)
@@ -9308,7 +9308,7 @@
 }
 
 static void
-notebook_init_grab(PidginWindow *gtkwin, GtkWidget *widget, GdkEvent *event)
+notebook_init_grab(PidginConvWindow *gtkwin, GtkWidget *widget, GdkEvent *event)
 {
 	static GdkCursor *cursor = NULL;
 #if GTK_CHECK_VERSION(3,0,0)
@@ -9348,7 +9348,7 @@
 }
 
 static gboolean
-notebook_motion_cb(GtkWidget *widget, GdkEventButton *e, PidginWindow *win)
+notebook_motion_cb(GtkWidget *widget, GdkEventButton *e, PidginConvWindow *win)
 {
 
 	/*
@@ -9366,7 +9366,7 @@
 		    }
 	}
 	else { /* Otherwise, draw the arrows. */
-		PidginWindow *dest_win;
+		PidginConvWindow *dest_win;
 		GtkNotebook *dest_notebook;
 		GtkWidget *tab;
 		gint page_num;
@@ -9428,7 +9428,7 @@
 }
 
 static gboolean
-notebook_leave_cb(GtkWidget *widget, GdkEventCrossing *e, PidginWindow *win)
+notebook_leave_cb(GtkWidget *widget, GdkEventCrossing *e, PidginConvWindow *win)
 {
 	if (win->in_drag)
 		return FALSE;
@@ -9513,7 +9513,7 @@
 }
 
 static gboolean
-notebook_press_cb(GtkWidget *widget, GdkEventButton *e, PidginWindow *win)
+notebook_press_cb(GtkWidget *widget, GdkEventButton *e, PidginConvWindow *win)
 {
 	gint nb_x, nb_y;
 	int tab_clicked;
@@ -9601,9 +9601,9 @@
 }
 
 static gboolean
-notebook_release_cb(GtkWidget *widget, GdkEventButton *e, PidginWindow *win)
-{
-	PidginWindow *dest_win;
+notebook_release_cb(GtkWidget *widget, GdkEventButton *e, PidginConvWindow *win)
+{
+	PidginConvWindow *dest_win;
 	GtkNotebook *dest_notebook;
 	PidginConversation *active_gtkconv;
 	PidginConversation *gtkconv;
@@ -9736,7 +9736,7 @@
 before_switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num,
                       gpointer user_data)
 {
-	PidginWindow *win;
+	PidginConvWindow *win;
 	PurpleConversation *conv;
 	PidginConversation *gtkconv;
 
@@ -9759,15 +9759,15 @@
 }
 
 static void
-close_window(GtkWidget *w, PidginWindow *win)
+close_window(GtkWidget *w, PidginConvWindow *win)
 {
 	close_win_cb(w, NULL, win);
 }
 
 static void
-detach_tab_cb(GtkWidget *w, PidginWindow *win)
-{
-	PidginWindow *new_window;
+detach_tab_cb(GtkWidget *w, PidginConvWindow *win)
+{
+	PidginConvWindow *new_window;
 	PidginConversation *gtkconv;
 
 	gtkconv = win->clicked_tab;
@@ -9787,7 +9787,7 @@
 }
 
 static void
-close_others_cb(GtkWidget *w, PidginWindow *win)
+close_others_cb(GtkWidget *w, PidginConvWindow *win)
 {
 	GList *iter;
 	PidginConversation *gtkconv;
@@ -9810,7 +9810,7 @@
 }
 
 static void
-close_tab_cb(GtkWidget *w, PidginWindow *win)
+close_tab_cb(GtkWidget *w, PidginConvWindow *win)
 {
 	PidginConversation *gtkconv;
 
@@ -9855,7 +9855,7 @@
 
 static void
 notebook_add_tab_to_menu_cb(GtkNotebook *notebook, GtkWidget *child,
-                            guint page_num, PidginWindow *win)
+                            guint page_num, PidginConvWindow *win)
 {
 	GtkWidget *item;
 	GtkWidget *label;
@@ -9879,7 +9879,7 @@
 
 static void
 notebook_remove_tab_from_menu_cb(GtkNotebook *notebook, GtkWidget *child,
-                                 guint page_num, PidginWindow *win)
+                                 guint page_num, PidginConvWindow *win)
 {
 	GtkWidget *item;
 
@@ -9893,7 +9893,7 @@
 
 static void
 notebook_reorder_tab_in_menu_cb(GtkNotebook *notebook, GtkWidget *child,
-                                guint page_num, PidginWindow *win)
+                                guint page_num, PidginConvWindow *win)
 {
 	GtkWidget *item;
 
@@ -9903,7 +9903,7 @@
 
 static gboolean
 notebook_right_click_menu_cb(GtkNotebook *notebook, GdkEventButton *event,
-                             PidginWindow *win)
+                             PidginConvWindow *win)
 {
 	GtkWidget *menu;
 	PidginConversation *gtkconv;
@@ -10042,7 +10042,7 @@
 }
 
 static gboolean
-window_keypress_cb(GtkWidget *widget, GdkEventKey *event, PidginWindow *win)
+window_keypress_cb(GtkWidget *widget, GdkEventKey *event, PidginConvWindow *win)
 {
 	PidginConversation *gtkconv = pidgin_conv_window_get_active_gtkconv(win);
 
@@ -10053,7 +10053,7 @@
 switch_conv_cb(GtkNotebook *notebook, GtkWidget *page, gint page_num,
                gpointer user_data)
 {
-	PidginWindow *win;
+	PidginConvWindow *win;
 	PurpleConversation *conv;
 	PidginConversation *gtkconv;
 	const char *sound_method;
@@ -10178,7 +10178,7 @@
 }
 
 static void
-pidgin_conv_set_position_size(PidginWindow *win, int conv_x, int conv_y,
+pidgin_conv_set_position_size(PidginConvWindow *win, int conv_x, int conv_y,
 		int conv_width, int conv_height)
 {
 	/* if the window exists, is hidden, we're saving positions, and the
@@ -10206,7 +10206,7 @@
 }
 
 static void
-pidgin_conv_restore_position(PidginWindow *win) {
+pidgin_conv_restore_position(PidginConvWindow *win) {
 	pidgin_conv_set_position_size(win,
 		purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/im/x"),
 		purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/im/y"),
@@ -10214,10 +10214,10 @@
 		purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/im/height"));
 }
 
-PidginWindow *
+PidginConvWindow *
 pidgin_conv_window_new()
 {
-	PidginWindow *win;
+	PidginConvWindow *win;
 	GtkPositionType pos;
 	GtkWidget *testidea;
 	GtkWidget *menubar;
@@ -10225,8 +10225,8 @@
 	GtkWidget *item;
 	GdkModifierType state;
 
-	win = g_malloc0(sizeof(PidginWindow));
-	win->menu = g_malloc0(sizeof(PidginWindowMenu));
+	win = g_malloc0(sizeof(PidginConvWindow));
+	win->menu = g_malloc0(sizeof(PidginConvWindowMenu));
 
 	window_list = g_list_append(window_list, win);
 
@@ -10358,7 +10358,7 @@
 }
 
 void
-pidgin_conv_window_destroy(PidginWindow *win)
+pidgin_conv_window_destroy(PidginConvWindow *win)
 {
 	if (win->gtkconvs) {
 		GList *iter = win->gtkconvs;
@@ -10387,25 +10387,25 @@
 }
 
 void
-pidgin_conv_window_show(PidginWindow *win)
+pidgin_conv_window_show(PidginConvWindow *win)
 {
 	gtk_widget_show(win->window);
 }
 
 void
-pidgin_conv_window_hide(PidginWindow *win)
+pidgin_conv_window_hide(PidginConvWindow *win)
 {
 	gtk_widget_hide(win->window);
 }
 
 void
-pidgin_conv_window_raise(PidginWindow *win)
+pidgin_conv_window_raise(PidginConvWindow *win)
 {
 	gdk_window_raise(GDK_WINDOW(gtk_widget_get_window(win->window)));
 }
 
 void
-pidgin_conv_window_switch_gtkconv(PidginWindow *win, PidginConversation *gtkconv)
+pidgin_conv_window_switch_gtkconv(PidginConvWindow *win, PidginConversation *gtkconv)
 {
 	gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook),
 	                              gtk_notebook_page_num(GTK_NOTEBOOK(win->notebook),
@@ -10479,7 +10479,7 @@
 #endif
 
 void
-pidgin_conv_window_add_gtkconv(PidginWindow *win, PidginConversation *gtkconv)
+pidgin_conv_window_add_gtkconv(PidginConvWindow *win, PidginConversation *gtkconv)
 {
 	PurpleConversation *conv = gtkconv->active_conv;
 	PidginConversation *focus_gtkconv;
@@ -10556,7 +10556,7 @@
 }
 
 static void
-pidgin_conv_tab_pack(PidginWindow *win, PidginConversation *gtkconv)
+pidgin_conv_tab_pack(PidginConvWindow *win, PidginConversation *gtkconv)
 {
 	gboolean tabs_side = FALSE;
 	gint angle = 0;
@@ -10654,7 +10654,7 @@
 }
 
 void
-pidgin_conv_window_remove_gtkconv(PidginWindow *win, PidginConversation *gtkconv)
+pidgin_conv_window_remove_gtkconv(PidginConvWindow *win, PidginConversation *gtkconv)
 {
 	unsigned int index;
 
@@ -10677,7 +10677,7 @@
 }
 
 PidginConversation *
-pidgin_conv_window_get_gtkconv_at_index(const PidginWindow *win, int index)
+pidgin_conv_window_get_gtkconv_at_index(const PidginConvWindow *win, int index)
 {
 	GtkWidget *tab_cont;
 
@@ -10688,7 +10688,7 @@
 }
 
 PidginConversation *
-pidgin_conv_window_get_active_gtkconv(const PidginWindow *win)
+pidgin_conv_window_get_active_gtkconv(const PidginConvWindow *win)
 {
 	int index;
 	GtkWidget *tab_cont;
@@ -10704,7 +10704,7 @@
 
 
 PurpleConversation *
-pidgin_conv_window_get_active_conversation(const PidginWindow *win)
+pidgin_conv_window_get_active_conversation(const PidginConvWindow *win)
 {
 	PidginConversation *gtkconv;
 
@@ -10719,7 +10719,7 @@
 }
 
 gboolean
-pidgin_conv_window_has_focus(PidginWindow *win)
+pidgin_conv_window_has_focus(PidginConvWindow *win)
 {
 	gboolean has_focus = FALSE;
 
@@ -10728,10 +10728,10 @@
 	return has_focus;
 }
 
-PidginWindow *
+PidginConvWindow *
 pidgin_conv_window_get_at_event(GdkEvent *event)
 {
-	PidginWindow *win;
+	PidginConvWindow *win;
 	GdkWindow *gdkwin;
 	GList *l;
 	int x, y;
@@ -10757,22 +10757,22 @@
 }
 
 GList *
-pidgin_conv_window_get_gtkconvs(PidginWindow *win)
+pidgin_conv_window_get_gtkconvs(PidginConvWindow *win)
 {
 	return win->gtkconvs;
 }
 
 guint
-pidgin_conv_window_get_gtkconv_count(PidginWindow *win)
+pidgin_conv_window_get_gtkconv_count(PidginConvWindow *win)
 {
 	return g_list_length(win->gtkconvs);
 }
 
-PidginWindow *
+PidginConvWindow *
 pidgin_conv_window_first_im(void)
 {
 	GList *wins, *convs;
-	PidginWindow *win;
+	PidginConvWindow *win;
 	PidginConversation *conv;
 
 	for (wins = pidgin_conv_windows_get_list(); wins != NULL; wins = wins->next) {
@@ -10792,11 +10792,11 @@
 	return NULL;
 }
 
-PidginWindow *
+PidginConvWindow *
 pidgin_conv_window_last_im(void)
 {
 	GList *wins, *convs;
-	PidginWindow *win;
+	PidginConvWindow *win;
 	PidginConversation *conv;
 
 	for (wins = g_list_last(pidgin_conv_windows_get_list());
@@ -10819,11 +10819,11 @@
 	return NULL;
 }
 
-PidginWindow *
+PidginConvWindow *
 pidgin_conv_window_first_chat(void)
 {
 	GList *wins, *convs;
-	PidginWindow *win;
+	PidginConvWindow *win;
 	PidginConversation *conv;
 
 	for (wins = pidgin_conv_windows_get_list(); wins != NULL; wins = wins->next) {
@@ -10843,11 +10843,11 @@
 	return NULL;
 }
 
-PidginWindow *
+PidginConvWindow *
 pidgin_conv_window_last_chat(void)
 {
 	GList *wins, *convs;
-	PidginWindow *win;
+	PidginConvWindow *win;
 	PidginConversation *conv;
 
 	for (wins = g_list_last(pidgin_conv_windows_get_list());
@@ -10889,7 +10889,7 @@
 static void
 conv_placement_last_created_win(PidginConversation *conv)
 {
-	PidginWindow *win;
+	PidginConvWindow *win;
 
 	GList *l = g_list_last(pidgin_conv_windows_get_list());
 	win = l ? l->data : NULL;;
@@ -10957,7 +10957,7 @@
 static void
 conv_placement_last_created_win_type(PidginConversation *conv)
 {
-	PidginWindow *win;
+	PidginConvWindow *win;
 
 	if (PURPLE_IS_IM_CONVERSATION(conv->active_conv))
 		win = pidgin_conv_window_last_im();
@@ -10995,7 +10995,7 @@
 static void
 conv_placement_new_window(PidginConversation *conv)
 {
-	PidginWindow *win;
+	PidginConvWindow *win;
 
 	win = pidgin_conv_window_new();
 
@@ -11049,7 +11049,7 @@
 
 	/* Go through the list of IMs and find one with this group. */
 	for (wl = pidgin_conv_windows_get_list(); wl != NULL; wl = wl->next) {
-		PidginWindow *win2;
+		PidginConvWindow *win2;
 		PidginConversation *conv2;
 		PurpleGroup *group2 = NULL;
 
@@ -11085,7 +11085,7 @@
 
 	/* Go through the list of IMs and find one with this group. */
 	for (wins = pidgin_conv_windows_get_list(); wins != NULL; wins = wins->next) {
-		PidginWindow *win2;
+		PidginConvWindow *win2;
 		PidginConversation *conv2;
 
 		win2 = wins->data;
@@ -11357,3 +11357,40 @@
 
 	return colors;
 }
+
+/**************************************************************************
+ * PidginConvWindow GBoxed code
+ **************************************************************************/
+static PidginConvWindow *
+pidgin_conv_window_ref(PidginConvWindow *win)
+{
+	g_return_val_if_fail(win != NULL, NULL);
+
+	win->box_count++;
+
+	return win;
+}
+
+static void
+pidgin_conv_window_unref(PidginConvWindow *win)
+{
+	g_return_if_fail(win != NULL);
+	g_return_if_fail(win->box_count >= 0);
+
+	if (!win->box_count--)
+		pidgin_conv_window_destroy(win);
+}
+
+GType
+pidgin_conv_window_get_type(void)
+{
+	static GType type = 0;
+
+	if (type == 0) {
+		type = g_boxed_type_register_static("PidginConvWindow",
+				(GBoxedCopyFunc)pidgin_conv_window_ref,
+				(GBoxedFreeFunc)pidgin_conv_window_unref);
+	}
+
+	return type;
+}

mercurial