aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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));
}