# HG changeset patch # User Atul Varma # Date 1233534822 28800 # Node ID c0edd32443a79eb9a1f4518e49d7a6c8731d44f6 # Parent 0158bed7e0c6330b05aca761d7932e46f962d012 Cursor position is now preserved when moving from editing a part to editing the whole document. diff -r 0158bed7e0c6 -r c0edd32443a7 wiki.js --- a/wiki.js Sun Feb 01 16:24:38 2009 -0800 +++ b/wiki.js Sun Feb 01 16:33:42 2009 -0800 @@ -1,4 +1,5 @@ var App = { + PART_SEPARATOR: "\n\n", eventHandlers: {} }; @@ -17,10 +18,10 @@ function(i) { partsMarkup.push($(this).text()); } ); - return partsMarkup.join("\n\n"); + return partsMarkup.join(App.PART_SEPARATOR); }; -App.enterEditMode = function enterEditMode(parts, level) { +App.enterEditMode = function enterEditMode(parts, level, cursorPos) { var editablePart = $('').get(0); $(editablePart).attr("value", App.getMarkup(parts)); @@ -39,10 +40,14 @@ aEvt.preventDefault(); + var prevMarkup = App.getMarkup($(this).prevAll()); + var cursorPos = (prevMarkup.length + App.PART_SEPARATOR.length + + this.selectionStart); + var allSiblings = this.parentNode.childNodes; exitEditMode.apply(this); - App.enterEditMode(allSiblings, level-1); + App.enterEditMode(allSiblings, level-1, cursorPos); } $(editablePart).blur(exitEditMode); @@ -52,6 +57,10 @@ $(parts).replaceWith(editablePart); setScrollHeight.apply(editablePart); + if (typeof(cursorPos) != "undefined") { + editablePart.selectionStart = cursorPos; + editablePart.selectionEnd = cursorPos; + } $(editablePart).focus(); }; @@ -68,7 +77,7 @@ App.createParts = function createParts(text) { var parts = []; - var partsMarkup = text.split("\n\n"); + var partsMarkup = text.split(App.PART_SEPARATOR); jQuery.each( partsMarkup, function(i) {