]> git.0d.be Git - empathy.git/commitdiff
If EmpathyChat object does not exist when DnD a contact, create one. Fixes
authorXavier Claessens <xclaesse@gmail.com>
Fri, 19 Oct 2007 11:26:38 +0000 (11:26 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Fri, 19 Oct 2007 11:26:38 +0000 (11:26 +0000)
2007-10-19  Xavier Claessens  <xclaesse@gmail.com>

* libempathy-gtk/empathy-chat-window.c: If EmpathyChat object does not
exist when DnD a contact, create one. Fixes bug #483168.

svn path=/trunk/; revision=380

ChangeLog
libempathy-gtk/empathy-chat-window.c

index 9fa143c7f4cf1518c008d68e899372dd43846493..39bd99903ac584b402e6640bbf8e2958bedb5c3b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-10-19  Xavier Claessens  <xclaesse@gmail.com>
+
+       * libempathy-gtk/empathy-chat-window.c: If EmpathyChat object does not
+       exist when DnD a contact, create one. Fixes bug #483168.
+
 2007-10-19  Xavier Claessens  <xclaesse@gmail.com>
 
        * libempathy-gtk/empathy-status-icon.c: Fix crash when iconifying main
index a4d29b258b112cf2f01bf7e4fdf752ca01bec079..49950d3eab1c7d356d9aa6e5dd11bb4e74cbdd01 100644 (file)
@@ -1607,11 +1607,17 @@ chat_window_drag_data_received (GtkWidget        *widget,
                
                account = empathy_contact_get_account (contact);
                chat = empathy_chat_window_find_chat (account, id);
+               if (chat) {
+                       g_object_ref (chat);
+               } else {
+                       chat = EMPATHY_CHAT (empathy_private_chat_new_with_contact (contact));
+               }
                old_window = empathy_chat_get_window (chat);
                
                if (old_window) {
                        if (old_window == window) {
                                gtk_drag_finish (context, TRUE, FALSE, time);
+                               g_object_unref (chat);
                                return;
                        }
                        
@@ -1629,6 +1635,7 @@ chat_window_drag_data_received (GtkWidget        *widget,
                 * anyway with add_chat() and remove_chat().
                 */
                gtk_drag_finish (context, TRUE, FALSE, time);
+               g_object_unref (chat);
        }
        else if (info == DND_DRAG_TYPE_TAB) {
                EmpathyChat        *chat = NULL;