Changeset 165377 in webkit
- Timestamp:
- Mar 10, 2014 9:29:09 AM (10 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r165375 r165377 1 2014-03-10 Radu Stavila <stavila@adobe.com> 2 3 [CSS Regions] Scrolling regions with the mouse wheel only works properly if hovering over the region's padding 4 https://bugs.webkit.org/show_bug.cgi?id=129485 5 6 Reviewed by Andrei Bucur. 7 8 Added layout tests for scrolling regions using the mouse wheel. 9 10 * fast/regions/wheel-scrollable-single-region-expected.html: Added. 11 * fast/regions/wheel-scrollable-single-region.html: Added. 12 1 13 2014-03-10 Michał Pakuła vel Rutka <m.pakula@samsung.com> 2 14 -
trunk/Source/WebCore/ChangeLog
r165364 r165377 1 2014-03-10 Radu Stavila <stavila@adobe.com> 2 3 [CSS Regions] Scrolling regions with the mouse wheel only works properly if hovering over the region's padding 4 https://bugs.webkit.org/show_bug.cgi?id=129485 5 6 Reviewed by Andrei Bucur. 7 8 When searching for the region under the mouse pointer (to identify which region to scroll), 9 the localToAbsolute method must be called on the region container, not the region itself. 10 Also, when calling the offsetFromContainer method on a named flow fragment, 11 it must only take into consideration the border and padding of the fragment container, 12 not its scrolled offset. 13 14 Test: fast/regions/wheel-scrollable-single-region.html 15 16 * rendering/RenderBox.cpp: 17 (WebCore::RenderBox::scroll): 18 * rendering/RenderFlowThread.cpp: 19 * rendering/RenderFlowThread.h: 20 * rendering/RenderNamedFlowFragment.cpp: 21 (WebCore::RenderNamedFlowFragment::offsetFromContainer): 22 * rendering/RenderNamedFlowFragment.h: 23 * rendering/RenderNamedFlowThread.cpp: 24 (WebCore::RenderNamedFlowThread::fragmentFromAbsolutePointAndBox): 25 * rendering/RenderNamedFlowThread.h: 26 1 27 2014-03-10 Jinwoo Song <jinwoo7.song@samsung.com> 2 28 -
trunk/Source/WebCore/rendering/RenderBox.cpp
r165346 r165377 46 46 #include "RenderBoxRegionInfo.h" 47 47 #include "RenderFlexibleBox.h" 48 #include "RenderFlowThread.h"49 48 #include "RenderGeometryMap.h" 50 49 #include "RenderInline.h" … … 53 52 #include "RenderLayerCompositor.h" 54 53 #include "RenderNamedFlowFragment.h" 54 #include "RenderNamedFlowThread.h" 55 55 #include "RenderTableCell.h" 56 56 #include "RenderTheme.h" … … 782 782 if (nextScrollBlock && nextScrollBlock->isRenderNamedFlowThread()) { 783 783 ASSERT(startBox); 784 nextScrollBlock = toRender FlowThread(nextScrollBlock)->regionFromAbsolutePointAndBox(wheelEventAbsolutePoint, *startBox);784 nextScrollBlock = toRenderNamedFlowThread(nextScrollBlock)->fragmentFromAbsolutePointAndBox(wheelEventAbsolutePoint, *startBox); 785 785 } 786 786 -
trunk/Source/WebCore/rendering/RenderFlowThread.cpp
r164988 r165377 435 435 return region; 436 436 return region ? clampBox->clampToStartAndEndRegions(region) : 0; 437 }438 439 RenderRegion* RenderFlowThread::regionFromAbsolutePointAndBox(const IntPoint& absolutePoint, const RenderBox& flowedBox)440 {441 RenderRegion* startRegion = nullptr;442 RenderRegion* endRegion = nullptr;443 getRegionRangeForBox(&flowedBox, startRegion, endRegion);444 445 if (!startRegion)446 return nullptr;447 448 for (auto iter = m_regionList.find(startRegion), end = m_regionList.end(); iter != end; ++iter) {449 RenderRegion* region = *iter;450 IntRect regionAbsoluteRect(roundedIntPoint(region->localToAbsolute()), roundedIntSize(region->frameRect().size()));451 if (regionAbsoluteRect.contains(absolutePoint))452 return region;453 454 if (region == endRegion)455 break;456 }457 458 return nullptr;459 437 } 460 438 -
trunk/Source/WebCore/rendering/RenderFlowThread.h
r164988 r165377 105 105 RenderRegion* regionAtBlockOffset(const RenderBox*, LayoutUnit, bool extendLastRegion = false, RegionAutoGenerationPolicy = AllowRegionAutoGeneration); 106 106 107 RenderRegion* regionFromAbsolutePointAndBox(const IntPoint&, const RenderBox& flowedBox);108 109 107 bool regionsHaveUniformLogicalWidth() const { return m_regionsHaveUniformLogicalWidth; } 110 108 bool regionsHaveUniformLogicalHeight() const { return m_regionsHaveUniformLogicalHeight; } -
trunk/Source/WebCore/rendering/RenderNamedFlowFragment.cpp
r165130 r165377 253 253 return isLastRegion() && (style().regionFragment() == BreakRegionFragment); 254 254 } 255 256 LayoutSize RenderNamedFlowFragment::offsetFromContainer(RenderObject* o, const LayoutPoint&, bool*) const 257 { 258 ASSERT(&fragmentContainer() == o); 259 ASSERT(container() == o); 260 UNUSED_PARAM(o); 261 return topLeftLocationOffset(); 262 } 255 263 256 264 void RenderNamedFlowFragment::layoutBlock(bool relayoutChildren, LayoutUnit) -
trunk/Source/WebCore/rendering/RenderNamedFlowFragment.h
r165130 r165377 69 69 70 70 virtual bool shouldClipFlowThreadContent() const override; 71 72 virtual LayoutSize offsetFromContainer(RenderObject*, const LayoutPoint&, bool* offsetDependsOnPoint = 0) const override; 71 73 72 74 bool isPseudoElementRegion() const { return parent() && parent()->isPseudoElement(); } -
trunk/Source/WebCore/rendering/RenderNamedFlowThread.cpp
r165130 r165377 365 365 366 366 return visualOverflowRect; 367 } 368 369 RenderNamedFlowFragment* RenderNamedFlowThread::fragmentFromAbsolutePointAndBox(const IntPoint& absolutePoint, const RenderBox& flowedBox) 370 { 371 RenderRegion* startRegion = nullptr; 372 RenderRegion* endRegion = nullptr; 373 getRegionRangeForBox(&flowedBox, startRegion, endRegion); 374 375 if (!startRegion) 376 return nullptr; 377 378 for (auto iter = m_regionList.find(startRegion), end = m_regionList.end(); iter != end; ++iter) { 379 RenderNamedFlowFragment* fragment = toRenderNamedFlowFragment(*iter); 380 RenderBlockFlow& fragmentContainer = fragment->fragmentContainer(); 381 IntRect fragmentAbsoluteRect(roundedIntPoint(fragmentContainer.localToAbsolute()), roundedIntSize(fragmentContainer.paddingBoxRect().size())); 382 if (fragmentAbsoluteRect.contains(absolutePoint)) 383 return fragment; 384 385 if (fragment == endRegion) 386 break; 387 } 388 389 return nullptr; 367 390 } 368 391 -
trunk/Source/WebCore/rendering/RenderNamedFlowThread.h
r164988 r165377 70 70 71 71 LayoutRect decorationsClipRectForBoxInNamedFlowFragment(const RenderBox&, RenderNamedFlowFragment&) const; 72 73 RenderNamedFlowFragment* fragmentFromAbsolutePointAndBox(const IntPoint&, const RenderBox& flowedBox); 72 74 73 75 void registerNamedFlowContentElement(Element&);
Note: See TracChangeset
for help on using the changeset viewer.