svn path=/trunk/; revision=2287
-notification_closed_idle_cb (EmpathyChatWindow *window)
+notification_closed_idle_cb (EmpathyChat *chat)
- EmpathyChatWindowPriv *priv = GET_PRIV (window);
-
- gtk_widget_grab_focus (priv->dialog);
+ empathy_chat_window_present_chat (chat);
return FALSE;
}
static void
chat_window_notification_closed_cb (NotifyNotification *notify,
return FALSE;
}
static void
chat_window_notification_closed_cb (NotifyNotification *notify,
- EmpathyChatWindow *window)
- EmpathyChatWindowPriv *priv = GET_PRIV (window);
int reason;
reason = notify_notification_get_closed_reason (notify);
int reason;
reason = notify_notification_get_closed_reason (notify);
- if (priv->notification) {
- g_object_unref (priv->notification);
- priv->notification = NULL;
- }
-
- g_idle_add ((GSourceFunc) notification_closed_idle_cb, window);
+ empathy_chat_window_present_chat (chat);
-show_or_update_notification (EmpathyMessage *message,
- EmpathyChatWindow *window)
+chat_window_show_or_update_notification (EmpathyMessage *message,
+ EmpathyChatWindow *window,
+ EmpathyChat *chat)
{
EmpathyContact *sender;
char *header;
{
EmpathyContact *sender;
char *header;
header, body, NULL);
notify_notification_set_icon_from_pixbuf (priv->notification, pixbuf);
} else {
header, body, NULL);
notify_notification_set_icon_from_pixbuf (priv->notification, pixbuf);
} else {
- priv->notification = notify_notification_new (header, body, NULL, priv->dialog);
+ priv->notification = notify_notification_new (header, body, NULL, NULL);
notify_notification_set_timeout (priv->notification, NOTIFY_EXPIRES_DEFAULT);
notify_notification_set_icon_from_pixbuf (priv->notification, pixbuf);
g_signal_connect (priv->notification, "closed",
notify_notification_set_timeout (priv->notification, NOTIFY_EXPIRES_DEFAULT);
notify_notification_set_icon_from_pixbuf (priv->notification, pixbuf);
g_signal_connect (priv->notification, "closed",
- G_CALLBACK (chat_window_notification_closed_cb), window);
+ G_CALLBACK (chat_window_notification_closed_cb), chat);
}
notify_notification_show (priv->notification, NULL);
}
notify_notification_show (priv->notification, NULL);
- show_or_update_notification (message, window);
+ chat_window_show_or_update_notification (message, window, chat);
}
if (has_focus && priv->current_chat == chat) {
}
if (has_focus && priv->current_chat == chat) {
empathy_dispatch_operation_approve (event->approval->operation);
}
empathy_dispatch_operation_approve (event->approval->operation);
}
+static void
+event_text_channel_process_func (EventPriv *event)
+{
+ EmpathyTpChat *tp_chat;
+
+ if (event->approval->handler != 0)
+ {
+ tp_chat = EMPATHY_TP_CHAT
+ (empathy_dispatch_operation_get_channel_wrapper (event->approval->operation));
+
+ g_signal_handler_disconnect (tp_chat, event->approval->handler);
+ event->approval->handler = 0;
+ }
+
+ empathy_dispatch_operation_approve (event->approval->operation);
+}
+
static EventPriv *
event_lookup_by_approval (EmpathyEventManager *manager,
EventManagerApproval *approval)
static EventPriv *
event_lookup_by_approval (EmpathyEventManager *manager,
EventManagerApproval *approval)
* queue. */
event = event_lookup_by_approval (approval->manager, approval);
* queue. */
event = event_lookup_by_approval (approval->manager, approval);
- if (event != NULL && event->inhibit)
+ if (event != NULL && event->inhibit && approval->handler != 0)
- g_signal_handlers_disconnect_by_func (tp_chat,
- event_manager_chat_message_received_cb, approval);
+ g_signal_handler_disconnect (tp_chat, approval->handler);
+ approval->handler = 0;
event_update (approval->manager, event, EMPATHY_IMAGE_NEW_MESSAGE, header, msg);
else
event_manager_add (approval->manager, sender, EMPATHY_IMAGE_NEW_MESSAGE, header,
event_update (approval->manager, event, EMPATHY_IMAGE_NEW_MESSAGE, header, msg);
else
event_manager_add (approval->manager, sender, EMPATHY_IMAGE_NEW_MESSAGE, header,
- msg, approval, event_channel_process_func, NULL);
+ msg, approval, event_text_channel_process_func, NULL);
EMPATHY_TP_CHAT (
empathy_dispatch_operation_get_channel_wrapper (operation));
EMPATHY_TP_CHAT (
empathy_dispatch_operation_get_channel_wrapper (operation));
- g_signal_connect (tp_chat, "message-received",
+ approval->handler = g_signal_connect (tp_chat, "message-received",
G_CALLBACK (event_manager_chat_message_received_cb), approval);
}
G_CALLBACK (event_manager_chat_message_received_cb), approval);
}