aboutsummaryrefslogtreecommitdiffstats
path: root/calendar
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2009-10-05 19:14:02 +0800
committerMilan Crha <mcrha@redhat.com>2009-10-05 19:14:02 +0800
commit2db9eff43ee816ad22b00a3808d6b4e7f0df228b (patch)
tree3922efce021d27b11f38de2b8abeb13979cef074 /calendar
parentee3c7ce4e660bcaa8a7687bcb3a455507bfd9cfa (diff)
downloadgsoc2013-evolution-2db9eff43ee816ad22b00a3808d6b4e7f0df228b.tar.gz
gsoc2013-evolution-2db9eff43ee816ad22b00a3808d6b4e7f0df228b.tar.zst
gsoc2013-evolution-2db9eff43ee816ad22b00a3808d6b4e7f0df228b.zip
Bug #594373 - Calendar notifications are not cleared from system tray
Diffstat (limited to 'calendar')
-rw-r--r--calendar/gui/alarm-notify/alarm-queue.c35
1 files changed, 18 insertions, 17 deletions
diff --git a/calendar/gui/alarm-notify/alarm-queue.c b/calendar/gui/alarm-notify/alarm-queue.c
index 5c4959f2c6..53963da5eb 100644
--- a/calendar/gui/alarm-notify/alarm-queue.c
+++ b/calendar/gui/alarm-notify/alarm-queue.c
@@ -937,7 +937,6 @@ typedef struct {
ECalComponent *comp;
ECal *client;
ECalView *query;
- GtkStatusIcon *tray_icon;
GdkPixbuf *image;
GtkTreeIter iter;
} TrayIconData;
@@ -975,7 +974,6 @@ free_tray_icon_data (TrayIconData *tray_data)
tray_data->cqa = NULL;
tray_data->alarm_id = NULL;
- tray_data->tray_icon = NULL;
tray_data->image = NULL;
g_free (tray_data);
@@ -1252,6 +1250,20 @@ notify_dialog_cb (AlarmNotifyResult result, gint snooze_mins, gpointer data)
return;
}
+static void
+remove_tray_icon (void)
+{
+ if (tray_blink_id > -1)
+ g_source_remove (tray_blink_id);
+ tray_blink_id = -1;
+
+ if (tray_icon) {
+ gtk_status_icon_set_visible (tray_icon, FALSE);
+ g_object_unref (tray_icon);
+ tray_icon = NULL;
+ }
+}
+
/* Callbacks. */
static gboolean
open_alarm_dialog (TrayIconData *tray_data)
@@ -1261,13 +1273,7 @@ open_alarm_dialog (TrayIconData *tray_data)
d(printf("%s:%d (open_alarm_dialog) \n",__FILE__, __LINE__));
qa = lookup_queued_alarm (tray_data->cqa, tray_data->alarm_id);
if (qa) {
-
- if (tray_blink_id > -1)
- g_source_remove (tray_blink_id);
- tray_blink_id = -1;
-
- g_object_unref (tray_icon);
- tray_icon = NULL;
+ remove_tray_icon ();
if (!alarm_notifications_dialog)
alarm_notifications_dialog = notified_alarms_dialog_new ();
@@ -1294,6 +1300,8 @@ open_alarm_dialog (TrayIconData *tray_data)
}
+ } else {
+ remove_tray_icon ();
}
return TRUE;
@@ -1313,13 +1321,8 @@ tray_icon_clicked_cb (GtkWidget *widget, GdkEventButton *event, gpointer user_da
return TRUE;
} else if (event->button == 3) {
d(printf("%s:%d (tray_icon_clicked_cb) - right click\n",__FILE__, __LINE__));
- if (tray_blink_id > -1)
- g_source_remove (tray_blink_id);
- tray_blink_id = -1;
- gtk_status_icon_set_visible (tray_icon, FALSE);
- g_object_unref (tray_icon);
- tray_icon = NULL;
+ remove_tray_icon ();
return TRUE;
}
}
@@ -1458,7 +1461,6 @@ display_notification (time_t trigger, CompQueuedAlarms *cqa,
G_CALLBACK (icon_activated), NULL);
g_signal_connect (G_OBJECT (tray_icon), "popup-menu",
G_CALLBACK (popup_menu), NULL);
-
}
current_zone = config_data_get_timezone ();
@@ -1484,7 +1486,6 @@ display_notification (time_t trigger, CompQueuedAlarms *cqa,
tray_data->blink_state = FALSE;
tray_data->snooze_set = FALSE;
g_object_ref (tray_data->client);
- tray_data->tray_icon = tray_icon;
/* Task to add tray_data to the global tray_icon_list */
tray_list_add_new (tray_data);