aboutsummaryrefslogtreecommitdiff
path: root/src/QuickMedia.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r--src/QuickMedia.cpp13
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);
+ }
}
}