static void hide_conv(PidginConversation *gtkconv, gboolean closetimer) { GList *list; purple_signal_emit(pidgin_conversations_get_handle(), "conversation-hiding", gtkconv); for (list = g_list_copy(gtkconv->convs); list; list = g_list_delete_link(list, list)) { PurpleConversation *conv = list->data; if (closetimer) { guint timer = GPOINTER_TO_INT(purple_conversation_get_data(conv, "close-timer")); if (timer) purple_timeout_remove(timer); timer = purple_timeout_add_seconds(CLOSE_CONV_TIMEOUT_SECS, close_already, conv); purple_conversation_set_data(conv, "close-timer", GINT_TO_POINTER(timer)); } #if 0 /* I will miss you */ purple_conversation_set_ui_ops(conv, NULL); #else pidgin_conv_window_remove_gtkconv(gtkconv->win, gtkconv); pidgin_conv_window_add_gtkconv(hidden_convwin, gtkconv); #endif } }
static void stroke_new_win(GtkWidget *widget, void *data) { PidginWindow *new_win, *old_win; PurpleConversation *conv; conv = (PurpleConversation *)data; old_win = PIDGIN_CONVERSATION(conv)->win; if (pidgin_conv_window_get_gtkconv_count(old_win) <= 1) return; new_win = pidgin_conv_window_new(); pidgin_conv_window_remove_gtkconv(old_win, PIDGIN_CONVERSATION(conv)); pidgin_conv_window_add_gtkconv(new_win, PIDGIN_CONVERSATION(conv)); pidgin_conv_window_show(new_win); }