diff options
author | Xavier Claessens <xclaesse@src.gnome.org> | 2008-07-15 22:00:40 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2008-07-15 22:00:40 +0800 |
commit | 990ce28bd4ec033c6b378d9f1324159c137fc48e (patch) | |
tree | fbdecb7e3f45ae6ba774b99ac34061288ac431ae /libempathy-gtk | |
parent | a94c077818ed96fb9547f0cc9afd4d1f33c2bcde (diff) | |
download | gsoc2013-empathy-990ce28bd4ec033c6b378d9f1324159c137fc48e.tar gsoc2013-empathy-990ce28bd4ec033c6b378d9f1324159c137fc48e.tar.gz gsoc2013-empathy-990ce28bd4ec033c6b378d9f1324159c137fc48e.tar.bz2 gsoc2013-empathy-990ce28bd4ec033c6b378d9f1324159c137fc48e.tar.lz gsoc2013-empathy-990ce28bd4ec033c6b378d9f1324159c137fc48e.tar.xz gsoc2013-empathy-990ce28bd4ec033c6b378d9f1324159c137fc48e.tar.zst gsoc2013-empathy-990ce28bd4ec033c6b378d9f1324159c137fc48e.zip |
Add the contact from who the event comes in the EmpathyEvent struct.
svn path=/trunk/; revision=1246
Diffstat (limited to 'libempathy-gtk')
-rw-r--r-- | libempathy-gtk/empathy-event-manager.c | 30 | ||||
-rw-r--r-- | libempathy-gtk/empathy-event-manager.h | 7 |
2 files changed, 21 insertions, 16 deletions
diff --git a/libempathy-gtk/empathy-event-manager.c b/libempathy-gtk/empathy-event-manager.c index 0dcabda94..e6ddb1808 100644 --- a/libempathy-gtk/empathy-event-manager.c +++ b/libempathy-gtk/empathy-event-manager.c @@ -74,6 +74,11 @@ event_free (EventPriv *event) { g_free (event->public.icon_name); g_free (event->public.message); + + if (event->public.contact) { + g_object_unref (event->public.contact); + } + if (event->channel) { g_signal_handlers_disconnect_by_func (event->channel, event_remove, @@ -96,6 +101,7 @@ event_remove (EventPriv *event) static void event_manager_add (EmpathyEventManager *manager, + EmpathyContact *contact, const gchar *icon_name, const gchar *message, TpChannel *channel, @@ -106,6 +112,7 @@ event_manager_add (EmpathyEventManager *manager, EventPriv *event; event = g_slice_new0 (EventPriv); + event->public.contact = contact ? g_object_ref (contact) : NULL; event->public.icon_name = g_strdup (icon_name); event->public.message = g_strdup (message); event->manager = manager; @@ -161,8 +168,8 @@ event_manager_chat_message_received_cb (EmpathyTpChat *tp_chat, empathy_message_get_body (message)); channel = empathy_tp_chat_get_channel (tp_chat); - event_manager_add (manager, EMPATHY_IMAGE_NEW_MESSAGE, msg, channel, - event_channel_process_func, NULL); + event_manager_add (manager, sender, EMPATHY_IMAGE_NEW_MESSAGE, msg, + channel, event_channel_process_func, NULL); g_free (msg); } @@ -198,8 +205,8 @@ event_manager_filter_channel_cb (EmpathyDispatcher *dispatcher, msg = g_strdup_printf (_("Incoming call from %s"), empathy_contact_get_name (contact)); - event_manager_add (manager, EMPATHY_IMAGE_VOIP, msg, channel, - event_channel_process_func, NULL); + event_manager_add (manager, contact, EMPATHY_IMAGE_VOIP, msg, + channel, event_channel_process_func, NULL); g_free (msg); g_object_unref (contact); @@ -288,8 +295,8 @@ event_manager_filter_tube_cb (EmpathyDispatcher *dispatcher, empathy_contact_get_name (tube->initiator)); } - event_manager_add (manager, icon_name, msg, tube->channel, - event_tube_process_func, + event_manager_add (manager, tube->initiator, icon_name, msg, + tube->channel, event_tube_process_func, empathy_dispatcher_tube_ref (tube)); g_free (msg); @@ -298,11 +305,7 @@ event_manager_filter_tube_cb (EmpathyDispatcher *dispatcher, static void event_pending_subscribe_func (EventPriv *event) { - EmpathyContact *contact = EMPATHY_CONTACT (event->user_data); - - empathy_subscription_dialog_show (contact, NULL); - - g_object_unref (contact); + empathy_subscription_dialog_show (event->public.contact, NULL); event_remove (event); } @@ -333,9 +336,8 @@ event_manager_pendings_changed_cb (EmpathyContactList *list, g_string_append_printf (str, _("\nMessage: %s"), message); } - event_manager_add (manager, GTK_STOCK_DIALOG_QUESTION, str->str, NULL, - event_pending_subscribe_func, - g_object_ref (contact)); + event_manager_add (manager, contact, GTK_STOCK_DIALOG_QUESTION, str->str, + NULL, event_pending_subscribe_func, NULL); g_string_free (str, TRUE); } diff --git a/libempathy-gtk/empathy-event-manager.h b/libempathy-gtk/empathy-event-manager.h index a4da56aac..89cb74d63 100644 --- a/libempathy-gtk/empathy-event-manager.h +++ b/libempathy-gtk/empathy-event-manager.h @@ -25,6 +25,8 @@ #include <glib.h> #include <glib-object.h> +#include <libempathy/empathy-contact.h> + G_BEGIN_DECLS #define EMPATHY_TYPE_EVENT_MANAGER (empathy_event_manager_get_type ()) @@ -47,8 +49,9 @@ struct _EmpathyEventManagerClass { }; typedef struct { - gchar *icon_name; - gchar *message; + EmpathyContact *contact; + gchar *icon_name; + gchar *message; } EmpathyEvent; GType empathy_event_manager_get_type (void) G_GNUC_CONST; |