From 4027c5442dcf2e9bdb344c37f77c2a3c2f9dcadc Mon Sep 17 00:00:00 2001 From: Jason Woofenden Date: Fri, 18 Mar 2016 14:15:07 -0400 Subject: [PATCH] fix typing (broken by CursorPosition) --- editor.coffee | 52 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/editor.coffee b/editor.coffee index 44b5fb6..699134a 100644 --- a/editor.coffee +++ b/editor.coffee @@ -849,18 +849,26 @@ class PeachHTML5Editor return false when KEY_BACKSPACE return false unless @cursor? - return false unless @cursor[1] > 0 - @cursor[0].text = @cursor[0].text.substr(0, @cursor[1] - 1) + @cursor[0].text.substr(@cursor[1]) - @cursor[0].el.nodeValue = @cursor[0].text - @move_cursor [@cursor[0], @cursor[1] - 1] + return false unless @cursor.i > 0 + @cursor.n.text = @cursor.n.text.substr(0, @cursor.i - 1) + @cursor.n.text.substr(@cursor.i) + @cursor.n.el.nodeValue = @cursor.n.text + new_cursor = new_cursor_position n: @cursor.n, i: @cursor.i - 1 + if new_cursor? + @move_cursor new_cursor + else + @kill_cursor() @changed() return false when KEY_DELETE return false unless @cursor? - return false unless @cursor[1] < @cursor[0].text.length - @cursor[0].text = @cursor[0].text.substr(0, @cursor[1]) + @cursor[0].text.substr(@cursor[1] + 1) - @cursor[0].el.nodeValue = @cursor[0].text - @move_cursor [@cursor[0], @cursor[1]] + return false unless @cursor.i < @cursor.n.text.length + @cursor.n.text = @cursor.n.text.substr(0, @cursor.i) + @cursor.n.text.substr(@cursor.i + 1) + @cursor.n.el.nodeValue = @cursor.n.text + new_cursor = new_cursor_position n: @cursor.n, i: @cursor.i + if new_cursor? + @move_cursor new_cursor + else + @kill_cursor() @changed() return false when KEY_ENTER @@ -884,17 +892,27 @@ class PeachHTML5Editor char = e.charCode ? e.keyCode if char and @cursor? char = String.fromCharCode char - if @cursor[1] is 0 - @cursor[0].text = char + @cursor[0].text - else if @cursor[1] is @cursor[0].text.length - 1 - @cursor[0].text += char + if @cursor.i is 0 + @cursor.n.text = char + @cursor.n.text + else if @cursor.i is @cursor.n.text.length - 1 + @cursor.n.text += char else - @cursor[0].text = - @cursor[0].text.substr(0, @cursor[1]) + + @cursor.n.text = + @cursor.n.text.substr(0, @cursor.i) + char + - @cursor[0].text.substr(@cursor[1]) - @cursor[0].el.nodeValue = @cursor[0].text - @move_cursor [@cursor[0], @cursor[1] + 1] + @cursor.n.text.substr(@cursor.i) + @cursor.n.el.nodeValue = @cursor.n.text + new_cursor = new_cursor_position n: @cursor.n, i: @cursor.i + 1 + unless new_cursor + # probably pressed space, and browser isn't displaying it + # FIXME insert   instead, rip it out later if possible, etc. + # for now, remove it + @cursor.n.text = + @cursor.n.text.substr(0, @cursor.i) + + @cursor.n.text.substr(@cursor.i + 1) + @cursor.n.el.nodeValue = @cursor.n.text + return false + @move_cursor new_cursor @changed() return false clear_dom: -> # remove all the editable content (and cursor, overlays, etc) -- 1.7.10.4