--- a/pidgin/gtkmedia.c Mon Aug 24 19:23:56 2009 +0000 +++ b/pidgin/gtkmedia.c Tue Sep 01 19:51:07 2009 +0000 @@ -34,6 +34,7 @@ #include "gtkmedia.h" #include "gtkutils.h" +#include "pidginstock.h" #ifdef USE_VV #include "media-gst.h" @@ -499,13 +500,14 @@ } gtkmedia->priv->request_type = PURPLE_MEDIA_NONE; - - purple_request_accept_cancel(gtkmedia, _("Incoming Call"), - message, NULL, PURPLE_DEFAULT_ACTION_NONE, - (void*)account, gtkmedia->priv->screenname, NULL, - gtkmedia->priv->media, - pidgin_media_accept_cb, - pidgin_media_reject_cb); + if (!purple_media_accepted(gtkmedia->priv->media, NULL, NULL)) { + purple_request_accept_cancel(gtkmedia, _("Incoming Call"), + message, NULL, PURPLE_DEFAULT_ACTION_NONE, + (void*)account, gtkmedia->priv->screenname, + NULL, gtkmedia->priv->media, + pidgin_media_accept_cb, + pidgin_media_reject_cb); + } pidgin_media_emit_message(gtkmedia, message); g_free(message); return FALSE; @@ -609,6 +611,7 @@ GtkWidget *send_widget = NULL, *recv_widget = NULL, *button_widget = NULL; PurpleMediaSessionType type = purple_media_get_session_type(media, sid); + GdkPixbuf *icon = NULL; if (gtkmedia->priv->recv_widget == NULL && type & (PURPLE_MEDIA_RECV_VIDEO | @@ -742,6 +745,22 @@ gtkmedia); } + /* set the window icon according to the type */ + if (type & PURPLE_MEDIA_VIDEO) { + icon = gtk_widget_render_icon(GTK_WIDGET(gtkmedia), + PIDGIN_STOCK_TOOLBAR_VIDEO_CALL, + gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_LARGE), NULL); + } else if (type & PURPLE_MEDIA_AUDIO) { + icon = gtk_widget_render_icon(GTK_WIDGET(gtkmedia), + PIDGIN_STOCK_TOOLBAR_AUDIO_CALL, + gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_LARGE), NULL); + } + + if (icon) { + gtk_window_set_icon(GTK_WINDOW(gtkmedia), icon); + g_object_unref(icon); + } + gtk_widget_show(gtkmedia->priv->display); } @@ -772,6 +791,8 @@ pidgin_media_emit_message(gtkmedia, _("You have rejected the call.")); } else if (type == PURPLE_MEDIA_INFO_ACCEPT) { + if (local == TRUE) + purple_request_close_with_handle(gtkmedia); pidgin_media_set_state(gtkmedia, PIDGIN_MEDIA_ACCEPTED); pidgin_media_emit_message(gtkmedia, _("Call in progress.")); gtk_statusbar_push(GTK_STATUSBAR(gtkmedia->priv->statusbar),