Permalink
Browse files

Fixing selection and focus logic.

  • Loading branch information...
1 parent 9e95afe commit 04da04e4cc346a45579f44d6d5cc0008f06250b6 @ellisonbg ellisonbg committed with ellisonbg Mar 19, 2011
Showing with 43 additions and 12 deletions.
  1. +43 −12 IPython/frontend/html/notebook/static/js/notebook.js
@@ -16,14 +16,15 @@ 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();
} else if (event.which == 40 && event.shiftKey) {
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({

0 comments on commit 04da04e

Please sign in to comment.