mirror of
https://github.com/zulip/zulip.git
synced 2025-11-20 22:48:16 +00:00
Restore the browser's scroll position on server-initiated reload.
(imported from commit 934659c0f1a2c014cfd2811fe49ea31abad262b2)
This commit is contained in:
@@ -143,6 +143,7 @@ MessageList.prototype = {
|
||||
select_id: function MessageList_select_id(id, opts) {
|
||||
opts = _.extend({
|
||||
then_scroll: false,
|
||||
target_scroll_offset: undefined,
|
||||
use_closest: false,
|
||||
empty_ok: false,
|
||||
mark_read: true,
|
||||
|
||||
@@ -490,7 +490,8 @@ $(function () {
|
||||
// a stream from the home before already
|
||||
if (home_msg_list.selected_id() === -1 && !home_msg_list.empty()) {
|
||||
home_msg_list.select_id(page_params.initial_pointer,
|
||||
{then_scroll: true, use_closest: true});
|
||||
{then_scroll: true, use_closest: true,
|
||||
target_scroll_offset: page_params.initial_offset});
|
||||
}
|
||||
|
||||
// catch the user up
|
||||
|
||||
@@ -37,6 +37,10 @@ function preserve_state(send_after_reload) {
|
||||
if (pointer !== -1) {
|
||||
url += "+pointer=" + pointer;
|
||||
}
|
||||
var row = current_msg_list.selected_row();
|
||||
if (row.length > 0) {
|
||||
url += "+offset=" + row.offset().top;
|
||||
}
|
||||
|
||||
var oldhash = window.location.hash;
|
||||
if (oldhash.length !== 0 && oldhash[0] === '#') {
|
||||
@@ -88,6 +92,10 @@ $(function () {
|
||||
page_params.orig_initial_pointer = page_params.initial_pointer;
|
||||
page_params.initial_pointer = pointer;
|
||||
}
|
||||
var offset = parseInt(vars.offset, 10);
|
||||
if (offset) {
|
||||
page_params.initial_offset = offset;
|
||||
}
|
||||
|
||||
activity.new_user_input = false;
|
||||
hashchange.changehash(vars.oldhash);
|
||||
|
||||
@@ -1469,13 +1469,16 @@ $(function () {
|
||||
found_in_dom: row_from_dom.length
|
||||
});
|
||||
}
|
||||
|
||||
if (event.target_scroll_offset !== undefined) {
|
||||
viewport.set_message_offset(event.target_scroll_offset);
|
||||
} else {
|
||||
// Scroll to place the message within the current view;
|
||||
// but if this is the initial placement of the pointer,
|
||||
// just place it in the very center
|
||||
recenter_view(row, {from_scroll: event.from_scroll,
|
||||
force_center: event.previously_selected === -1});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$("#main_div").on("mouseenter", ".message_time", function (e) {
|
||||
|
||||
Reference in New Issue
Block a user