RESOLVED FIXED 9312
REGRESSION: Selection bug in new text fields when selecting past the first letter
https://bugs.webkit.org/show_bug.cgi?id=9312
Summary REGRESSION: Selection bug in new text fields when selecting past the first le...
Daniele Metilli
Reported 2006-06-05 06:38:08 PDT
The new text fields behave differently when you select text inside them. Please see the test case, it should be pretty clear. Version of WebKit: r14733.
Attachments
Test case (709 bytes, text/html)
2006-06-05 06:38 PDT, Daniele Metilli
no flags
Work in progress (2.33 KB, patch)
2006-07-21 04:39 PDT, mitz
no flags
Patch, still no change log and tests (10.06 KB, patch)
2006-07-21 07:49 PDT, mitz
no flags
Patch, still no change log and tests (8.94 KB, patch)
2006-07-21 08:51 PDT, mitz
darin: review+
Patch, now with change log and a layout test (94.03 KB, patch)
2006-07-21 11:47 PDT, mitz
darin: review+
Daniele Metilli
Comment 1 2006-06-05 06:38:34 PDT
Created attachment 8713 [details] Test case
Adele Peterson
Comment 2 2006-06-19 11:35:17 PDT
I can't reproduce this problem. Maybe we fixed this one. Can anyone confirm?
mitz
Comment 3 2006-06-19 11:43:34 PDT
(In reply to comment #2) > I can't reproduce this problem. Maybe we fixed this one. Can anyone confirm? > I can still reproduce. Dragging across the field from right to left, the highlight disappears as soon as I move past the first (leftmost) letter.
Adele Peterson
Comment 4 2006-06-19 11:45:40 PDT
oops, I can repro now. I must've been using the wrong version.
Joost de Valk (AlthA)
Comment 5 2006-07-14 04:01:55 PDT
i guess this one needs a Radar then.
Alice Liu
Comment 6 2006-07-14 16:04:53 PDT
mitz
Comment 7 2006-07-21 04:39:51 PDT
Created attachment 9597 [details] Work in progress This patch fixes what's currently causing crazy highlighting and selection in nodes outside the text field as you select from within it outside. It also fixes an assertion failure when you select from the text under the field all the way to after the last letter in the field. The behavior with this patch is that dragging past the first letter behaves as expected, but dragging past the last letter  (starting, say, from the middle of the text field) is broken. This is due to a regression from r14172 (the fix for bug 8159), which actually affects all selections: you can see it by starting a selection in the middle of the first paragraph after the text field in the test case and dragging down into the space between the paragraphs. Instead of selecting everything up to the end of the first paragraph, the selection goes from the beginning of the paragraph to where you started dragging.
mitz
Comment 8 2006-07-21 07:49:21 PDT
Created attachment 9601 [details] Patch, still no change log and tests The patch fixes this bug and the regression from fixing bug 8159. I ran the /editing and /fast tests with it, and the only differences were two progressions.
mitz
Comment 9 2006-07-21 08:51:42 PDT
Created attachment 9602 [details] Patch, still no change log and tests Removed unrelated test
Darin Adler
Comment 10 2006-07-21 09:44:02 PDT
Comment on attachment 9602 [details] Patch, still no change log and tests This change looks pretty good to me.
Darin Adler
Comment 11 2006-07-21 09:50:58 PDT
Comment on attachment 9602 [details] Patch, still no change log and tests r=me, but I want to see ChangeLog and a test case -- I suppose the "progressions" might substitute for a test case I *hate* *hate* *hate* the caretMaxOffset change, but that's because I still dream of a world where we don't use [element, 1] to express "past a replaced element" and that's just not the world we live in.
Darin Adler
Comment 12 2006-07-21 09:51:25 PDT
Comment on attachment 9602 [details] Patch, still no change log and tests Oops, forgot to review+ this -- see my earlier comments please.
mitz
Comment 13 2006-07-21 11:47:03 PDT
Created attachment 9603 [details] Patch, now with change log and a layout test
Darin Adler
Comment 14 2006-07-21 12:08:42 PDT
Comment on attachment 9603 [details] Patch, now with change log and a layout test r=me -- Justin should read the code too, but he can do it after it's checked in.
Justin Garcia
Comment 15 2006-07-21 12:19:02 PDT
Comment on attachment 9603 [details] Patch, now with change log and a layout test              Position p = previousVisuallyDistinctCandidate(m_end); +            if (p.isNull() && endRoot && endRoot->isShadowNode()) +                p = Position(endRoot->shadowParentNode(), maxDeepOffset(endRoot->shadowParentNode()));              Position p = nextVisuallyDistinctCandidate(m_start); +            if (p.isNull() && startRoot && startRoot->isShadowNode()) +                p = Position(startRoot->shadowParentNode(), 0); I think that the offsets should be swapped.  They also need to be swapped inside the for loops. This is minor and it can be changed with a later checkin if I'm right.  r=me
Adele Peterson
Comment 16 2006-07-21 12:55:24 PDT
committed in r 15558
Note You need to log in before you can comment on or make changes to this bug.