diff options
Diffstat (limited to 'src/empathy-chat-window.c')
-rw-r--r-- | src/empathy-chat-window.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c index b5e30d647..e1bd9075e 100644 --- a/src/empathy-chat-window.c +++ b/src/empathy-chat-window.c @@ -842,30 +842,34 @@ chat_window_new_message_cb (EmpathyChat *chat, EmpathyChatWindowPriv *priv; gboolean has_focus; gboolean needs_urgency; - gboolean action_sounds_enabled; EmpathyContact *sender; priv = GET_PRIV (window); has_focus = empathy_chat_window_has_focus (window); - empathy_conf_get_bool (empathy_conf_get (), - EMPATHY_PREFS_INPUT_FEEDBACK_SOUNDS, - &action_sounds_enabled); - /* always play sounds if enabled, otherwise only play if chat is not in focus */ - if (action_sounds_enabled || !has_focus || priv->current_chat != chat) { - sender = empathy_message_get_sender(message); - if (empathy_contact_is_user (sender) != FALSE) { + /* - if we're the sender, we play the sound if it's specified in the + * preferences and we're not away. + * - if we receive a message, we play the sound if it's specified in the + * prefereces and the window does not have focus on the chat receiving + * the message. + */ + + sender = empathy_message_get_sender (message); + + if (empathy_contact_is_user (sender) != FALSE) { + if (empathy_sound_pref_is_enabled (EMPATHY_PREFS_SOUNDS_OUTGOING_MESSAGE)) { ca_gtk_play_for_widget (GTK_WIDGET (priv->dialog), 0, - CA_PROP_EVENT_ID, "message-sent-instant", + CA_PROP_EVENT_ID, "message-sent-instant", CA_PROP_EVENT_DESCRIPTION, _("Sent an instant message"), - CA_PROP_APPLICATION_NAME, g_get_application_name (), NULL); - } else { + } + } else { + if ((!has_focus || priv->current_chat != chat) && + empathy_sound_pref_is_enabled (EMPATHY_PREFS_SOUNDS_INCOMING_MESSAGE)) { ca_gtk_play_for_widget (GTK_WIDGET (priv->dialog), 0, CA_PROP_EVENT_ID, "message-new-instant", CA_PROP_EVENT_DESCRIPTION, _("Received an instant message"), - CA_PROP_APPLICATION_NAME, g_get_application_name (), NULL); } } |