Author: juha
Date: 2008-03-12 21:35:19 +0000 (Wed, 12 Mar 2008)
New Revision: 26678

Modified:
   xfcalendar/trunk/configure.in.in
   xfcalendar/trunk/src/appointment.c
   xfcalendar/trunk/src/appointment.h
   xfcalendar/trunk/src/event-list.c
   xfcalendar/trunk/src/ical-code.c
   xfcalendar/trunk/src/ical-code.h
   xfcalendar/trunk/src/mainbox.c
Log:
4.5.13.7
Bug 3917 - Todo without due date
Made it possible to have todo without due date



Modified: xfcalendar/trunk/configure.in.in
===================================================================
--- xfcalendar/trunk/configure.in.in    2008-03-12 10:19:10 UTC (rev 26677)
+++ xfcalendar/trunk/configure.in.in    2008-03-12 21:35:19 UTC (rev 26678)
@@ -9,7 +9,7 @@
 dnl
 
 dnl Version information
-m4_define([orage_version], [4.5.13.6-svn])
+m4_define([orage_version], [4.5.13.7-svn])
 
 m4_define([gtk_minimum_version], [2.6.0])
 m4_define([xfce_minimum_version], [4.4.0])

Modified: xfcalendar/trunk/src/appointment.c
===================================================================
--- xfcalendar/trunk/src/appointment.c  2008-03-12 10:19:10 UTC (rev 26677)
+++ xfcalendar/trunk/src/appointment.c  2008-03-12 21:35:19 UTC (rev 26678)
@@ -186,15 +186,24 @@
 
 static void set_time_sensitivity(appt_win *apptw)
 {
-    gboolean dur_act, allDay_act, completed_act;
+    gboolean dur_act, allDay_act, comp_act, due_act;
 
     dur_act = gtk_toggle_button_get_active(
-           GTK_TOGGLE_BUTTON(apptw->Dur_checkbutton));
+            GTK_TOGGLE_BUTTON(apptw->Dur_checkbutton));
     allDay_act = gtk_toggle_button_get_active(
-           GTK_TOGGLE_BUTTON(apptw->AllDay_checkbutton));
-    completed_act = gtk_toggle_button_get_active(
+            GTK_TOGGLE_BUTTON(apptw->AllDay_checkbutton));
+    comp_act = gtk_toggle_button_get_active(
             GTK_TOGGLE_BUTTON(apptw->Completed_checkbutton));
+        /* todo can be without due date, but event always has end date.
+         * Journal has none, but we show it similarly than event */
+    if (gtk_toggle_button_get_active(
+            GTK_TOGGLE_BUTTON(apptw->Type_todo_rb)))
+        due_act = gtk_toggle_button_get_active(
+                GTK_TOGGLE_BUTTON(apptw->End_checkbutton));
+    else 
+        due_act = TRUE;
 
+    gtk_widget_set_sensitive(apptw->Dur_checkbutton, due_act);
     if (allDay_act) {
         gtk_widget_set_sensitive(apptw->StartTime_spin_hh, FALSE);
         gtk_widget_set_sensitive(apptw->StartTime_spin_mm, FALSE);
@@ -209,22 +218,17 @@
         gtk_widget_set_sensitive(apptw->CompletedTime_spin_hh, FALSE);
         gtk_widget_set_sensitive(apptw->CompletedTime_spin_mm, FALSE);
         gtk_widget_set_sensitive(apptw->CompletedTimezone_button, FALSE);
+        gtk_widget_set_sensitive(apptw->CompletedDate_button, comp_act);
         if (dur_act) {
             gtk_widget_set_sensitive(apptw->EndDate_button, FALSE);
-            gtk_widget_set_sensitive(apptw->Dur_spin_dd, TRUE);
-            gtk_widget_set_sensitive(apptw->Dur_spin_dd_label, TRUE);
+            gtk_widget_set_sensitive(apptw->Dur_spin_dd, due_act);
+            gtk_widget_set_sensitive(apptw->Dur_spin_dd_label, due_act);
         }
         else {
-            gtk_widget_set_sensitive(apptw->EndDate_button, TRUE);
+            gtk_widget_set_sensitive(apptw->EndDate_button, due_act);
             gtk_widget_set_sensitive(apptw->Dur_spin_dd, FALSE);
             gtk_widget_set_sensitive(apptw->Dur_spin_dd_label, FALSE);
         }
-        if (completed_act) {
-            gtk_widget_set_sensitive(apptw->CompletedDate_button, TRUE);
-        }
-        else {
-            gtk_widget_set_sensitive(apptw->CompletedDate_button, FALSE);
-        }
     }
     else {
         gtk_widget_set_sensitive(apptw->StartTime_spin_hh, TRUE);
@@ -235,18 +239,18 @@
             gtk_widget_set_sensitive(apptw->EndTime_spin_hh, FALSE);
             gtk_widget_set_sensitive(apptw->EndTime_spin_mm, FALSE);
             gtk_widget_set_sensitive(apptw->EndTimezone_button, FALSE);
-            gtk_widget_set_sensitive(apptw->Dur_spin_dd, TRUE);
-            gtk_widget_set_sensitive(apptw->Dur_spin_dd_label, TRUE);
-            gtk_widget_set_sensitive(apptw->Dur_spin_hh, TRUE);
-            gtk_widget_set_sensitive(apptw->Dur_spin_hh_label, TRUE);
-            gtk_widget_set_sensitive(apptw->Dur_spin_mm, TRUE);
-            gtk_widget_set_sensitive(apptw->Dur_spin_mm_label, TRUE);
+            gtk_widget_set_sensitive(apptw->Dur_spin_dd, due_act);
+            gtk_widget_set_sensitive(apptw->Dur_spin_dd_label, due_act);
+            gtk_widget_set_sensitive(apptw->Dur_spin_hh, due_act);
+            gtk_widget_set_sensitive(apptw->Dur_spin_hh_label, due_act);
+            gtk_widget_set_sensitive(apptw->Dur_spin_mm, due_act);
+            gtk_widget_set_sensitive(apptw->Dur_spin_mm_label, due_act);
         }
         else {
-            gtk_widget_set_sensitive(apptw->EndDate_button, TRUE);
-            gtk_widget_set_sensitive(apptw->EndTime_spin_hh, TRUE);
-            gtk_widget_set_sensitive(apptw->EndTime_spin_mm, TRUE);
-            gtk_widget_set_sensitive(apptw->EndTimezone_button, TRUE);
+            gtk_widget_set_sensitive(apptw->EndDate_button, due_act);
+            gtk_widget_set_sensitive(apptw->EndTime_spin_hh, due_act);
+            gtk_widget_set_sensitive(apptw->EndTime_spin_mm, due_act);
+            gtk_widget_set_sensitive(apptw->EndTimezone_button, due_act);
             gtk_widget_set_sensitive(apptw->Dur_spin_dd, FALSE);
             gtk_widget_set_sensitive(apptw->Dur_spin_dd_label, FALSE);
             gtk_widget_set_sensitive(apptw->Dur_spin_hh, FALSE);
@@ -254,18 +258,10 @@
             gtk_widget_set_sensitive(apptw->Dur_spin_mm, FALSE);
             gtk_widget_set_sensitive(apptw->Dur_spin_mm_label, FALSE);
         }
-        if (completed_act) {
-            gtk_widget_set_sensitive(apptw->CompletedDate_button, TRUE);
-            gtk_widget_set_sensitive(apptw->CompletedTime_spin_hh, TRUE);
-            gtk_widget_set_sensitive(apptw->CompletedTime_spin_mm, TRUE);
-            gtk_widget_set_sensitive(apptw->CompletedTimezone_button, TRUE);
-        }
-        else {
-            gtk_widget_set_sensitive(apptw->CompletedDate_button, FALSE);
-            gtk_widget_set_sensitive(apptw->CompletedTime_spin_hh, FALSE);
-            gtk_widget_set_sensitive(apptw->CompletedTime_spin_mm, FALSE);
-            gtk_widget_set_sensitive(apptw->CompletedTimezone_button, FALSE);
-        }
+        gtk_widget_set_sensitive(apptw->CompletedDate_button, comp_act);
+        gtk_widget_set_sensitive(apptw->CompletedTime_spin_hh, comp_act);
+        gtk_widget_set_sensitive(apptw->CompletedTime_spin_mm, comp_act);
+        gtk_widget_set_sensitive(apptw->CompletedTimezone_button, comp_act);
     }
 }
 
@@ -352,6 +348,7 @@
         gtk_label_set_text(GTK_LABEL(apptw->End_label), _("End"));
         gtk_widget_show(apptw->Availability_label);
         gtk_widget_show(apptw->Availability_cb);
+        gtk_widget_hide(apptw->End_checkbutton);
         gtk_widget_hide(apptw->Completed_label);
         gtk_widget_hide(apptw->Completed_hbox);
         gtk_widget_set_sensitive(apptw->Alarm_notebook_page, TRUE);
@@ -369,6 +366,7 @@
         gtk_label_set_text(GTK_LABEL(apptw->End_label), _("Due"));
         gtk_widget_hide(apptw->Availability_label);
         gtk_widget_hide(apptw->Availability_cb);
+        gtk_widget_show(apptw->End_checkbutton);
         gtk_widget_show(apptw->Completed_label);
         gtk_widget_show(apptw->Completed_hbox);
         gtk_widget_set_sensitive(apptw->Alarm_notebook_page, TRUE);
@@ -386,6 +384,7 @@
         gtk_label_set_text(GTK_LABEL(apptw->End_label), _("End"));
         gtk_widget_hide(apptw->Availability_label);
         gtk_widget_hide(apptw->Availability_cb);
+        gtk_widget_hide(apptw->End_checkbutton);
         gtk_widget_hide(apptw->Completed_label);
         gtk_widget_hide(apptw->Completed_hbox);
         gtk_widget_set_sensitive(apptw->Alarm_notebook_page, FALSE);
@@ -398,6 +397,7 @@
         gtk_widget_set_sensitive(apptw->EndTime_hbox, FALSE);
         gtk_widget_set_sensitive(apptw->Dur_hbox, FALSE);
     }
+    set_time_sensitivity(apptw); /* todo has different settings */
 }
 
 static void set_sound_sensitivity(appt_win *apptw)
@@ -511,20 +511,13 @@
     mark_appointment_changed((appt_win *)user_data);
 }
 
-static void appDur_checkbutton_clicked_cb(GtkCheckButton *cb
+static void app_time_checkbutton_clicked_cb(GtkCheckButton *cb
         , gpointer user_data)
 {
     set_time_sensitivity((appt_win *)user_data);
     mark_appointment_changed((appt_win *)user_data);
 }
 
-static void appCompleted_checkbutton_clicked_cb(GtkCheckButton *cb
-        , gpointer user_data)
-{
-    set_time_sensitivity((appt_win *)user_data);
-    mark_appointment_changed((appt_win *)user_data);
-}
-
 static void app_recur_checkbutton_clicked_cb(GtkCheckButton *checkbutton
         , gpointer user_data)
 {
@@ -697,12 +690,6 @@
     g_free(appSound_entry_filename);
 }
 
-static void on_appAllDay_clicked_cb(GtkCheckButton *cb, gpointer user_data)
-{
-    set_time_sensitivity((appt_win *)user_data);
-    mark_appointment_changed((appt_win *)user_data);
-}
-
 static void app_free_memory(appt_win *apptw)
 {
     /* remove myself from event list appointment monitoring list */
@@ -961,6 +948,8 @@
     /* end date and time. 
      * Note that timezone is kept upto date all the time 
      */ 
+    appt->use_due_time = gtk_toggle_button_get_active(
+            GTK_TOGGLE_BUTTON(apptw->End_checkbutton));
     current_t = orage_i18_date_to_tm_date(gtk_button_get_label(
             GTK_BUTTON(apptw->EndDate_button)));
     g_sprintf(endtime, "%02d:%02d"
@@ -1314,6 +1303,8 @@
         g_warning("fill_appt_window_times: starttime wrong %s", appt->uid);
 
     /* end time */
+    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
+            apptw->End_checkbutton), appt->use_due_time);
     if (strlen(appt->endtime) > 6 ) {
         tm_date = orage_icaltime_to_tm_time(appt->endtime, TRUE);
         enddate_to_display = orage_tm_date_to_i18_date(&tm_date);
@@ -2331,6 +2322,13 @@
 
     /* end time */
     apptw->End_label = gtk_label_new(_("End"));
+    apptw->End_hbox = gtk_hbox_new(FALSE, 0);
+    /* translators: leave some spaces after this so that it looks better on
+     * the screen */
+    apptw->End_checkbutton = 
+            gtk_check_button_new_with_mnemonic(_("Set      "));
+    gtk_box_pack_start(GTK_BOX(apptw->End_hbox)
+            , apptw->End_checkbutton, FALSE, FALSE, 0);
     apptw->EndDate_button = gtk_button_new();
     apptw->EndTime_spin_hh = gtk_spin_button_new_with_range(0, 23, 1);
     apptw->EndTime_spin_mm = gtk_spin_button_new_with_range(0, 59, 1);
@@ -2340,8 +2338,10 @@
             apptw->EndTime_spin_hh, 
             apptw->EndTime_spin_mm, 
             apptw->EndTimezone_button);
+    gtk_box_pack_end(GTK_BOX(apptw->End_hbox)
+            , apptw->EndTime_hbox, TRUE, TRUE, 0);
     orage_table_add_row(apptw->TableGeneral
-            , apptw->End_label, apptw->EndTime_hbox
+            , apptw->End_label, apptw->End_hbox
             , ++row, (GTK_SHRINK | GTK_FILL), (GTK_SHRINK | GTK_FILL));
 
     /* duration */
@@ -2450,7 +2450,7 @@
     g_signal_connect((gpointer)apptw->Type_journal_rb, "clicked"
             , G_CALLBACK(app_type_checkbutton_clicked_cb), apptw);
     g_signal_connect((gpointer)apptw->AllDay_checkbutton, "clicked"
-            , G_CALLBACK(on_appAllDay_clicked_cb), apptw);
+            , G_CALLBACK(app_time_checkbutton_clicked_cb), apptw);
     g_signal_connect((gpointer)apptw->StartDate_button, "clicked"
             , G_CALLBACK(on_Date_button_clicked_cb), apptw);
     g_signal_connect((gpointer)apptw->StartTime_spin_hh, "changed"
@@ -2459,6 +2459,8 @@
             , G_CALLBACK(on_app_spin_button_changed_cb), apptw);
     g_signal_connect((gpointer)apptw->StartTimezone_button, "clicked"
             , G_CALLBACK(on_appStartTimezone_clicked_cb), apptw);
+    g_signal_connect((gpointer)apptw->End_checkbutton, "clicked"
+            , G_CALLBACK(app_time_checkbutton_clicked_cb), apptw);
     g_signal_connect((gpointer)apptw->EndDate_button, "clicked"
             , G_CALLBACK(on_Date_button_clicked_cb), apptw);
     g_signal_connect((gpointer)apptw->EndTime_spin_hh, "changed"
@@ -2468,7 +2470,7 @@
     g_signal_connect((gpointer)apptw->EndTimezone_button, "clicked"
             , G_CALLBACK(on_appEndTimezone_clicked_cb), apptw);
     g_signal_connect((gpointer)apptw->Dur_checkbutton, "clicked"
-            , G_CALLBACK(appDur_checkbutton_clicked_cb), apptw);
+            , G_CALLBACK(app_time_checkbutton_clicked_cb), apptw);
     g_signal_connect((gpointer)apptw->Dur_spin_dd, "value-changed"
             , G_CALLBACK(on_app_spin_button_changed_cb), apptw);
     g_signal_connect((gpointer)apptw->Dur_spin_hh, "value-changed"
@@ -2476,7 +2478,7 @@
     g_signal_connect((gpointer)apptw->Dur_spin_mm, "value-changed"
             , G_CALLBACK(on_app_spin_button_changed_cb), apptw);
     g_signal_connect((gpointer)apptw->Completed_checkbutton, "clicked"
-            , G_CALLBACK(appCompleted_checkbutton_clicked_cb), apptw);
+            , G_CALLBACK(app_time_checkbutton_clicked_cb), apptw);
     g_signal_connect((gpointer)apptw->CompletedDate_button, "clicked"
             , G_CALLBACK(on_Date_button_clicked_cb), apptw);
     g_signal_connect((gpointer)apptw->CompletedTime_spin_hh, "changed"

Modified: xfcalendar/trunk/src/appointment.h
===================================================================
--- xfcalendar/trunk/src/appointment.h  2008-03-12 10:19:10 UTC (rev 26677)
+++ xfcalendar/trunk/src/appointment.h  2008-03-12 21:35:19 UTC (rev 26678)
@@ -64,14 +64,16 @@
     GtkWidget *Location_entry;
     GtkWidget *AllDay_checkbutton;
     GtkWidget *Start_label;
+    GtkWidget *StartTime_hbox;
     GtkWidget *StartDate_button;
-    GtkWidget *StartTime_hbox;
     GtkWidget *StartTime_spin_hh;
     GtkWidget *StartTime_spin_mm;
     GtkWidget *StartTimezone_button;
     GtkWidget *End_label;
+    GtkWidget *End_hbox;
+    GtkWidget *End_checkbutton;
+    GtkWidget *EndTime_hbox;
     GtkWidget *EndDate_button;
-    GtkWidget *EndTime_hbox;
     GtkWidget *EndTime_spin_hh;
     GtkWidget *EndTime_spin_mm;
     GtkWidget *EndTimezone_button;
@@ -87,8 +89,8 @@
     GtkWidget *Completed_label;
     GtkWidget *Completed_hbox;
     GtkWidget *Completed_checkbutton;
+    GtkWidget *CompletedTime_hbox;
     GtkWidget *CompletedDate_button;
-    GtkWidget *CompletedTime_hbox;
     GtkWidget *CompletedTime_spin_hh;
     GtkWidget *CompletedTime_spin_mm;
     GtkWidget *CompletedTimezone_button;

Modified: xfcalendar/trunk/src/event-list.c
===================================================================
--- xfcalendar/trunk/src/event-list.c   2008-03-12 10:19:10 UTC (rev 26677)
+++ xfcalendar/trunk/src/event-list.c   2008-03-12 21:35:19 UTC (rev 26678)
@@ -198,20 +198,30 @@
             result[i++] = ' ';
             i += append_time(result, start_ical_time, i);
             i = g_strlcat(result, "- ", 50);
-            if (!same_date) {
+            if (el->page == TODO_PAGE && !appt->use_due_time) {
+                i = g_strlcat(result, "...", 50);
+            }
+            else {
+                if (!same_date) {
+                    t = orage_icaltime_to_tm_time(appt->endtimecur, TRUE);
+                    tmp = orage_tm_date_to_i18_date(&t);
+                    i = g_strlcat(result, tmp, 50);
+                    result[i++] = ' ';
+                }
+                i += append_time(result, end_ical_time, i);
+            }
+        }
+        else {/* date only */
+            i = g_strlcat(result, " - ", 50);
+            if (el->page == TODO_PAGE && !appt->use_due_time) {
+                i = g_strlcat(result, "...", 50);
+            }
+            else {
                 t = orage_icaltime_to_tm_time(appt->endtimecur, TRUE);
                 tmp = orage_tm_date_to_i18_date(&t);
                 i = g_strlcat(result, tmp, 50);
-                result[i++] = ' ';
             }
-            i += append_time(result, end_ical_time, i);
         }
-        else {/* date only */
-            i = g_strlcat(result, " - ", 50);
-            t = orage_icaltime_to_tm_time(appt->endtimecur, TRUE);
-            tmp = orage_tm_date_to_i18_date(&t);
-            i = g_strlcat(result, tmp, 50);
-        }
     }
 
     return(result);
@@ -239,7 +249,7 @@
         , GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 {
     el_win *el = (el_win *)user_data;
-    gchar *stime, *etime;
+    gchar *stime, *etime, *stime2;
     gchar start_time[17], end_time[17];
     gint len;
 
@@ -303,7 +313,11 @@
             len = 8;
         }
         strncpy(start_time, stime, len);
-        strncpy(end_time, stime+len, len);
+        gtk_tree_model_get(model, iter, COL_TIME, &stime2, -1);
+        if (g_str_has_suffix(stime2, "- ...")) /* no due time */
+            strncpy(end_time, "99999", len); /* long in the future*/
+        else /* normal due time*/
+            strncpy(end_time, stime+len, len);
         if (strncmp(end_time, el->date_now, len) < 0) { /* gone */
             g_object_set(rend
                      , "foreground",        "Red"
@@ -385,7 +399,7 @@
         flags[4] = 'E';
     else if (appt->type == XFICAL_TYPE_TODO)
         flags[4] = 'T';
-    else
+    else /* Journal */
         flags[4] = 'J';
 
     flags[5] = '\0';

Modified: xfcalendar/trunk/src/ical-code.c
===================================================================
--- xfcalendar/trunk/src/ical-code.c    2008-03-12 10:19:10 UTC (rev 26677)
+++ xfcalendar/trunk/src/ical-code.c    2008-03-12 21:35:19 UTC (rev 26678)
@@ -1719,7 +1719,10 @@
         /* journal has no duration nor enddate or due 
          * journal also has no priority or transparent setting
          * journal also has not alarms or repeat settings */
-        if (appt->use_duration) { 
+        if (!appt->use_due_time && (appt->type == XFICAL_TYPE_TODO)) { 
+            ; /* done with due time */
+        }
+        else if (appt->use_duration) { 
             /* both event and todo can have duration */
             duration = icaldurationtype_from_int(appt->duration);
             icalcomponent_add_property(icmp
@@ -1834,8 +1837,8 @@
 }
 
  /* add EVENT/TODO/JOURNAL type ical appointment to ical file
-  * app: pointer to filled xfical_appt structure, which is stored
-  *      Caller is responsible for filling and allocating and freeing it.
+  * appt: pointer to filled xfical_appt structure, which is to be stored
+  *       Caller is responsible for filling and allocating and freeing it.
   *  returns: NULL if failed and new ical id if successfully added. 
   *           This ical id is owned by the routine. Do not deallocate it.
   *           It will be overwrittewritten by next invocation of this function.
@@ -2107,6 +2110,7 @@
             appt->end_tz_loc = "floating";
         }
     }
+    appt->use_due_time = TRUE;
 }
 
 static void process_completed_date(xfical_appt *appt, icalproperty *p)
@@ -2275,6 +2279,7 @@
             appt.allDay = FALSE;
             appt.starttime[0] = '\0';
             appt.start_tz_loc = NULL;
+            appt.use_due_time = FALSE;
             appt.endtime[0] = '\0';
             appt.end_tz_loc = NULL;
             appt.use_duration = FALSE;
@@ -2359,6 +2364,7 @@
                         break;
                     case ICAL_DURATION_PROPERTY:
                         appt.use_duration = TRUE;
+                        appt.use_due_time = TRUE;
                         duration = icalproperty_get_duration(p);
                         appt.duration = icaldurationtype_as_int(duration);
                         break;
@@ -4235,12 +4241,6 @@
     if (!ORAGE_STR_EXISTS(str))
         return(NULL);
     if (first) {
-        /* FIXME: it would be good idea to convert to upper case.
-         * then we should not need to care about case and search would
-         * be more user friendly.
-         * Note: This is not easy since UID must not be converted upper case
-         * or it will not be found.
-         */
         if (!g_file_get_contents(search_file, &text, &text_len, NULL)) {
             orage_message(250, P_N "Could not open Orage ical file (%s)", 
search_file);
             return(NULL);

Modified: xfcalendar/trunk/src/ical-code.h
===================================================================
--- xfcalendar/trunk/src/ical-code.h    2008-03-12 10:19:10 UTC (rev 26677)
+++ xfcalendar/trunk/src/ical-code.h    2008-03-12 21:35:19 UTC (rev 26678)
@@ -66,6 +66,7 @@
          */
     gchar  starttime[17];
     gchar *start_tz_loc;
+    gboolean use_due_time;  /* VTODO has due date or not */
     gchar  endtime[17];
     gchar *end_tz_loc;
     gboolean use_duration;

Modified: xfcalendar/trunk/src/mainbox.c
===================================================================
--- xfcalendar/trunk/src/mainbox.c      2008-03-12 10:19:10 UTC (rev 26677)
+++ xfcalendar/trunk/src/mainbox.c      2008-03-12 21:35:19 UTC (rev 26678)
@@ -383,18 +383,24 @@
             len = 15;
         else /* date only */
             len = 8;
-        if (strncmp(appt->endtimecur,  l_time, len) < 0) /* gone */
+        if (appt->use_due_time)
+            e_time = g_strndup(appt->endtimecur, len);
+        else
+            e_time = g_strdup("99999");
+        if (strncmp(e_time,  l_time, len) < 0) /* gone */
             gtk_widget_modify_fg(label, GTK_STATE_NORMAL, &cal->mRed);
-        else if (strncmp(appt->starttimecur,  l_time, len) <= 0
-             &&  strncmp(appt->endtimecur,  l_time, len) >= 0)
+        else if (strncmp(appt->starttimecur, l_time, len) <= 0
+             &&  strncmp(e_time, l_time, len) >= 0)
             gtk_widget_modify_fg(label, GTK_STATE_NORMAL, &cal->mBlue);
+        g_free(e_time);
     }
 
     /***** set hint *****/
     s_time = g_strdup(orage_icaltime_to_i18_time(appt->starttimecur));
-    e_time = g_strdup(orage_icaltime_to_i18_time(appt->endtimecur));
     if (todo) {
         na = _("Never");
+        e_time = g_strdup(appt->use_due_time
+                ? orage_icaltime_to_i18_time(appt->endtimecur) : na);
         c_time = g_strdup(appt->completed
                 ? orage_icaltime_to_i18_time(appt->completedtime) : na);
         tip = g_strdup_printf(_("Title: %s\n Start:\t%s\n Due:\t%s\n 
Done:\t%s\nNote:\n%s")
@@ -402,6 +408,7 @@
         g_free(c_time);
     }
     else { /* it is event */
+        e_time = g_strdup(orage_icaltime_to_i18_time(appt->endtimecur));
         tip = g_strdup_printf(_("Title: %s\n Start:\t%s\n End:\t%s\n 
Note:\n%s")
                 , appt->title, s_time, e_time, appt->note);
     }

_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to