Changeset 48947 in webkit


Ignore:
Timestamp:
Sep 30, 2009 2:15:03 PM (15 years ago)
Author:
mitz@apple.com
Message:

REGRESSION(r47440): drop down menus at americanexpress.com disappear on mouse out
https://bugs.webkit.org/show_bug.cgi?id=29209

Reviewed by Sam Weinig.

WebCore:

Test: fast/inline/relative-positioned-overflow.html

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::computeVerticalOverflow): Add self-painting
inlines to overflow to ensure that they are included in hit-testing.

LayoutTests:

  • fast/inline/relative-positioned-overflow-expected.txt: Added.
  • fast/inline/relative-positioned-overflow.html: Added.
  • platform/mac/fast/repaint/transform-absolute-in-positioned-container-expected.txt:
Location:
trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r48934 r48947  
     12009-09-30  Dan Bernstein  <mitz@apple.com>
     2
     3        Reviewed by Sam Weinig.
     4
     5        REGRESSION(r47440): drop down menus at americanexpress.com disappear on mouse out
     6        https://bugs.webkit.org/show_bug.cgi?id=29209
     7
     8        * fast/inline/relative-positioned-overflow-expected.txt: Added.
     9        * fast/inline/relative-positioned-overflow.html: Added.
     10        * platform/mac/fast/repaint/transform-absolute-in-positioned-container-expected.txt:
     11
    1122009-09-30  Jian Li  <jianli@chromium.org>
    213
  • trunk/LayoutTests/platform/mac/fast/repaint/transform-absolute-in-positioned-container-expected.txt

    r47440 r48947  
    11layer at (0,0) size 800x600
    22  RenderView at (0,0) size 800x600
    3 layer at (0,0) size 800x296
     3layer at (0,0) size 800x308
    44  RenderBlock {HTML} at (0,0) size 800x296
    55    RenderBody {BODY} at (8,16) size 784x272
  • trunk/WebCore/ChangeLog

    r48945 r48947  
     12009-09-30  Dan Bernstein  <mitz@apple.com>
     2
     3        Reviewed by Sam Weinig.
     4
     5        REGRESSION(r47440): drop down menus at americanexpress.com disappear on mouse out
     6        https://bugs.webkit.org/show_bug.cgi?id=29209
     7
     8        Test: fast/inline/relative-positioned-overflow.html
     9
     10        * rendering/InlineFlowBox.cpp:
     11        (WebCore::InlineFlowBox::computeVerticalOverflow): Add self-painting
     12        inlines to overflow to ensure that they are included in hit-testing.
     13
    1142009-09-30  Simon Fraser  <simon.fraser@apple.com>
    215
  • trunk/WebCore/rendering/InlineFlowBox.cpp

    r47798 r48947  
    579579            topVisualOverflow = min(curr->y() + childOverflowTop, topVisualOverflow);
    580580            bottomVisualOverflow = max(curr->y() + text->height() + childOverflowBottom, bottomVisualOverflow);
    581         } else {
    582             // Only include overflow from inline flows and replaced inlines if they do not paint themselves.
    583             bool childIsSelfPainting = curr->boxModelObject()->hasSelfPaintingLayer();
    584             if (curr->renderer()->isRenderInline()) {
    585                 InlineFlowBox* flow = static_cast<InlineFlowBox*>(curr);
    586                 flow->computeVerticalOverflow(lineTop, lineBottom, strictMode);
    587                 if (!childIsSelfPainting) {
    588                     topLayoutOverflow = min(topLayoutOverflow, flow->topLayoutOverflow());
    589                     bottomLayoutOverflow = max(bottomLayoutOverflow, flow->bottomLayoutOverflow());
    590                     topVisualOverflow = min(topVisualOverflow, flow->topVisualOverflow());
    591                     bottomVisualOverflow = max(bottomVisualOverflow, flow->bottomVisualOverflow());
    592                 }
    593             } else if (!childIsSelfPainting){
    594                 RenderBox* box = toRenderBox(curr->renderer());
    595                 int boxY = curr->y();
    596                 int childTopOverflow = box->hasOverflowClip() ? 0 : box->topLayoutOverflow();
    597                 int childBottomOverflow = box->hasOverflowClip() ? curr->height() : box->bottomLayoutOverflow();
    598                 topLayoutOverflow = min(boxY + childTopOverflow, topLayoutOverflow);
    599                 bottomLayoutOverflow = max(boxY + childBottomOverflow, bottomLayoutOverflow);
    600                 topVisualOverflow = min(boxY + box->topVisualOverflow(), topVisualOverflow);
    601                 bottomVisualOverflow = max(boxY + box->bottomVisualOverflow(), bottomVisualOverflow);
    602             }
     581        } else  if (curr->renderer()->isRenderInline()) {
     582            InlineFlowBox* flow = static_cast<InlineFlowBox*>(curr);
     583            flow->computeVerticalOverflow(lineTop, lineBottom, strictMode);
     584            topLayoutOverflow = min(topLayoutOverflow, flow->topLayoutOverflow());
     585            bottomLayoutOverflow = max(bottomLayoutOverflow, flow->bottomLayoutOverflow());
     586            topVisualOverflow = min(topVisualOverflow, flow->topVisualOverflow());
     587            bottomVisualOverflow = max(bottomVisualOverflow, flow->bottomVisualOverflow());
     588        } else if (!curr->boxModelObject()->hasSelfPaintingLayer()){
     589            // Only include overflow from replaced inlines if they do not paint themselves.
     590            RenderBox* box = toRenderBox(curr->renderer());
     591            int boxY = curr->y();
     592            int childTopOverflow = box->hasOverflowClip() ? 0 : box->topLayoutOverflow();
     593            int childBottomOverflow = box->hasOverflowClip() ? curr->height() : box->bottomLayoutOverflow();
     594            topLayoutOverflow = min(boxY + childTopOverflow, topLayoutOverflow);
     595            bottomLayoutOverflow = max(boxY + childBottomOverflow, bottomLayoutOverflow);
     596            topVisualOverflow = min(boxY + box->topVisualOverflow(), topVisualOverflow);
     597            bottomVisualOverflow = max(boxY + box->bottomVisualOverflow(), bottomVisualOverflow);
    603598        }
    604599    }
Note: See TracChangeset for help on using the changeset viewer.