From e7f82bda1534880bf4c6695b9f074241dfc56ac3 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Wed, 18 Nov 2020 11:23:52 +0100 Subject: Matrix: fix read marker if the last message is a redact or edit --- src/QuickMedia.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/QuickMedia.cpp') diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp index 7cface4..20c2371 100644 --- a/src/QuickMedia.cpp +++ b/src/QuickMedia.cpp @@ -3516,6 +3516,11 @@ namespace QuickMedia { auto body_item_shared_ptr = tabs[MESSAGES_TAB_INDEX].body->items[body_item_index]; body_item_shared_ptr->set_description(text); body_item_shared_ptr->set_description_color(provisional_message_color); + + auto edit_body_item = message_to_body_item(current_room, message.get(), current_room->get_user_avatar_url(me), me->user_id); + edit_body_item->visible = false; + tabs[MESSAGES_TAB_INDEX].body->insert_items_by_timestamps({edit_body_item}); + //unreferenced_events.push_back(message); post_task_queue.push([this, ¤t_room, text, related_to_message, message, body_item_shared_ptr]() { ProvisionalMessage provisional_message; @@ -4549,6 +4554,8 @@ namespace QuickMedia { if(selected_tab == MESSAGES_TAB_INDEX && current_room && matrix->is_initial_sync_finished()) { BodyItem *last_visible_item = tabs[selected_tab].body->get_last_fully_visible_item(); + if(last_visible_item && tabs[selected_tab].body->is_last_item_fully_visible() && !tabs[selected_tab].body->items.empty()) + last_visible_item = tabs[selected_tab].body->items.back().get(); if(is_window_focused && chat_state != ChatState::URL_SELECTION && current_room && last_visible_item && !setting_read_marker && read_marker_timer.getElapsedTime().asMilliseconds() >= read_marker_timeout_ms) { Message *message = (Message*)last_visible_item->userdata; // TODO: What if two messages have the same timestamp? -- cgit v1.2.3