diff options
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r-- | src/QuickMedia.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp index fe2e7b0..7d7e97f 100644 --- a/src/QuickMedia.cpp +++ b/src/QuickMedia.cpp @@ -3427,6 +3427,8 @@ namespace QuickMedia { sf::Vertex gradient_points[4]; double gradient_inc = 0; + tabs[MESSAGES_TAB_INDEX].body->set_page_scroll(window_size.y); + bool initial_prev_messages_fetch = false; if(num_messages_in_room < 10 && matrix->is_initial_sync_finished()) { initial_prev_messages_fetch = true; @@ -3993,7 +3995,9 @@ namespace QuickMedia { if(previous_messages_future.ready()) { Messages new_messages = previous_messages_future.get(); fprintf(stderr, "Finished fetching older messages, num new messages: %zu\n", new_messages.size()); - // Ignore finished fetch of messages if it happened in another room. When we navigate back to the room we will get the messages again + bool move_to_bottom = false; + if(initial_prev_messages_fetch) + move_to_bottom = tabs[MESSAGES_TAB_INDEX].body->no_items_visible(); size_t num_new_messages = new_messages.size(); if(num_new_messages > 0) { BodyItem *selected_item = tabs[MESSAGES_TAB_INDEX].body->get_selected(); @@ -4011,9 +4015,10 @@ namespace QuickMedia { if(initial_prev_messages_fetch) { initial_prev_messages_fetch = false; // XXX: Hack to scroll up while keeping the selected item (usually the last one) visible - int selected_item = tabs[MESSAGES_TAB_INDEX].body->get_selected_item(); - tabs[MESSAGES_TAB_INDEX].body->select_first_item(); - tabs[MESSAGES_TAB_INDEX].body->set_selected_item(selected_item, false); + if(move_to_bottom) { + tabs[MESSAGES_TAB_INDEX].body->select_last_item(); + tabs[MESSAGES_TAB_INDEX].body->set_page_scroll(window_size.y); + } } } |