Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bc72957e authored by Scott Main's avatar Scott Main
Browse files

fix sidebar autoscroll when the selected doc is not visible.

bug: 9676913

This was not working for third generation list items. Switching
the position measurement to be relative to the entire page rather than
the parent container fixes it. I then added 125px to account for
the site header and set the threshold and placement of scrolled items
to be at 80% the nav height.

Change-Id: Idda1896d11069e56325ba830ed745dae9e0fc483
parent 3c1da3e2
Loading
Loading
Loading
Loading
+12 −7
Original line number Diff line number Diff line
@@ -819,13 +819,18 @@ function scrollIntoView(nav) {

  if ($nav.is(':visible')) {
    var $selected = $(".selected", $nav);
    if ($selected.length == 0) return;
    if ($selected.length == 0) {
      // If no selected item found, exit
      return;
    }

    var selectedOffset = $selected.offset().top; // measure offset from top, relative to entire page
    if (selectedOffset > $nav.height() * .8) { // multiply nav height by .8 so we move up any
                                               // items more than 80% down the nav
      // scroll the item up by an amount 125px less than the window height (account for site header)
      // and then multiply nav height by .8 to match the 80% threshold used above
      api.scrollTo(0, selectedOffset - 125 - ($nav.height() * .8), false);

    var selectedOffset = $selected.position().top;
    if (selectedOffset + 90 > $nav.height()) {  // add 90 so that we scroll up even 
                                                // if the current item is close to the bottom
      api.scrollTo(0, selectedOffset - ($nav.height() / 4), false); // scroll the item into view
                                                              // to be 1/4 of the way from the top
    }
  }
}