| 3685 { |
3685 { |
| 3686 GaimBlistNode *n = NULL; |
3686 GaimBlistNode *n = NULL; |
| 3687 GaimBuddy *b; |
3687 GaimBuddy *b; |
| 3688 GaimGtkConversation *gtkconv = NULL; |
3688 GaimGtkConversation *gtkconv = NULL; |
| 3689 |
3689 |
| 3690 memcpy(&n, sd->data, sizeof(n)); |
3690 n = *(GaimBlistNode **)sd->data; |
| 3691 |
3691 |
| 3692 if (GAIM_BLIST_NODE_IS_CONTACT(n)) |
3692 if (GAIM_BLIST_NODE_IS_CONTACT(n)) |
| 3693 b = gaim_contact_get_priority_buddy((GaimContact*)n); |
3693 b = gaim_contact_get_priority_buddy((GaimContact*)n); |
| 3694 else if (GAIM_BLIST_NODE_IS_BUDDY(n)) |
3694 else if (GAIM_BLIST_NODE_IS_BUDDY(n)) |
| 3695 b = (GaimBuddy*)n; |
3695 b = (GaimBuddy*)n; |
| 3711 gaim_gtk_conv_window_add_gtkconv(win, gtkconv); |
3711 gaim_gtk_conv_window_add_gtkconv(win, gtkconv); |
| 3712 } |
3712 } |
| 3713 } else { |
3713 } else { |
| 3714 c = gaim_conversation_new(GAIM_CONV_TYPE_IM, b->account, b->name); |
3714 c = gaim_conversation_new(GAIM_CONV_TYPE_IM, b->account, b->name); |
| 3715 gtkconv = GAIM_GTK_CONVERSATION(c); |
3715 gtkconv = GAIM_GTK_CONVERSATION(c); |
| 3716 gaim_gtk_conv_window_add_gtkconv(win, gtkconv); |
3716 if (gtkconv->win != win) |
| |
3717 { |
| |
3718 gaim_gtk_conv_window_remove_gtkconv(gtkconv->win, gtkconv); |
| |
3719 gaim_gtk_conv_window_add_gtkconv(win, gtkconv); |
| |
3720 } |
| 3717 } |
3721 } |
| 3718 |
3722 |
| 3719 /* Make this conversation the active conversation */ |
3723 /* Make this conversation the active conversation */ |
| 3720 gaim_gtk_conv_window_switch_gtkconv(win, gtkconv); |
3724 gaim_gtk_conv_window_switch_gtkconv(win, gtkconv); |
| 3721 |
3725 |
| 3739 } |
3743 } |
| 3740 else |
3744 else |
| 3741 { |
3745 { |
| 3742 c = gaim_conversation_new(GAIM_CONV_TYPE_IM, account, username); |
3746 c = gaim_conversation_new(GAIM_CONV_TYPE_IM, account, username); |
| 3743 gtkconv = GAIM_GTK_CONVERSATION(c); |
3747 gtkconv = GAIM_GTK_CONVERSATION(c); |
| 3744 gaim_gtk_conv_window_add_gtkconv(win, gtkconv); |
3748 if (gtkconv->win != win) |
| |
3749 { |
| |
3750 gaim_gtk_conv_window_remove_gtkconv(gtkconv->win, gtkconv); |
| |
3751 gaim_gtk_conv_window_add_gtkconv(win, gtkconv); |
| |
3752 } |
| 3745 } |
3753 } |
| 3746 } |
3754 } |
| 3747 |
3755 |
| 3748 if (username != NULL) g_free(username); |
3756 if (username != NULL) g_free(username); |
| 3749 if (protocol != NULL) g_free(protocol); |
3757 if (protocol != NULL) g_free(protocol); |