From a4b1c43fd11f07d46c207204db5e2cd8d11da7f3 Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Fri, 19 Oct 2007 11:26:38 +0000 Subject: If EmpathyChat object does not exist when DnD a contact, create one. Fixes 2007-10-19 Xavier Claessens * 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 | 5 +++++ libempathy-gtk/empathy-chat-window.c | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/ChangeLog b/ChangeLog index 9fa143c7f..39bd99903 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-10-19 Xavier Claessens + + * 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 * libempathy-gtk/empathy-status-icon.c: Fix crash when iconifying main diff --git a/libempathy-gtk/empathy-chat-window.c b/libempathy-gtk/empathy-chat-window.c index a4d29b258..49950d3ea 100644 --- a/libempathy-gtk/empathy-chat-window.c +++ b/libempathy-gtk/empathy-chat-window.c @@ -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; -- cgit v1.2.3