Fixing selection and focus logic.

Brian Granger 15 years ago committed by Brian E. Granger
parent 94647cfbb1
commit 6729e2f4f4

@ -16,7 +16,7 @@ var Notebook = function (selector) {
Notebook.prototype.bind_events = function () {
var that = this;
that.element.keydown(function (event) {
$(document).keydown(function (event) {
console.log(event);
if (event.which == 38 && event.shiftKey) {
that.select_prev();
@ -24,6 +24,7 @@ Notebook.prototype.bind_events = function () {
that.select_next();
} else if (event.which == 13 && event.shiftKey) {
// The focus is not quite working here.
event.preventDefault();
that.insert_code_cell_after();
}
});
@ -155,7 +156,7 @@ Notebook.prototype.insert_cell_before = function (cell, index) {
this.append_cell(cell);
return this;
};
if (index > 0 && index < ncells) {
if (index >= 0 && index < ncells) {
this.cell_elements().eq(index).before(cell.element);
};
return this;
@ -170,6 +171,7 @@ Notebook.prototype.move_cell_up = function (index) {
if (pivot !== null && tomove !== null) {
tomove.detach();
pivot.before(tomove);
this.select(i-1);
};
};
return this;
@ -184,6 +186,7 @@ Notebook.prototype.move_cell_down = function (index) {
if (pivot !== null && tomove !== null) {
tomove.detach();
pivot.after(tomove);
this.select(i+1);
};
};
return this;
@ -321,7 +324,10 @@ var Cell = function (notebook) {
Cell.prototype.select = function () {
this.element.addClass('ui-widget-content ui-corner-all');
this.selected = true;
// TODO: we need t test across browsers to see if both of these are needed.
// In the meantime, there should not be any harm in having them both.
this.element.find('textarea').trigger('focusin');
this.element.find('textarea').trigger('focus');
};
@ -445,27 +451,52 @@ TextCell.prototype.create_element = function () {
};
TextCell.prototype.config_mathjax = function () {
TextCell.prototype.select = function () {
this.edit();
Cell.prototype.select.apply(this);
};
TextCell.prototype.edit = function () {
var text_cell = this.element;
var input = text_cell.find("textarea.text_cell_input");
var output = text_cell.find("div.text_cell_render");
var output = text_cell.find("div.text_cell_render");
output.hide();
input.show().trigger('focus');
};
TextCell.prototype.render = function () {
var text_cell = this.element;
var input = text_cell.find("textarea.text_cell_input");
var output = text_cell.find("div.text_cell_render");
var text = input.val();
output.html(text)
input.html(text);
MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
input.hide();
output.show();
};
TextCell.prototype.config_mathjax = function () {
var text_cell = this.element;
var that = this;
text_cell.click(function () {
output.hide();
input.show().trigger('focus');
that.edit();
}).focusout(function () {
var text = input.val();
output.html(text)
input.html(text);
MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
input.hide();
output.show();
that.render();
});
text_cell.trigger("focusout");
};
//============================================================================
// On document ready
//============================================================================
$(document).ready(function () {
MathJax.Hub.Config({

Loading…
Cancel
Save