src/gtkconv.c

changeset 11812
1dc4177239f9
parent 11805
eb030ba45cfd
child 11815
e8e4b85b0377
equal deleted inserted replaced
11811:62e122478756 11812:1dc4177239f9
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);

mercurial