From 52a58e63cb039338d3365c83cb13e20acefba083 Mon Sep 17 00:00:00 2001 From: Juha Kautto Date: Wed, 01 Jun 2011 12:26:22 +0000 Subject: fixed Bug 7552 - Orage reminder duplicates infinitely When using default timezone floating, reminders repeated and never ended. Fixed this and prevented using floating as the default value. Using UTC instead. diff --git a/src/ical-code.c b/src/ical-code.c index c080bf2..e726103 100644 --- a/src/ical-code.c +++ b/src/ical-code.c @@ -233,7 +233,7 @@ gboolean xfical_set_local_timezone(gboolean testing) } /* - * Basically standard says that timezone should be added alwasy + * Basically standard says that timezone should be added always * when it is used, but in real life these are not needed since * all systems have their own timezone data, so let's save time * and space and comment this out. @@ -2587,7 +2587,7 @@ static alarm_struct *process_alarm_trigger(icalcomponent *c rel = icalparameter_get_related(trg_related_par); else rel = ICAL_RELATED_START; - per = ic_get_period(c, FALSE); + per = ic_get_period(c, TRUE); next_alarm_time = count_alarm_time(per, cur_time, trg.duration, rel); alarm_start_diff = icaltime_subtract(per.stime, next_alarm_time); /* we only have ctime for TODOs and only if todo has been completed. diff --git a/src/parameters.c b/src/parameters.c index 38407da..462fce2 100644 --- a/src/parameters.c +++ b/src/parameters.c @@ -440,7 +440,7 @@ static void timezone_button_clicked(GtkButton *button, gpointer user_data) if (!ORAGE_STR_EXISTS(g_par.local_timezone)) { g_warning("timezone pressed: local timezone missing"); - g_par.local_timezone = g_strdup("floating"); + g_par.local_timezone = g_strdup("UTC"); } if (orage_timezone_button_clicked(button, GTK_WINDOW(itf->orage_dialog) , &g_par.local_timezone, TRUE, g_par.local_timezone)) @@ -501,16 +501,12 @@ static void create_parameter_dialog_main_setup_tab(Itf *dialog) , dialog->timezone_frame, FALSE, FALSE, 5); dialog->timezone_button = gtk_button_new(); - if (g_par.local_timezone) { - gtk_button_set_label(GTK_BUTTON(dialog->timezone_button) - , _(g_par.local_timezone)); - } - else { /* we should never arrive here */ - g_warning("parameters: timezone not set."); - g_par.local_timezone = g_strdup("floating"); - gtk_button_set_label(GTK_BUTTON(dialog->timezone_button) - , _("floating")); + if (!ORAGE_STR_EXISTS(g_par.local_timezone)) { + g_warning("parameters: local timezone missing"); + g_par.local_timezone = g_strdup("UTC"); } + gtk_button_set_label(GTK_BUTTON(dialog->timezone_button) + , _(g_par.local_timezone)); gtk_box_pack_start(GTK_BOX(vbox) , dialog->timezone_button, FALSE, FALSE, 5); gtk_tooltips_set_tip(dialog->Tooltips, dialog->timezone_button @@ -1117,7 +1113,7 @@ static void init_default_timezone(void) if (ORAGE_STR_EXISTS(g_par.local_timezone)) g_message(_("Default timezone set to %s."), g_par.local_timezone); else { - g_par.local_timezone = g_strdup("floating"); + g_par.local_timezone = g_strdup("UTC"); g_message(_("Default timezone not found, please, set it manually.")); } } diff --git a/src/timezone_selection.c b/src/timezone_selection.c index 1bcb5be..518b83d 100644 --- a/src/timezone_selection.c +++ b/src/timezone_selection.c @@ -307,16 +307,31 @@ gboolean orage_timezone_button_clicked(GtkButton *button, GtkWindow *parent tree = tz_button_create_view(details, store); /* show it */ - if (check_ical) - window = gtk_dialog_new_with_buttons(_("Pick timezone") - , parent - , GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT - , _("Change mode"), 1 - , _("UTC"), 2 - , _("floating"), 3 - , _(local_tz), 4 - , GTK_STOCK_OK, GTK_RESPONSE_ACCEPT - , NULL); + if (check_ical) { + if (local_tz == *tz) + /* We are actually setting the g_par parameter. In other words + we are setting the global default timezone for Orage. This is + done very seldom and we do not want to allow "floating" here. + This test is ugly, but it is not worth an extra parameter. */ + window = gtk_dialog_new_with_buttons(_("Pick timezone") + , parent + , GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT + , _("Change mode"), 1 + , _("UTC"), 2 + , _(local_tz), 4 + , GTK_STOCK_OK, GTK_RESPONSE_ACCEPT + , NULL); + else /* this is normal appointment */ + window = gtk_dialog_new_with_buttons(_("Pick timezone") + , parent + , GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT + , _("Change mode"), 1 + , _("UTC"), 2 + , _("floating"), 3 + , _(local_tz), 4 + , GTK_STOCK_OK, GTK_RESPONSE_ACCEPT + , NULL); + } else window = gtk_dialog_new_with_buttons(_("Pick timezone") , parent -- cgit