diff --git a/IPython/html/static/notebook/js/notebook.js b/IPython/html/static/notebook/js/notebook.js
index b715cd47d..3c2f4272f 100644
--- a/IPython/html/static/notebook/js/notebook.js
+++ b/IPython/html/static/notebook/js/notebook.js
@@ -68,7 +68,7 @@ define([
this.default_cell_type = this.config.default_cell_type || 'code';
// Create default scroll manager.
- this.scrollmanager = new scrollmanager.SlideScrollManager(this);
+ this.scroll_manager = new scrollmanager.SlideScrollManager(this);
// default_kernel_name is a temporary measure while we implement proper
// kernel selection and delayed start. Do not rely on it.
diff --git a/IPython/html/static/notebook/js/scrollmanager.js b/IPython/html/static/notebook/js/scrollmanager.js
index 1a6dad292..e8ca3fb67 100644
--- a/IPython/html/static/notebook/js/scrollmanager.js
+++ b/IPython/html/static/notebook/js/scrollmanager.js
@@ -3,10 +3,10 @@
define(['jquery'], function($){
"use strict";
- var ScrollManager = function(notebook) {
+ var ScrollManager = function(notebook, options) {
// Public constructor.
this.notebook = notebook;
- this.animation_speed = 250; //ms
+ this.animation_speed = options.animation_speed || 250; //ms
};
ScrollManager.prototype.scroll = function (delta) {
@@ -20,13 +20,18 @@ define(['jquery'], function($){
return false;
};
- ScrollManager.prototype.scroll_to = function(destination) {
+ ScrollManager.prototype.scroll_to = function(selector) {
// Scroll to an element in the notebook.
- $('#notebook').animate({'scrollTop': $(destination).offset().top + $('#notebook').scrollTop() - $('#notebook').offset().top}, this.animation_speed);
+ $('#notebook').animate({'scrollTop': $(selector).offset().top + $('#notebook').scrollTop() - $('#notebook').offset().top}, this.animation_speed);
};
ScrollManager.prototype.scroll_some = function(pages) {
// Scroll up or down a given number of pages.
+ //
+ // Parameters
+ // ----------
+ // pages: integer
+ // number of pages to scroll the document, may be positive or negative.
$('#notebook').animate({'scrollTop': $('#notebook').scrollTop() + pages * $('#notebook').height()}, this.animation_speed);
};
@@ -57,13 +62,22 @@ define(['jquery'], function($){
};
- var TargetScrollManager = function(notebook) {
+ var TargetScrollManager = function(notebook, options) {
// Public constructor.
- ScrollManager.apply(this, [notebook]);
+ ScrollManager.apply(this, [notebook, options]);
};
TargetScrollManager.prototype = new ScrollManager();
TargetScrollManager.prototype.is_target = function (index) {
+ // Check if a cell should be a scroll stop.
+ //
+ // Returns `true` if the cell is a cell that the scroll manager
+ // should scroll to. Otherwise, false is returned.
+ //
+ // Parameters
+ // ----------
+ // index: integer
+ // index of the cell to test.
return false;
};
@@ -93,9 +107,9 @@ define(['jquery'], function($){
};
- var SlideScrollManager = function(notebook) {
+ var SlideScrollManager = function(notebook, options) {
// Public constructor.
- TargetScrollManager.apply(this, [notebook]);
+ TargetScrollManager.apply(this, [notebook, options]);
};
SlideScrollManager.prototype = new TargetScrollManager();
@@ -103,14 +117,15 @@ define(['jquery'], function($){
var cell = this.notebook.get_cell(index);
return cell.metadata && cell.metadata.slideshow &&
cell.metadata.slideshow.slide_type &&
- cell.metadata.slideshow.slide_type === "slide";
+ (cell.metadata.slideshow.slide_type === "slide" ||
+ cell.metadata.slideshow.slide_type === "subslide");
};
- var HeadingScrollManager = function(notebook, heading_level) {
+ var HeadingScrollManager = function(notebook, options) {
// Public constructor.
- TargetScrollManager.apply(this, [notebook]);
- this._level = heading_level;
+ TargetScrollManager.apply(this, [notebook, options]);
+ this._level = options.heading_level || 1;
};
HeadingScrollManager.prototype = new TargetScrollManager();