From ce6f8bf85b54640b467c59318b7506e4db18bd83 Mon Sep 17 00:00:00 2001
From: Lukas Fleischer <lfleischer@calcurse.org>
Date: Sun, 25 Dec 2022 16:30:21 -0500
Subject: Extend default description to all item types

Show default description "(empty description)" for all types of items
(appointments, events, recurring appointments/events, TODOs).

Follow-up to 7b350ac (Add text for displaying empty event description,
2022-06-21).

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
---
 src/day.c     | 25 +++++++++++++++----------
 src/ui-todo.c | 16 +++++++++-------
 2 files changed, 24 insertions(+), 17 deletions(-)

(limited to 'src')

diff --git a/src/day.c b/src/day.c
index a6f338b..a86a91d 100644
--- a/src/day.c
+++ b/src/day.c
@@ -198,16 +198,12 @@ static void day_add_item(int type, time_t start, time_t order, union aptev_ptr i
 /* Get the message of an item. */
 char *day_item_get_mesg(struct day_item *day)
 {
-	char *message;
 	switch (day->type)
 	{
 	case APPT:
 		return day->item.apt->mesg;
 	case EVNT:
-		message = day->item.ev->mesg;
-		if (*message == '\0')
-			return EMPTY_EVENT_DESC_DEFAULT;
-		return message;
+		return day->item.ev->mesg;
 	case RECUR_APPT:
 		return day->item.rapt->mesg;
 	case RECUR_EVNT:
@@ -217,6 +213,15 @@ char *day_item_get_mesg(struct day_item *day)
 	}
 }
 
+/* Get the display message of an item. */
+char *day_item_get_display_mesg(struct day_item *day)
+{
+	char *msg = day_item_get_mesg(day);
+	if (msg[0] == '\0')
+		return EMPTY_EVENT_DESC_DEFAULT;
+	return msg;
+}
+
 /* Get the note attached to an item. */
 char *day_item_get_note(struct day_item *day)
 {
@@ -534,7 +539,7 @@ day_display_item(struct day_item *day, WINDOW *win, int incolor, int width,
 	if (width <= 0)
 		return;
 
-	char *mesg = day_item_get_mesg(day);
+	char *mesg = day_item_get_display_mesg(day);
 
 	ch_recur = (day->type == RECUR_EVNT) ? '*' : ' ';
 	ch_note = day_item_get_note(day) ? '>' : ' ';
@@ -633,11 +638,11 @@ void day_popup_item(struct day_item *day)
 			fclose(fp);
 			mem_free(notepath);
 
-			asprintf(&msg, "%s\n\n%s\n%s", day_item_get_mesg(day), note_heading, note);
+			asprintf(&msg, "%s\n\n%s\n%s", day_item_get_display_mesg(day), note_heading, note);
 			item_in_popup(NULL, NULL, msg, _("Event:"));
 			mem_free(msg);
 		} else {
-			item_in_popup(NULL, NULL, day_item_get_mesg(day), _("Event:"));
+			item_in_popup(NULL, NULL, day_item_get_display_mesg(day), _("Event:"));
 		}
 	} else if (day->type == APPT || day->type == RECUR_APPT) {
 		char a_st[100], a_end[100];
@@ -660,11 +665,11 @@ void day_popup_item(struct day_item *day)
 			fclose(fp);
 			mem_free(notepath);
 
-			asprintf(&msg, "%s\n\n%s\n%s", day_item_get_mesg(day), note_heading, note);
+			asprintf(&msg, "%s\n\n%s\n%s", day_item_get_display_mesg(day), note_heading, note);
 			item_in_popup(a_st, a_end, msg, _("Appointment:"));
 			mem_free(msg);
 		} else {
-			item_in_popup(a_st, a_end, day_item_get_mesg(day), _("Appointment:"));
+			item_in_popup(a_st, a_end, day_item_get_display_mesg(day), _("Appointment:"));
 		}
 	} else {
 		EXIT(_("unknown item type"));
diff --git a/src/ui-todo.c b/src/ui-todo.c
index c715250..b65b8d3 100644
--- a/src/ui-todo.c
+++ b/src/ui-todo.c
@@ -207,14 +207,16 @@ void ui_todo_draw(int n, WINDOW *win, int y, int hilt, void *cb_data)
 	if (hilt)
 		custom_apply_attr(win, ATTR_HIGHEST);
 
-	if (utf8_strwidth(todo->mesg) < width) {
-		mesg = todo->mesg;
-	} else {
+	mesg = todo->mesg;
+	if (mesg[0] == '\0')
+		mesg = EMPTY_EVENT_DESC_DEFAULT;
+
+	if (utf8_strwidth(mesg) >= width) {
 		width -= 3;
-		for (j = 0; todo->mesg[j] && width > 0; j++) {
-			if (!UTF8_ISCONT(todo->mesg[j]))
-				width -= utf8_width(&todo->mesg[j]);
-			buf[j] = todo->mesg[j];
+		for (j = 0; mesg[j] && width > 0; j++) {
+			if (!UTF8_ISCONT(mesg[j]))
+				width -= utf8_width(&mesg[j]);
+			buf[j] = mesg[j];
 		}
 		if (j) {
 			buf[j - 1] = '.';
-- 
cgit v1.2.3-70-g09d2