Merge pull request #1532 from Nheko-Reborn/issue1512
Add mark room as read option
2 files changed, 17 insertions, 2 deletions
diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index 752aedb0..fddd5700 100644
--- a/src/timeline/TimelineModel.cpp
+++ b/src/timeline/TimelineModel.cpp
@@ -1284,13 +1284,20 @@ TimelineModel::updateLastMessage()
void
TimelineModel::setCurrentIndex(int index)
{
+ setCurrentIndex(index, false);
+}
+
+void
+TimelineModel::setCurrentIndex(int index, bool ignoreInactiveState)
+{
auto oldIndex = idToIndex(currentId);
currentId = indexToId(index);
if (index != oldIndex)
emit currentIndexChanged(index);
- if (!QGuiApplication::focusWindow() || !QGuiApplication::focusWindow()->isActive() ||
- MainWindow::instance()->windowForRoom(roomId()) != QGuiApplication::focusWindow())
+ if (!ignoreInactiveState &&
+ (!QGuiApplication::focusWindow() || !QGuiApplication::focusWindow()->isActive() ||
+ MainWindow::instance()->windowForRoom(roomId()) != QGuiApplication::focusWindow()))
return;
if (!currentId.startsWith('m')) {
@@ -1562,6 +1569,12 @@ TimelineModel::markEventsAsRead(const std::vector<QString> &event_ids)
}
void
+TimelineModel::markRoomAsRead()
+{
+ setCurrentIndex(0, true);
+}
+
+void
TimelineModel::updateLastReadId(const QString ¤tRoomId)
{
if (currentRoomId == room_id_) {
diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h
index fd1a4396..64941920 100644
--- a/src/timeline/TimelineModel.h
+++ b/src/timeline/TimelineModel.h
@@ -386,9 +386,11 @@ public:
public slots:
void setCurrentIndex(int index);
+ void setCurrentIndex(int index, bool ignoreInactiveState);
int currentIndex() const { return idToIndex(currentId); }
void eventShown();
void markEventsAsRead(const std::vector<QString> &event_ids);
+ void markRoomAsRead();
void updateLastReadId(const QString ¤tRoomId);
void lastReadIdOnWindowFocus();
void checkAfterFetch();
|