[webkit-reviews] review denied: [Bug 58294] continue (3rd) experiment with moving caret by word in visual order : [Attachment 89513] patch w/ layout test

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Apr 14 10:40:35 PDT 2011


Ryosuke Niwa <rniwa at webkit.org> has denied Xiaomei Ji <xji at chromium.org>'s
request for review:
Bug 58294: continue (3rd) experiment with moving caret by word in visual order
https://bugs.webkit.org/show_bug.cgi?id=58294

Attachment 89513: patch w/ layout test
https://bugs.webkit.org/attachment.cgi?id=89513&action=review

------- Additional Comments from Ryosuke Niwa <rniwa at webkit.org>
View in context: https://bugs.webkit.org/attachment.cgi?id=89513&action=review

yay! we're almost there.

> Source/WebCore/ChangeLog:14
> +	      and the direction of the movement, looking for visually adjacent
word breaks.

Nit: s/looking for/look for/

> Source/WebCore/ChangeLog:15
> +	   2.1 If the offset is the lestmost offset of the box,

Do you mean the minimum offset of the box?

> Source/WebCore/ChangeLog:21
> +	       based on the directionality of the box. If the word break
position is also inside
> +	       the box, just return it. Otherwise, collect the word breaks
inside the box and

I don't think this part makes sense. Why would you collect word breaks inside
the box when there are no word break inside the box?  I don't think you meant
this.

> Source/WebCore/ChangeLog:36
> +	   2. Only boundaries of the right kind (i.e. for LTR block, the
boundaries where the word
> +	      is to the right and space is to the left, based on Firefox's
behavior) are collected.

I don't really understand the sentence inside the paragraph.

> Source/WebCore/ChangeLog:39
> +	      for LTR box, word boundaries are collected from visually right to
visually left;

I think it's better to say "word boundaries are collected from right to left
visually in a LTR box"

> Source/WebCore/ChangeLog:45
> +	   3. Same reason as above, to avoid manually check for space character

> +	      (which I do not think we should), some of the codes are
inefficient. 

What is same reason as above?

> Source/WebCore/ChangeLog:49
> +	      For example, given a LTR box in LTR block, if the movement is
right, 
> +	      nextWordPosition() returns the boundary of the wrong kind, 
> +	      nextWordPosition()'s nextWordPosition()'s previousWordPosition()
returns the right 
> +	      kind. 

I don't think calling something "wrong" and "right" is descriptive.

> Source/WebCore/ChangeLog:51
> +	   4. When collect word breaks inside a box, it first computes a start
position, then

Nit: when s/collect word breaks/collecting word breaks/

> Source/WebCore/ChangeLog:52
> +	      collect the right kind of word breaks until reach the end (or
beyond) the box.

Nit: s/until reach the end/until it reaches the end of/

> Source/WebCore/ChangeLog:55
> +	      have not consider the box's bidi level, which I think they
probably should.

Nit: s/have not consider/does not consider/

I don't think "which I think they probably should" adds any value here.  If
anything, you should file a bug instead.

> Source/WebCore/editing/visible_units.cpp:-1283
> -    
> -    if (wordBreak == previousWordBreak) {
> -	   isLastWordBreakInBox = true;
> -	   return VisiblePosition();
> -    }
> -
> -

This seems to imply that isLastWordBreakInBox is never true in
collectWordBreaksInBoxInsideBlockWithDifferntDirectionality.  We should get rid
of the argument altogether. r- because of this.

> Source/WebCore/editing/visible_units.cpp:1367
> +static VisiblePosition nextWordBoundaryInBox(const InlineBox* box, int
offset)
> +{

If you make the following two changes, then this function becomes identical to
previousWordBoundaryInBox except that this one calls
nextWordBreakInBoxInsideBlockWithDifferentDirectionality whereas
previousWordBoundaryInBox calls
previousWordBreakInBoxInsideBlockWithSameDirectionality. Maybe we should
combine these two functions? But naming them properly will be tricky.  Maybe
findWordBoundaryInBox?

> Source/WebCore/editing/visible_units.cpp:1374
> +	   if (wordBreak.isNotNull() && (offset == invalidOffset ||
offsetOfWordBreak != offset))
> +	       return wordBreak;

It seems to be that we should break when wordBreak is null.

> Source/WebCore/editing/visible_units.cpp:1376
> +	   if (isLastWordBreakInBox)
> +	       break;

Ditto; isLastWordBreakInBox is never true.

> Source/WebCore/editing/visible_units.cpp:1381
> +static VisiblePosition visuallyLastWordBoundaryInBox(const InlineBox* box,
int offset, TextDirection blockDirection)

I don't think visually last is a good name.  It gave me a wrong impression that
it's at either edge of a box (i.e. rightmost word boundary in LTR box and
leftmost word boundary in RTL box).  I think visuallyPreviousWordBondaryInBox
will be more appropriate.

> Source/WebCore/editing/visible_units.cpp:1455
> +	       if (!box->isLeftToRightDirection())

I'd prefer to have if (box->isLeftToRightDirection()) here and exchange the
order of previousWordBoundaryInBox and nextWordBoundaryInBox.


More information about the webkit-reviews mailing list