Changeset 49990 in webkit


Ignore:
Timestamp:
Oct 23, 2009 12:48:03 PM (15 years ago)
Author:
eric@webkit.org
Message:

2009-10-23 Xiaomei Ji <xji@chromium.org>

Reviewed by Sam Weinig.

Fix caretRangeFromPoint()/elementFromPoint() returns wrong result
for a zoomed and scrolled page.
https://bugs.webkit.org/show_bug.cgi?id=30689.

The real cause is the wrong calculation of event.clientX/Y when
page is zoomed and scolled.
After Sam fixed the event.clientX/Y in r49551, the hit test point
should be recalculated (revert r49490).

  • fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-zoom-and-scroll-expected.txt: Added.
  • fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-zoom-and-scroll.html: Added.
  • fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport-expected.txt:
  • fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport.html:
  • fast/dom/elementFromPoint-relative-to-viewport-expected.txt:
  • fast/dom/elementFromPoint-relative-to-viewport.html:

2009-10-23 Xiaomei Ji <xji@chromium.org>

Reviewed by Sam Weinig.

Fix caretRangeFromPoint()/elementFromPoint() returns wrong result
for a zoomed and scrolled page.
https://bugs.webkit.org/show_bug.cgi?id=30689.

The real cause is the wrong calculation of event.clientX/Y when
page is zoomed and scolled.
After Sam fixed the event.clientX/Y in r49551, the hit test point
should be recalculated (revert r49490).

Test: fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-zoom-and-scroll.html

  • dom/Document.cpp: (WebCore::Document::elementFromPoint): calculate the correct point relative to document when page is zoomed and scrolled. (WebCore::Document::caretRangeFromPoint): calculate the correct point relative to document when page is zoomed and scrolled.
Location:
trunk
Files:
2 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r49985 r49990  
     12009-10-23  Xiaomei Ji  <xji@chromium.org>
     2
     3        Reviewed by Sam Weinig.
     4
     5        Fix caretRangeFromPoint()/elementFromPoint() returns wrong result
     6        for a zoomed and scrolled page.
     7        https://bugs.webkit.org/show_bug.cgi?id=30689.
     8
     9        The real cause is the wrong calculation of event.clientX/Y when
     10        page is zoomed and scolled.
     11        After Sam fixed the event.clientX/Y in r49551, the hit test point
     12        should be recalculated (revert r49490).
     13
     14        * fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-zoom-and-scroll-expected.txt: Added.
     15        * fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-zoom-and-scroll.html: Added.
     16        * fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport-expected.txt:
     17        * fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport.html:
     18        * fast/dom/elementFromPoint-relative-to-viewport-expected.txt:
     19        * fast/dom/elementFromPoint-relative-to-viewport.html:
     20
    1212009-10-23  Enrica Casucci  <enrica@apple.com>
    222
  • trunk/LayoutTests/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport-expected.txt

    r49490 r49990  
    2525PASS Range.startOffset check (got 1, expected 1)
    2626PASS Range.startContainer check (got [object Text], expected [object Text])
    27 PASS Range.startOffset check (got 7, expected 7)
     27PASS Range.startOffset check (got 13, expected 13)
    2828PASS Range.startContainer check (got [object Text], expected [object Text])
    29 PASS Range.startOffset check (got 3, expected 3)
     29PASS Range.startOffset check (got 4, expected 4)
    3030PASS Range.startContainer check (got [object Text], expected [object Text])
    31 PASS Range.startOffset check (got 9, expected 9)
     31PASS Range.startOffset check (got 16, expected 16)
    3232 
    3333PASS successfullyParsed is true
  • trunk/LayoutTests/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport.html

    r49490 r49990  
    6767        if (zoomOrNot == "zoom") {
    6868            test(1, 0, 0);
    69             test(7, 0, 25);
    70             test(3, 50, 0);
    71             test(9, 50, 25);
     69            test(13, 0, 25);
     70            test(4, 50, 0);
     71            test(16, 50, 25);
    7272        } else {
    7373            test(0, 0, 0);
  • trunk/LayoutTests/fast/dom/elementFromPoint-relative-to-viewport-expected.txt

    r49490 r49990  
    1414PASS unscrolledBoxInitial is '0'
    1515PASS scrolledDownBoxInitial is '5'
    16 PASS scrolledRightBoxInitial is '2'
    17 PASS scrolledDownAndRightBoxInitial is '7'
     16PASS scrolledRightBoxInitial is '3'
     17PASS scrolledDownAndRightBoxInitial is '8'
    1818PASS successfullyParsed is true
    1919
  • trunk/LayoutTests/fast/dom/elementFromPoint-relative-to-viewport.html

    r49490 r49990  
    8383        shouldBe(scrolledDownBox, "'5'");
    8484        if (zoomOrNot == "zoom") {
    85             shouldBe(scrolledRightBox, "'2'");
    86             shouldBe(scrolledDownAndRightBox, "'7'");
     85            shouldBe(scrolledRightBox, "'3'");
     86            shouldBe(scrolledDownAndRightBox, "'8'");
    8787        } else {
    8888            shouldBe(scrolledRightBox, "'3'");
  • trunk/WebCore/ChangeLog

    r49989 r49990  
     12009-10-23  Xiaomei Ji  <xji@chromium.org>
     2
     3        Reviewed by Sam Weinig.
     4
     5        Fix caretRangeFromPoint()/elementFromPoint() returns wrong result
     6        for a zoomed and scrolled page.
     7        https://bugs.webkit.org/show_bug.cgi?id=30689.
     8
     9        The real cause is the wrong calculation of event.clientX/Y when
     10        page is zoomed and scolled.
     11        After Sam fixed the event.clientX/Y in r49551, the hit test point
     12        should be recalculated (revert r49490).
     13
     14        Test: fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-zoom-and-scroll.html
     15
     16        * dom/Document.cpp:
     17        (WebCore::Document::elementFromPoint): calculate the correct point
     18        relative to document when page is zoomed and scrolled.
     19        (WebCore::Document::caretRangeFromPoint): calculate the correct point
     20        relative to document when page is zoomed and scrolled.
     21
    1222009-10-22  Dumitru Daniliuc  <dumi@chromium.org>
    223
  • trunk/WebCore/dom/Document.cpp

    r49963 r49990  
    952952
    953953    float zoomFactor = frame->pageZoomFactor();
    954     IntPoint point = roundedIntPoint(FloatPoint((x + view()->scrollX()) * zoomFactor, (y + view()->scrollY()) * zoomFactor));
     954    IntPoint point = roundedIntPoint(FloatPoint(x * zoomFactor  + view()->scrollX(), y * zoomFactor + view()->scrollY()));
    955955
    956956    if (!frameView->visibleContentRect().contains(point))
     
    982982
    983983    float zoomFactor = frame->pageZoomFactor();
    984     IntPoint point = roundedIntPoint(FloatPoint((x + view()->scrollX()) * zoomFactor, (y + view()->scrollY()) * zoomFactor));
     984    IntPoint point = roundedIntPoint(FloatPoint(x * zoomFactor + view()->scrollX(), y * zoomFactor + view()->scrollY()));
    985985
    986986    if (!frameView->visibleContentRect().contains(point))
Note: See TracChangeset for help on using the changeset viewer.