Mark messages as read, when Nheko gets focused
fixes #235
2 files changed, 17 insertions, 4 deletions
diff --git a/resources/qml/MessageView.qml b/resources/qml/MessageView.qml
index 13b4c82c..35b5cac4 100644
--- a/resources/qml/MessageView.qml
+++ b/resources/qml/MessageView.qml
@@ -77,6 +77,19 @@ ListView {
}
}
+ Connections {
+ target: TimelineManager
+ onFocusChanged: readTimer.running = TimelineManager.isWindowFocused
+ }
+
+ Timer {
+ id: readTimer
+
+ // force current read index to update
+ onTriggered: chat.model.setCurrentIndex(chat.model.currentIndex)
+ interval: 1000
+ }
+
Component {
id: sectionHeader
@@ -193,7 +206,7 @@ ListView {
Connections {
target: chat
onMovementEnded: {
- if (y + height + 2 * chat.spacing > chat.contentY + timelineRoot.height && y < chat.contentY + timelineRoot.height)
+ if (y + height + 2 * chat.spacing > chat.contentY + chat.height && y < chat.contentY + chat.height)
chat.model.currentIndex = index;
}
diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index 0f35a290..5c904932 100644
--- a/src/timeline/TimelineModel.cpp
+++ b/src/timeline/TimelineModel.cpp
@@ -735,14 +735,14 @@ TimelineModel::updateLastMessage()
void
TimelineModel::setCurrentIndex(int index)
{
- if (!ChatPage::instance()->isActiveWindow())
- return;
-
auto oldIndex = idToIndex(currentId);
currentId = indexToId(index);
if (index != oldIndex)
emit currentIndexChanged(index);
+ if (!ChatPage::instance()->isActiveWindow())
+ return;
+
if (!currentId.startsWith("m")) {
auto oldReadIndex =
cache::getEventIndex(roomId().toStdString(), currentReadId.toStdString());
|