aboutsummaryrefslogtreecommitdiffstats
path: root/src/empathy-status-icon.c
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2009-01-31 01:07:26 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2009-01-31 01:07:26 +0800
commit3eb84c8a0312fd0d1be89b091d8d6a4dd315d3d9 (patch)
tree493b443b93bdd6d75d4386c8299a4b5f5e9c39bb /src/empathy-status-icon.c
parent973bc4d1197ab108f0236ac2baf48678f20fb2aa (diff)
downloadgsoc2013-empathy-3eb84c8a0312fd0d1be89b091d8d6a4dd315d3d9.tar
gsoc2013-empathy-3eb84c8a0312fd0d1be89b091d8d6a4dd315d3d9.tar.gz
gsoc2013-empathy-3eb84c8a0312fd0d1be89b091d8d6a4dd315d3d9.tar.bz2
gsoc2013-empathy-3eb84c8a0312fd0d1be89b091d8d6a4dd315d3d9.tar.lz
gsoc2013-empathy-3eb84c8a0312fd0d1be89b091d8d6a4dd315d3d9.tar.xz
gsoc2013-empathy-3eb84c8a0312fd0d1be89b091d8d6a4dd315d3d9.tar.zst
gsoc2013-empathy-3eb84c8a0312fd0d1be89b091d8d6a4dd315d3d9.zip
Implement a logic for disabling notifications when away.
svn path=/trunk/; revision=2282
Diffstat (limited to 'src/empathy-status-icon.c')
-rw-r--r--src/empathy-status-icon.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/empathy-status-icon.c b/src/empathy-status-icon.c
index a1d3704ea..ea407fd81 100644
--- a/src/empathy-status-icon.c
+++ b/src/empathy-status-icon.c
@@ -222,7 +222,10 @@ status_icon_event_added_cb (EmpathyEventManager *manager,
status_icon_update_icon (icon);
status_icon_update_tooltip (icon);
- status_icon_update_notification (icon);
+
+ if (empathy_notification_should_show ()) {
+ status_icon_update_notification (icon);
+ }
if (!priv->blink_timeout) {
priv->blink_timeout = g_timeout_add (BLINK_TIMEOUT,
@@ -246,6 +249,10 @@ status_icon_event_removed_cb (EmpathyEventManager *manager,
status_icon_update_tooltip (icon);
status_icon_update_icon (icon);
+
+ /* update notification anyway, as it's safe and we might have been
+ * changed presence in the meanwhile
+ */
status_icon_update_notification (icon);
if (!priv->event && priv->blink_timeout) {
@@ -325,8 +332,20 @@ status_icon_toggle_visibility (EmpathyStatusIcon *icon)
static void
status_icon_idle_notify_cb (EmpathyStatusIcon *icon)
{
+ EmpathyStatusIconPriv *priv = GET_PRIV (icon);
+
status_icon_update_icon (icon);
status_icon_update_tooltip (icon);
+
+ if (!empathy_notification_should_show ()) {
+ /* dismiss the outstanding notification if present */
+
+ if (priv->notification) {
+ notify_notification_close (priv->notification, NULL);
+ g_object_unref (priv->notification);
+ priv->notification = NULL;
+ }
+ }
}
static gboolean