From 21aec47c3344df2ccbc69de8a50097d4a6273599 Mon Sep 17 00:00:00 2001 From: Andreas Gohr <gohr@cosmocode.de> Date: Thu, 6 Aug 2009 11:38:33 +0200 Subject: [PATCH] some cleanup in the IE selection handling Ignore-this: 5a6b527fbf3f2ffc79e3ceef11552763 darcs-hash:20090806093833-6e07b-f5fbd738bff54ec6a3488e4fb9ab98c6e49799d4.gz --- lib/scripts/textselection.js | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/lib/scripts/textselection.js b/lib/scripts/textselection.js index 8b7632831..cd9dbe7fa 100644 --- a/lib/scripts/textselection.js +++ b/lib/scripts/textselection.js @@ -53,8 +53,6 @@ function getSelection(textArea) { * * 1. Selections trim newlines at the end of the code * 2. Selections count newlines as two characters - * - * FIXME see what code is not needed here and can be removed */ // The current selection @@ -65,11 +63,13 @@ function getSelection(textArea) { before_range.setEndPoint("EndToStart", sel.rangeCopy); // Moves the end where we need it var before_finished = false, selection_finished = false; - var before_text, untrimmed_before_text, selection_text, untrimmed_selection_text; - + var before_text, selection_text; // Load the text values we need to compare - before_text = untrimmed_before_text = before_range.text; - selection_text = untrimmed_selection_text = sel.rangeCopy.text; + before_text = before_range.text; + selection_text = sel.rangeCopy.text; + + sel.start = before_text.length; + sel.end = sel.start + selection_text.length; // Check each range for trimmed newlines by shrinking the range by 1 character and seeing // if the text property has changed. If it has not changed then we know that IE has trimmed @@ -81,7 +81,8 @@ function getSelection(textArea) { } else { before_range.moveEnd("character", -1) if (before_range.text == before_text) { - untrimmed_before_text += "\n"; + sel.start++; + sel.end++; } else { before_finished = true; } @@ -93,7 +94,7 @@ function getSelection(textArea) { } else { sel.rangeCopy.moveEnd("character", -1) if (sel.rangeCopy.text == selection_text) { - untrimmed_selection_text += "\n"; + sel.end++; } else { selection_finished = true; } @@ -101,12 +102,6 @@ function getSelection(textArea) { } } while ((!before_finished || !selection_finished)); - var startPoint = untrimmed_before_text.length; - var endPoint = startPoint + untrimmed_selection_text.length; - - sel.start = startPoint; - sel.end = endPoint; - // count number of newlines in str to work around stupid IE selection bug var countNL = function(str) { -- GitLab