summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-09-24 16:58:48 +0200
committerDanilo M. <danix@danix.xyz>2026-09-24 16:58:48 +0200
commit06cfa9352e1da8ffb44e35a28523755db8dbf7e2 (patch)
treea36ee4a5b0d6370148e0a096a5d5cc8e1a484f8e
parentc015b7efe076222d34e1a32e1cfa8457be1cf309 (diff)
downloadqtmaildir-06cfa9352e1da8ffb44e35a28523755db8dbf7e2.tar.gz
qtmaildir-06cfa9352e1da8ffb44e35a28523755db8dbf7e2.zip
fix: swallow the calendar more-line double-click and clear the agenda selection
-rw-r--r--src/agendaview.cpp6
-rw-r--r--src/monthview.cpp10
2 files changed, 14 insertions, 2 deletions
diff --git a/src/agendaview.cpp b/src/agendaview.cpp
index 1808906..50f8a3f 100644
--- a/src/agendaview.cpp
+++ b/src/agendaview.cpp
@@ -73,6 +73,12 @@ void AgendaView::setItems(const QList<CalendarItem> &items)
void AgendaView::setSelected(int item)
{
+ // Headers carry -1 in kItemRole, so a bare loop would match the first
+ // header for "nothing selected" and leave the previous row highlighted.
+ if (item < 0) {
+ clearSelection();
+ return;
+ }
for (int r = 0; r < count(); ++r) {
if (this->item(r)->data(kItemRole).toInt() == item) {
setCurrentRow(r);
diff --git a/src/monthview.cpp b/src/monthview.cpp
index 7d0df3b..b1c5520 100644
--- a/src/monthview.cpp
+++ b/src/monthview.cpp
@@ -156,6 +156,8 @@ void MonthView::paintEvent(QPaintEvent *)
void MonthView::mousePressEvent(QMouseEvent *event)
{
+ if (event->button() != Qt::LeftButton)
+ return;
const MonthLayout l = layout();
const int cell = l.cellAt(event->position().toPoint());
if (cell < 0)
@@ -178,10 +180,14 @@ void MonthView::mouseDoubleClickEvent(QMouseEvent *event)
const int cell = l.cellAt(event->position().toPoint());
if (cell < 0)
return;
- // A double-click on a chip is two clicks on the chip, not a new event.
+ // A double-click on a chip, or on the "+N more" line, is two clicks on
+ // that thing, not a new event.
const QList<int> items = itemsPerCell(l)[cell];
- for (int slot = 0; slot < l.visibleChips(items.size()); ++slot)
+ const int shown = l.visibleChips(items.size());
+ for (int slot = 0; slot < shown; ++slot)
if (l.chipRect(cell, slot).contains(event->position().toPoint()))
return;
+ if (shown < items.size() && l.chipRect(cell, shown).contains(event->position().toPoint()))
+ return;
emit dayDoubleClicked(l.dateAt(cell));
}