From 1d5bf56cf9dc8aea4aa849ef5f0f580c1eae4cdd Mon Sep 17 00:00:00 2001 From: Thulinma Date: Thu, 16 Sep 2021 01:41:55 +0200 Subject: Improvements for linking to events - Fixes scrolling to an event not being reliable - Adds new /goto command that can open URLs, go to events, or go to message indexes. - Refactored ChatPage::handleMatrixUri() to contain the handling originally in Nheko::openLink(), and makes it return a boolean based on whether the URL was handled internally or not. --- src/timeline/TimelineModel.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/timeline/TimelineModel.cpp') diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp index e03c32a7..00f6d9df 100644 --- a/src/timeline/TimelineModel.cpp +++ b/src/timeline/TimelineModel.cpp @@ -1534,11 +1534,25 @@ void TimelineModel::showEvent(QString eventId) { using namespace std::chrono_literals; - if (idToIndex(eventId) != -1) { + // Direct to eventId + if (eventId[0] == '$') { + int idx = idToIndex(eventId); + if (idx == -1) { + nhlog::ui()->warn("Scrolling to event id {}, failed - no known index", + eventId.toStdString()); + return; + } eventIdToShow = eventId; emit scrollTargetChanged(); showEventTimer.start(50ms); + return; } + // to message index + eventId = indexToId(eventId.toInt()); + eventIdToShow = eventId; + emit scrollTargetChanged(); + showEventTimer.start(50ms); + return; } void -- cgit 1.5.1