Mercurial > wiki
changeset 13:c0edd32443a7
Cursor position is now preserved when moving from editing a part to editing the whole document.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Sun, 01 Feb 2009 16:33:42 -0800 |
parents | 0158bed7e0c6 |
children | f8354a940524 |
files | wiki.js |
diffstat | 1 files changed, 13 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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 = $('<textarea class="wiki-edit"></textarea>').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) {