From a8acff9f7f78cee0402b2f9bcfc9ef398e6c9b34 Mon Sep 17 00:00:00 2001 From: Janik Rabe Date: Fri, 1 Feb 2019 10:42:16 +0200 Subject: [PATCH] CmdHistory: repeat unit if a larger unit changes In history and ghistory commands, repeat the smaller units when a larger unit changes. For example, if January 2019 is displayed immediately after January 2018, re-show the "January" label instead of only showing the year change. --- src/commands/CmdHistory.cpp | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/commands/CmdHistory.cpp b/src/commands/CmdHistory.cpp index 6a307c65e..1ab94dcc1 100644 --- a/src/commands/CmdHistory.cpp +++ b/src/commands/CmdHistory.cpp @@ -539,10 +539,13 @@ public: int last_m, last_d, last_y; last_dt.toYMD (last_y, last_m, last_d); - if ((y != last_y) || (lastTime == 0)) + bool y_changed = (y != last_y) || (lastTime == 0); + bool m_changed = (m != last_m) || (lastTime == 0); + + if (y_changed) view.set (row, 0, y); - if ((m != last_m) || (lastTime == 0)) + if (y_changed || m_changed) view.set (row, 1, Datetime::monthName (m)); view.set (row, 2, d); @@ -586,10 +589,13 @@ public: int last_m, last_d, last_y; last_dt.toYMD (last_y, last_m, last_d); - if ((y != last_y) || (lastTime == 0)) + bool y_changed = (y != last_y) || (lastTime == 0); + bool m_changed = (m != last_m) || (lastTime == 0); + + if (y_changed) view.set (row, 0, y); - if ((m != last_m) || (lastTime == 0)) + if (y_changed || m_changed) view.set (row, 1, Datetime::monthName (m)); view.set (row, 2, d); @@ -633,10 +639,13 @@ public: int last_m, last_d, last_y; last_dt.toYMD (last_y, last_m, last_d); - if ((y != last_y) || (lastTime == 0)) + bool y_changed = (y != last_y) || (lastTime == 0); + bool m_changed = (m != last_m) || (lastTime == 0); + + if (y_changed) view.set (row, 0, y); - if ((m != last_m) || (lastTime == 0)) + if (y_changed || m_changed) view.set (row, 1, Datetime::monthName (m)); view.set (row, 2, d); @@ -680,10 +689,13 @@ public: int last_m, last_d, last_y; last_dt.toYMD (last_y, last_m, last_d); - if ((y != last_y) || (lastTime == 0)) + bool y_changed = (y != last_y) || (lastTime == 0); + bool m_changed = (m != last_m) || (lastTime == 0); + + if (y_changed) view.set (row, 0, y); - if ((m != last_m) || (lastTime == 0)) + if (y_changed || m_changed) view.set (row, 1, Datetime::monthName (m)); view.set (row, 2, d);