1. 29 Jul, 2010 2 commits
    • simon.fraser@apple.com's avatar
      2010-07-29 Simon Fraser <simon.fraser@apple.com> · e3a3b735
      simon.fraser@apple.com authored
              Reviewed by Pavel Feldman.
      
              Crash when computing pseudo-style of a vanished scrollbar in inspector
              https://bugs.webkit.org/show_bug.cgi?id=42561
      
              When a styled overflow:scroll scrollbar gets destroyed, we need to clear out the m_owner pointer,
              otherwise the event handling code (which keeps the Scrollbar alive) later causes the scrollbar
              to try to use m_owner to get pseudo style.
      
              Test: scrollbars/overflow-custom-scrollbar-crash.html
      
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::destroyScrollbar): If this is a custom scrollbar, clear the owning renderer.
              * rendering/RenderScrollbar.cpp:
              (WebCore::RenderScrollbar::getScrollbarPseudoStyle): Bail if m_owner is 0.
              * rendering/RenderScrollbar.h:
              (WebCore::RenderScrollbar::clearOwningRenderer): New method.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64289 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      e3a3b735
    • tonikitoo@webkit.org's avatar
      2010-07-21 Grace Kloba <klobag@gmail.com> , Antonio Gomes <tonikitoo@webkit.org> · 81c027d5
      tonikitoo@webkit.org authored
              Reviewed by David Hyatt.
      
              Enhance the hit testing to take a rectangle instead of a point
              https://bugs.webkit.org/show_bug.cgi?id=40197
      
              The primary goal of this change is to provide mechanisms for more precise tap
              actions by the users on mobile devices.
      
              Patch extends the hit testing system to work considering a rectangular area
              as input instead of a point, when applicable. For that, the HitTestResult class
              was modified to take a padding (IntSize). The padding specifies a fuzzy range for
              accepting input events in pixels coordinates for both vertical and horizontal
              orientations. In other words, it tells how much to expand the search rect
              around a supposed touch point.
      
              If it non-positive, hit testing will behavior as the current point based hit testing,
              and methods are no-op'ed to not regress this common behavior performance-wise.
              When positive IntSize is provided, the hit test result will keep record of all
              nodes that intersect the built up test area. The logic will continue searching when it
              finds a candidate until the rectangle is fully enclosed by the boundaries of a candidate.
              The result will be a list of nodes in the z-order they are hit-tested.
              Caller will decide how to process them.
      
              In order to expose the functionality, the patch:
      
              - Adds a nodesFromRect method to the Document class, exposing the funcionality
              to the DOM. Method returns a NodeList with all nodes that intersect the given
              hit-tested area.
              - Extends hitTestResultAtPoint method of the EventHandler with an extra 'padding'
              parameter, defaulting to IntSize(0, 0). The rect-based hit test is performed when a
              positive padding is passed in.
      
              Test: fast/dom/nodesFromRect-basic.html
      
              * WebCore.base.exp:
              * dom/Document.cpp:
              (WebCore::Document::nodesFromRect): This method exposes the rect based funcionality to
              the DOM. It works similarly to elementFromPoint, however receiving a rectangular area
              as input instead of a point, and returning a z-index ordered list of nodes (not elements)
              whose area intersect the hit test rect.
              * dom/Document.h: Ditto.
              * dom/Document.idl: Ditto.
              * page/EventHandler.cpp:
              (WebCore::EventHandler::hitTestResultAtPoint): The funcionality is also exposed through this
              method. Patch adds a additional IntSize parameter to work as the padding area, building up
              the hit test rect.
              * page/EventHandler.h: Ditto.
              * rendering/HitTestResult.cpp:
              (WebCore::HitTestResult::HitTestResult): Rect based hit test constructor. Receives a
              padding IntSize as parameter. It can be (0,0).
              (WebCore::HitTestResult::operator=): Modified to assign the m_rectBasedTestResult as well.
              (WebCore::HitTestResult::append): Merge to HitTestResult objects in a way that the
              list node's of both objects get amended.
              (WebCore::HitTestResult::addNodeToRectBasedTestResult): Adds a given Node to the list of
              hit nodes.
              * rendering/HitTestResult.h:
              (WebCore::HitTestResult::padding): Returns the padding as an IntSize.
              (WebCore::HitTestResult::isRectBasedTest): Returns if the HitTestResult is rect based or not.
              (WebCore::HitTestResult::.rectBasedTestResult): Returns the list nodes hit.
              (WebCore::HitTestResult::rectFromPoint): Returns the hit test rect given the hit test point
              and padding.
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::hitTestLayer):
              (WebCore::RenderLayer::hitTestList):
              (WebCore::RenderLayer::hitTestChildLayerColumns):
              * rendering/EllipsisBox.cpp:
              (WebCore::EllipsisBox::nodeAtPoint): Method is modified to support rect based hit test extension.
              Now it not just checks if the boundary of the node being hit-tested contains a hit test point, but
              instead it checks if the boundary of the node intersects a hit test rect. It is implemented so
              that the common case (point based hit test) works as previously.
              * rendering/InlineFlowBox.cpp:
              (WebCore::InlineFlowBox::nodeAtPoint): Ditto.
              * rendering/InlineTextBox.cpp:
              (WebCore::InlineTextBox::nodeAtPoint): Ditto.
              * rendering/RenderBlock.cpp:
              (WebCore::RenderBlock::nodeAtPoint): Ditto.
              (WebCore::RenderBlock::hitTestColumns): Ditto.
              * rendering/RenderBox.cpp:
              (WebCore::RenderBox::nodeAtPoint): Ditto.
              * rendering/RenderImage.cpp:
              (WebCore::RenderImage::nodeAtPoint): Ditto.
              * rendering/RenderLineBoxList.cpp:
              (WebCore::RenderLineBoxList::hitTest):
              * rendering/RenderSVGRoot.cpp:
              (WebCore::RenderSVGRoot::nodeAtPoint): Ditto.
              * rendering/RenderTable.cpp:
              (WebCore::RenderTable::nodeAtPoint): Ditto.
              * rendering/RenderTableSection.cpp:
              (WebCore::RenderTableSection::nodeAtPoint): Ditto.
              * rendering/RenderWidget.cpp:
              (WebCore::RenderWidget::nodeAtPoint): Ditto.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64272 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      81c027d5
  2. 22 Jul, 2010 1 commit
  3. 13 Jul, 2010 1 commit
  4. 07 Jul, 2010 1 commit
  5. 29 Jun, 2010 1 commit
    • zimmermann@webkit.org's avatar
      2010-06-29 Nikolas Zimmermann <nzimmermann@rim.com> · 427c02f4
      zimmermann@webkit.org authored
              Reviewed by Dirk Schulze.
      
              Move PaintInfo/PaintPhase into their own headers, out of RenderObject
              https://bugs.webkit.org/show_bug.cgi?id=41342
      
              1) Move enums PaintPhase/PaintBehaviorFlags and the PaintBehaviour typedef from RenderObject into PaintPhase.h.
                 Move PaintInfo from RenderObject into PaintInfo.h. Replace s/RenderObject::PaintInfo/PaintInfo/ throughout WebCore/.
                 Also move the OverlapTestRequestMap typedef into PaintInfo.h, and replace s/RenderObject::OverlapTestRequestMap/OverlapTestRequestMap/ everywhere.
      
              2) Move "RenderObject* paintingRootForChildren(PaintInfo& paintInfo) const" from RenderObject to PaintInfo
                 and modify it to take a renderer: "void updatePaintingRootForChildren(const RenderObject* renderer)".
      
              This changes a common idiom:
              -    info.paintingRoot = paintingRootForChildren(paintInfo);
              +    info.updatePaintingRootForChildren(this);
      
              We save resetting the paintingRoot to 0 if it was 0 already and thus do less work.
      
              3) Move "bool shouldPaintWithinRoot(PaintInfo& paintInfo) const" from RenderObject to PaintInfo
                 and modify it to take a renderer: "bool shouldPaintWithinRoot(const RenderObject* renderer) const".
      
              This changes a common idiom:
              -    if (!shouldPaintWithinRoot(paintInfo))
              +    if (!paintInfo.shouldPaintWithinRoot(this))
      
              4) Move "void applyTransformToPaintInfo(RenderObject::PaintInfo&, const AffineTransform& localToChildTransform)"
                 from SVGRenderSupport to PaintInfo and rename it to "applyTransform", guarded with ENABLE(SVG) blocks.
      
              This changes a common idiom:
              -    applyTransformToPaintInfo(childPaintInfo, localToParentTransform());
              +    childPaintInfo.applyTransform(localToParentTransform());
      
              Add PaintInfo.h / PaintPhase.h to all build systems that list headers.
      
              * GNUmakefile.am:
              * WebCore.gypi:
              * WebCore.pro:
              * WebCore.vcproj/WebCore.vcproj:
              * WebCore.xcodeproj/project.pbxproj:
              * platform/android/RenderThemeAndroid.cpp:
              (WebCore::getCanvasFromInfo):
              (WebCore::RenderThemeAndroid::paintCheckbox):
              (WebCore::RenderThemeAndroid::paintButton):
              (WebCore::RenderThemeAndroid::paintRadio):
              (WebCore::RenderThemeAndroid::paintTextField):
              (WebCore::RenderThemeAndroid::paintTextArea):
              (WebCore::RenderThemeAndroid::paintSearchField):
              (WebCore::RenderThemeAndroid::paintCombo):
              (WebCore::RenderThemeAndroid::paintMenuList):
              (WebCore::RenderThemeAndroid::paintMenuListButton):
              * platform/android/RenderThemeAndroid.h:
              * platform/efl/RenderThemeEfl.cpp:
              (WebCore::RenderThemeEfl::paintThemePart):
              (WebCore::RenderThemeEfl::paintCheckbox):
              (WebCore::RenderThemeEfl::paintRadio):
              (WebCore::RenderThemeEfl::paintButton):
              (WebCore::RenderThemeEfl::paintMenuList):
              (WebCore::RenderThemeEfl::paintTextField):
              (WebCore::RenderThemeEfl::paintTextArea):
              (WebCore::RenderThemeEfl::paintSearchFieldDecoration):
              (WebCore::RenderThemeEfl::paintSearchFieldResultsButton):
              (WebCore::RenderThemeEfl::paintSearchFieldResultsDecoration):
              (WebCore::RenderThemeEfl::paintSearchFieldCancelButton):
              (WebCore::RenderThemeEfl::paintSearchField):
              * platform/efl/RenderThemeEfl.h:
              * platform/gtk/RenderThemeGtk.cpp:
              (WebCore::paintMozillaGtkWidget):
              (WebCore::RenderThemeGtk::paintCheckbox):
              (WebCore::RenderThemeGtk::paintRadio):
              (WebCore::RenderThemeGtk::paintButton):
              (WebCore::RenderThemeGtk::paintMenuList):
              (WebCore::RenderThemeGtk::paintTextField):
              (WebCore::RenderThemeGtk::paintTextArea):
              (WebCore::RenderThemeGtk::paintSearchFieldResultsButton):
              (WebCore::RenderThemeGtk::paintSearchFieldResultsDecoration):
              (WebCore::RenderThemeGtk::paintSearchFieldCancelButton):
              (WebCore::RenderThemeGtk::paintSearchField):
              (WebCore::RenderThemeGtk::paintSliderTrack):
              (WebCore::RenderThemeGtk::paintSliderThumb):
              (WebCore::RenderThemeGtk::paintMediaFullscreenButton):
              (WebCore::RenderThemeGtk::paintMediaMuteButton):
              (WebCore::RenderThemeGtk::paintMediaPlayButton):
              (WebCore::RenderThemeGtk::paintMediaSeekBackButton):
              (WebCore::RenderThemeGtk::paintMediaSeekForwardButton):
              (WebCore::RenderThemeGtk::paintMediaSliderTrack):
              (WebCore::RenderThemeGtk::paintMediaSliderThumb):
              (WebCore::RenderThemeGtk::paintProgressBar):
              * platform/gtk/RenderThemeGtk.h:
              * platform/haiku/RenderThemeHaiku.cpp:
              (WebCore::RenderThemeHaiku::paintCheckbox):
              (WebCore::RenderThemeHaiku::paintRadio):
              (WebCore::RenderThemeHaiku::paintMenuList):
              * platform/haiku/RenderThemeHaiku.h:
              * platform/qt/RenderThemeQt.cpp:
              (WebCore::StylePainter::StylePainter):
              (WebCore::RenderThemeQt::paintCheckbox):
              (WebCore::RenderThemeQt::paintRadio):
              (WebCore::RenderThemeQt::paintButton):
              (WebCore::RenderThemeQt::paintTextField):
              (WebCore::RenderThemeQt::paintTextArea):
              (WebCore::RenderThemeQt::paintMenuList):
              (WebCore::RenderThemeQt::paintMenuListButton):
              (WebCore::RenderThemeQt::paintProgressBar):
              (WebCore::RenderThemeQt::paintSliderTrack):
              (WebCore::RenderThemeQt::paintSliderThumb):
              (WebCore::RenderThemeQt::paintSearchField):
              (WebCore::RenderThemeQt::paintSearchFieldCancelButton):
              (WebCore::RenderThemeQt::paintSearchFieldDecoration):
              (WebCore::RenderThemeQt::paintSearchFieldResultsDecoration):
              (WebCore::RenderThemeQt::paintMediaFullscreenButton):
              (WebCore::RenderThemeQt::paintMediaMuteButton):
              (WebCore::RenderThemeQt::paintMediaPlayButton):
              (WebCore::RenderThemeQt::paintMediaSeekBackButton):
              (WebCore::RenderThemeQt::paintMediaSeekForwardButton):
              (WebCore::RenderThemeQt::paintMediaCurrentTime):
              (WebCore::RenderThemeQt::paintMediaVolumeSliderTrack):
              (WebCore::RenderThemeQt::paintMediaVolumeSliderThumb):
              (WebCore::RenderThemeQt::paintMediaSliderTrack):
              (WebCore::RenderThemeQt::paintMediaSliderThumb):
              * platform/qt/RenderThemeQt.h:
              * platform/wx/RenderThemeWx.cpp:
              (WebCore::RenderThemeWx::paintCheckbox):
              (WebCore::RenderThemeWx::paintRadio):
              (WebCore::RenderThemeWx::paintButton):
              (WebCore::RenderThemeWx::paintTextField):
              (WebCore::RenderThemeWx::paintMenuList):
              (WebCore::RenderThemeWx::paintMenuListButton):
              * rendering/EllipsisBox.cpp:
              (WebCore::EllipsisBox::paint):
              * rendering/EllipsisBox.h:
              * rendering/InlineBox.cpp:
              (WebCore::InlineBox::paint):
              * rendering/InlineBox.h:
              * rendering/InlineFlowBox.cpp:
              (WebCore::InlineFlowBox::paint):
              (WebCore::InlineFlowBox::paintFillLayers):
              (WebCore::InlineFlowBox::paintFillLayer):
              (WebCore::InlineFlowBox::paintBoxDecorations):
              (WebCore::InlineFlowBox::paintMask):
              (WebCore::InlineFlowBox::paintTextDecorations):
              * rendering/InlineFlowBox.h:
              * rendering/InlineTextBox.cpp:
              (WebCore::InlineTextBox::paint):
              * rendering/InlineTextBox.h:
              * rendering/PaintInfo.h: Added.
              (WebCore::PaintInfo::PaintInfo):
              (WebCore::PaintInfo::updatePaintingRootForChildren):
              (WebCore::PaintInfo::shouldPaintWithinRoot):
              (WebCore::PaintInfo::applyTransform):
              * rendering/PaintPhase.h: Added.
              (WebCore::):
              * rendering/RenderBlock.cpp:
              (WebCore::RenderBlock::paint):
              (WebCore::RenderBlock::paintChildren):
              (WebCore::RenderBlock::paintEllipsisBoxes):
              (WebCore::clipOutPositionedObjects):
              (WebCore::RenderBlock::layoutColumns):
              * rendering/RenderBox.cpp:
              (WebCore::RenderBox::paint):
              (WebCore::RenderBox::paintBoxDecorations):
              (WebCore::RenderBox::paintMask):
              * rendering/RenderFieldset.cpp:
              (WebCore::RenderFieldset::paintBoxDecorations):
              * rendering/RenderForeignObject.cpp:
              (WebCore::RenderForeignObject::paint):
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::paint):
              (WebCore::performOverlapTests):
              (WebCore::RenderLayer::paintLayer):
              (WebCore::RenderLayer::paintList):
              (WebCore::RenderLayer::paintPaginatedChildLayer):
              (WebCore::RenderLayer::paintChildLayerIntoColumns):
              * rendering/RenderLayer.h:
              * rendering/RenderLayerBacking.cpp:
              (WebCore::RenderLayerBacking::paintIntoLayer):
              * rendering/RenderLineBoxList.cpp:
              (WebCore::RenderLineBoxList::paint):
              * rendering/RenderLineBoxList.h:
              * rendering/RenderMediaControls.cpp:
              (WebCore::RenderMediaControls::paintMediaControlsPart):
              * rendering/RenderMediaControls.h:
              * rendering/RenderMediaControlsChromium.cpp:
              (WebCore::paintMediaMuteButton):
              (WebCore::paintMediaPlayButton):
              (WebCore::paintMediaSlider):
              (WebCore::paintMediaSliderThumb):
              (WebCore::paintMediaVolumeSlider):
              (WebCore::paintMediaVolumeSliderThumb):
              (WebCore::paintMediaTimelineContainer):
              (WebCore::RenderMediaControlsChromium::paintMediaControlsPart):
              * rendering/RenderMediaControlsChromium.h:
              * rendering/RenderObject.h:
              * rendering/RenderPath.cpp:
              (WebCore::RenderPath::paint):
              * rendering/RenderReplaced.cpp:
              (WebCore::RenderReplaced::paint):
              (WebCore::RenderReplaced::shouldPaint):
              * rendering/RenderSVGContainer.cpp:
              (WebCore::RenderSVGContainer::paint):
              * rendering/RenderSVGResourceMarker.cpp:
              (WebCore::RenderSVGResourceMarker::draw):
              * rendering/RenderSVGResourceMarker.h:
              * rendering/RenderSVGRoot.cpp:
              (WebCore::RenderSVGRoot::paint):
              * rendering/RenderSVGText.cpp:
              (WebCore::RenderSVGText::paint):
              * rendering/RenderScrollbarPart.cpp:
              (WebCore::RenderScrollbarPart::paintIntoRect):
              * rendering/RenderTable.cpp:
              (WebCore::RenderTable::paintObject):
              (WebCore::RenderTable::paintBoxDecorations):
              * rendering/RenderTableCell.cpp:
              (WebCore::RenderTableCell::paint):
              (WebCore::RenderTableCell::paintBackgroundsBehindCell):
              (WebCore::RenderTableCell::paintBoxDecorations):
              * rendering/RenderTheme.cpp:
              (WebCore::RenderTheme::paint):
              (WebCore::RenderTheme::paintBorderOnly):
              (WebCore::RenderTheme::paintDecorations):
              (WebCore::RenderTheme::paintMeter):
              * rendering/RenderTheme.h:
              (WebCore::RenderTheme::paintCapsLockIndicator):
              (WebCore::RenderTheme::paintCheckbox):
              (WebCore::RenderTheme::paintRadio):
              (WebCore::RenderTheme::paintButton):
              (WebCore::RenderTheme::paintInnerSpinButton):
              (WebCore::RenderTheme::paintOuterSpinButton):
              (WebCore::RenderTheme::paintTextField):
              (WebCore::RenderTheme::paintTextArea):
              (WebCore::RenderTheme::paintMenuList):
              (WebCore::RenderTheme::paintMenuListButton):
              (WebCore::RenderTheme::paintProgressBar):
              (WebCore::RenderTheme::paintSliderTrack):
              (WebCore::RenderTheme::paintSliderThumb):
              (WebCore::RenderTheme::paintSearchField):
              (WebCore::RenderTheme::paintSearchFieldCancelButton):
              (WebCore::RenderTheme::paintSearchFieldDecoration):
              (WebCore::RenderTheme::paintSearchFieldResultsDecoration):
              (WebCore::RenderTheme::paintSearchFieldResultsButton):
              (WebCore::RenderTheme::paintMediaFullscreenButton):
              (WebCore::RenderTheme::paintMediaPlayButton):
              (WebCore::RenderTheme::paintMediaMuteButton):
              (WebCore::RenderTheme::paintMediaSeekBackButton):
              (WebCore::RenderTheme::paintMediaSeekForwardButton):
              (WebCore::RenderTheme::paintMediaSliderTrack):
              (WebCore::RenderTheme::paintMediaSliderThumb):
              (WebCore::RenderTheme::paintMediaVolumeSliderContainer):
              (WebCore::RenderTheme::paintMediaVolumeSliderTrack):
              (WebCore::RenderTheme::paintMediaVolumeSliderThumb):
              (WebCore::RenderTheme::paintMediaRewindButton):
              (WebCore::RenderTheme::paintMediaReturnToRealtimeButton):
              (WebCore::RenderTheme::paintMediaToggleClosedCaptionsButton):
              (WebCore::RenderTheme::paintMediaControlsBackground):
              (WebCore::RenderTheme::paintMediaCurrentTime):
              (WebCore::RenderTheme::paintMediaTimeRemaining):
              * rendering/RenderThemeChromiumMac.h:
              * rendering/RenderThemeChromiumMac.mm:
              (WebCore::RenderThemeChromiumMac::paintMediaPlayButton):
              (WebCore::RenderThemeChromiumMac::paintMediaMuteButton):
              (WebCore::RenderThemeChromiumMac::paintMediaSliderTrack):
              (WebCore::RenderThemeChromiumMac::paintMediaControlsBackground):
              (WebCore::RenderThemeChromiumMac::paintMediaVolumeSliderTrack):
              (WebCore::RenderThemeChromiumMac::paintMediaVolumeSliderThumb):
              * rendering/RenderThemeChromiumSkia.cpp:
              (WebCore::RenderThemeChromiumSkia::paintCheckbox):
              (WebCore::RenderThemeChromiumSkia::paintRadio):
              (WebCore::paintButtonLike):
              (WebCore::RenderThemeChromiumSkia::paintButton):
              (WebCore::RenderThemeChromiumSkia::paintTextField):
              (WebCore::RenderThemeChromiumSkia::paintTextArea):
              (WebCore::RenderThemeChromiumSkia::paintSearchField):
              (WebCore::RenderThemeChromiumSkia::paintSearchFieldCancelButton):
              (WebCore::RenderThemeChromiumSkia::paintSearchFieldResultsDecoration):
              (WebCore::RenderThemeChromiumSkia::paintSearchFieldResultsButton):
              (WebCore::RenderThemeChromiumSkia::paintMediaControlsBackground):
              (WebCore::RenderThemeChromiumSkia::paintMediaSliderTrack):
              (WebCore::RenderThemeChromiumSkia::paintMediaVolumeSliderTrack):
              (WebCore::RenderThemeChromiumSkia::paintMediaSliderThumb):
              (WebCore::RenderThemeChromiumSkia::paintMediaVolumeSliderThumb):
              (WebCore::RenderThemeChromiumSkia::paintMediaPlayButton):
              (WebCore::RenderThemeChromiumSkia::paintMediaMuteButton):
              (WebCore::RenderThemeChromiumSkia::paintMenuList):
              (WebCore::RenderThemeChromiumSkia::paintMenuListButton):
              (WebCore::RenderThemeChromiumSkia::paintSliderTrack):
              (WebCore::RenderThemeChromiumSkia::paintSliderThumb):
              (WebCore::RenderThemeChromiumSkia::paintProgressBar):
              * rendering/RenderThemeChromiumSkia.h:
              * rendering/RenderThemeChromiumWin.cpp:
              (WebCore::RenderThemeChromiumWin::paintCheckbox):
              (WebCore::RenderThemeChromiumWin::paintRadio):
              (WebCore::RenderThemeChromiumWin::paintButton):
              (WebCore::RenderThemeChromiumWin::paintTextField):
              (WebCore::RenderThemeChromiumWin::paintSliderTrack):
              (WebCore::RenderThemeChromiumWin::paintSliderThumb):
              (WebCore::RenderThemeChromiumWin::paintMenuList):
              (WebCore::RenderThemeChromiumWin::paintTextFieldInternal):
              (WebCore::RenderThemeChromiumWin::paintProgressBar):
              * rendering/RenderThemeChromiumWin.h:
              * rendering/RenderThemeMac.h:
              * rendering/RenderThemeMac.mm:
              (WebCore::RenderThemeMac::paintTextField):
              (WebCore::RenderThemeMac::paintCapsLockIndicator):
              (WebCore::RenderThemeMac::paintTextArea):
              (WebCore::RenderThemeMac::paintMenuList):
              (WebCore::RenderThemeMac::paintMeter):
              (WebCore::RenderThemeMac::paintProgressBar):
              (WebCore::RenderThemeMac::paintMenuListButtonGradients):
              (WebCore::RenderThemeMac::paintMenuListButton):
              (WebCore::RenderThemeMac::paintSliderTrack):
              (WebCore::RenderThemeMac::paintSliderThumb):
              (WebCore::RenderThemeMac::paintSearchField):
              (WebCore::RenderThemeMac::paintSearchFieldCancelButton):
              (WebCore::RenderThemeMac::paintSearchFieldDecoration):
              (WebCore::RenderThemeMac::paintSearchFieldResultsDecoration):
              (WebCore::RenderThemeMac::paintSearchFieldResultsButton):
              (WebCore::getUnzoomedRectAndAdjustCurrentContext):
              (WebCore::RenderThemeMac::paintMediaFullscreenButton):
              (WebCore::RenderThemeMac::paintMediaMuteButton):
              (WebCore::RenderThemeMac::paintMediaPlayButton):
              (WebCore::RenderThemeMac::paintMediaSeekBackButton):
              (WebCore::RenderThemeMac::paintMediaSeekForwardButton):
              (WebCore::RenderThemeMac::paintMediaSliderTrack):
              (WebCore::RenderThemeMac::paintMediaSliderThumb):
              (WebCore::RenderThemeMac::paintMediaRewindButton):
              (WebCore::RenderThemeMac::paintMediaReturnToRealtimeButton):
              (WebCore::RenderThemeMac::paintMediaToggleClosedCaptionsButton):
              (WebCore::RenderThemeMac::paintMediaControlsBackground):
              (WebCore::RenderThemeMac::paintMediaCurrentTime):
              (WebCore::RenderThemeMac::paintMediaTimeRemaining):
              * rendering/RenderThemeSafari.cpp:
              (WebCore::RenderThemeSafari::paintCheckbox):
              (WebCore::RenderThemeSafari::paintRadio):
              (WebCore::RenderThemeSafari::paintButton):
              (WebCore::RenderThemeSafari::paintTextField):
              (WebCore::RenderThemeSafari::paintCapsLockIndicator):
              (WebCore::RenderThemeSafari::paintTextArea):
              (WebCore::RenderThemeSafari::paintMenuList):
              (WebCore::RenderThemeSafari::paintMenuListButtonGradients):
              (WebCore::RenderThemeSafari::paintMenuListButton):
              (WebCore::RenderThemeSafari::paintSliderTrack):
              (WebCore::RenderThemeSafari::paintSliderThumb):
              (WebCore::RenderThemeSafari::paintSearchField):
              (WebCore::RenderThemeSafari::paintSearchFieldCancelButton):
              (WebCore::RenderThemeSafari::paintSearchFieldDecoration):
              (WebCore::RenderThemeSafari::paintSearchFieldResultsDecoration):
              (WebCore::RenderThemeSafari::paintSearchFieldResultsButton):
              (WebCore::RenderThemeSafari::paintMediaFullscreenButton):
              (WebCore::RenderThemeSafari::paintMediaMuteButton):
              (WebCore::RenderThemeSafari::paintMediaPlayButton):
              (WebCore::RenderThemeSafari::paintMediaSeekBackButton):
              (WebCore::RenderThemeSafari::paintMediaSeekForwardButton):
              (WebCore::RenderThemeSafari::paintMediaSliderTrack):
              (WebCore::RenderThemeSafari::paintMediaSliderThumb):
              * rendering/RenderThemeSafari.h:
              * rendering/RenderThemeWin.cpp:
              (WebCore::RenderThemeWin::paintButton):
              (WebCore::RenderThemeWin::paintTextField):
              (WebCore::RenderThemeWin::paintMenuList):
              (WebCore::RenderThemeWin::paintMenuListButton):
              (WebCore::RenderThemeWin::paintSliderTrack):
              (WebCore::RenderThemeWin::paintSliderThumb):
              (WebCore::RenderThemeWin::paintSearchField):
              (WebCore::RenderThemeWin::paintSearchFieldCancelButton):
              (WebCore::RenderThemeWin::paintSearchFieldResultsDecoration):
              (WebCore::RenderThemeWin::paintSearchFieldResultsButton):
              (WebCore::RenderThemeWin::paintMediaFullscreenButton):
              (WebCore::RenderThemeWin::paintMediaMuteButton):
              (WebCore::RenderThemeWin::paintMediaPlayButton):
              (WebCore::RenderThemeWin::paintMediaSeekBackButton):
              (WebCore::RenderThemeWin::paintMediaSeekForwardButton):
              (WebCore::RenderThemeWin::paintMediaSliderTrack):
              (WebCore::RenderThemeWin::paintMediaSliderThumb):
              (WebCore::RenderThemeWin::paintMediaToggleClosedCaptionsButton):
              * rendering/RenderThemeWin.h:
              (WebCore::RenderThemeWin::paintCheckbox):
              (WebCore::RenderThemeWin::paintRadio):
              (WebCore::RenderThemeWin::paintTextArea):
              (WebCore::RenderThemeWin::paintSearchFieldDecoration):
              * rendering/RenderThemeWince.cpp:
              (WebCore::RenderThemeWince::paintButton):
              (WebCore::RenderThemeWince::paintTextField):
              (WebCore::RenderThemeWince::paintMenuList):
              (WebCore::RenderThemeWince::paintMenuListButton):
              (WebCore::RenderThemeWince::paintSearchField):
              (WebCore::RenderThemeWince::paintSearchFieldCancelButton):
              (WebCore::RenderThemeWince::paintSearchFieldResultsDecoration):
              (WebCore::RenderThemeWince::paintSearchFieldResultsButton):
              (WebCore::RenderThemeWince::paintSliderTrack):
              (WebCore::RenderThemeWince::paintSliderThumb):
              (WebCore::RenderThemeWince::paintMediaFullscreenButton):
              (WebCore::RenderThemeWince::paintMediaMuteButton):
              (WebCore::RenderThemeWince::paintMediaPlayButton):
              (WebCore::RenderThemeWince::paintMediaSeekBackButton):
              (WebCore::RenderThemeWince::paintMediaSeekForwardButton):
              (WebCore::RenderThemeWince::paintMediaSliderTrack):
              (WebCore::RenderThemeWince::paintMediaSliderThumb):
              * rendering/RenderThemeWince.h:
              (WebCore::RenderThemeWince::paintCheckbox):
              (WebCore::RenderThemeWince::paintRadio):
              (WebCore::RenderThemeWince::paintTextArea):
              (WebCore::RenderThemeWince::paintSearchFieldDecoration):
              * rendering/RootInlineBox.cpp:
              (WebCore::RootInlineBox::paintEllipsisBox):
              (WebCore::RootInlineBox::paintCustomHighlight):
              (WebCore::RootInlineBox::paint):
              (WebCore::RootInlineBox::fillLineSelectionGap):
              * rendering/RootInlineBox.h:
              * rendering/SVGInlineFlowBox.cpp:
              (WebCore::SVGInlineFlowBox::paint):
              * rendering/SVGInlineFlowBox.h:
              * rendering/SVGInlineTextBox.cpp:
              (WebCore::SVGInlineTextBox::paint):
              * rendering/SVGInlineTextBox.h:
              * rendering/SVGMarkerLayoutInfo.cpp:
              (WebCore::SVGMarkerLayoutInfo::drawMarkers):
              * rendering/SVGMarkerLayoutInfo.h:
              * rendering/SVGRenderSupport.cpp:
              (WebCore::SVGRenderBase::prepareToRenderSVGContent):
              (WebCore::SVGRenderBase::finishRenderSVGContent):
              (WebCore::renderSubtreeToImage):
              * rendering/SVGRenderSupport.h:
              * rendering/SVGRootInlineBox.cpp:
              (WebCore::SVGRootInlineBox::paint):
              * rendering/SVGRootInlineBox.h:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@62104 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      427c02f4
  6. 23 Jun, 2010 1 commit
  7. 05 Jun, 2010 1 commit
    • tonikitoo@webkit.org's avatar
      2010-05-30 Antonio Gomes <tonikitoo@webkit.org> · ea9821e1
      tonikitoo@webkit.org authored
              Reviewed by Darin Adler.
      
              Add a convenient helper getter for Frame* to RenderObject
              https://bugs.webkit.org/show_bug.cgi?id=39928
      
              document()->frame() is being called enough from RenderObject derivated classes
              that it worth adding a helper Frame getter as a shortcut.
      
              No behavior change, so no new tests.
      
              * accessibility/AccessibilityRenderObject.cpp:
              (WebCore::AccessibilityRenderObject::isOffScreen):
              (WebCore::AccessibilityRenderObject::stringValue):
              (WebCore::AccessibilityRenderObject::selection):
              (WebCore::AccessibilityRenderObject::setSelectedVisiblePositionRange):
              * page/EventHandler.cpp:
              (WebCore::canAutoscroll):
              * rendering/InlineTextBox.cpp:
              (WebCore::InlineTextBox::paint):
              (WebCore::InlineTextBox::paintCustomHighlight):
              (WebCore::InlineTextBox::paintTextMatchMarker):
              * rendering/RenderBlock.cpp:
              (WebCore::RenderBlock::paintCaret):
              * rendering/RenderBox.cpp:
              (WebCore::RenderBox::paintCustomHighlight):
              * rendering/RenderDataGrid.cpp:
              (WebCore::RenderDataGrid::isActive):
              * rendering/RenderFrameSet.cpp:
              (WebCore::RenderFrameSet::flattenFrameSet):
              * rendering/RenderImage.cpp:
              (WebCore::RenderImage::paintFocusRings):
              * rendering/RenderInline.cpp:
              (WebCore::RenderInline::addDashboardRegions):
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::~RenderLayer):
              (WebCore::RenderLayer::panScrollFromPoint):
              (WebCore::RenderLayer::scrollByRecursively):
              (WebCore::RenderLayer::scrollToOffset):
              (WebCore::RenderLayer::autoscroll):
              (WebCore::RenderLayer::isActive):
              (showLayerTree):
              * rendering/RenderLayerBacking.cpp:
              (WebCore::inspectorTimelineAgent):
              * rendering/RenderListBox.cpp:
              (WebCore::RenderListBox::paintItemForeground):
              (WebCore::RenderListBox::paintItemBackground):
              (WebCore::RenderListBox::panScroll):
              (WebCore::RenderListBox::autoscroll):
              (WebCore::RenderListBox::isActive):
              * rendering/RenderObject.cpp:
              (WebCore::RenderObject::~RenderObject):
              (WebCore::RenderObject::selectionBackgroundColor):
              (WebCore::RenderObject::selectionForegroundColor):
              (WebCore::RenderObject::destroy):
              (WebCore::RenderObject::addDashboardRegions):
              (WebCore::RenderObject::animation):
              * rendering/RenderObject.h:
              (WebCore::RenderObject::document):
              (WebCore::RenderObject::frame):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@60753 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      ea9821e1
  8. 27 May, 2010 1 commit
    • hyatt@apple.com's avatar
      https://bugs.webkit.org/show_bug.cgi?id=39783, clean up the moveChild functions on RenderBlock. · f5e875db
      hyatt@apple.com authored
              
      Reviewed by Sam Weinig.
      
      Eliminate the need to pass the toChildrenList to the moveChild functions by tightening up the type of the
      |to| argument to be a RenderBlock.
              
      Add a moveChildrenTo function that can move a range of children, and patch places that were doing this
      by hand.
      
      Make the append forms of the functions just use the insert forms with a beforeChild of 0.
              
      Patch insertChildNode in RenderObjectChildList so that it passes the fullInsert parameter through in the
      case where it does an append.
              
      Add an assert to RenderLayer that catches bad structure built when the fullInsert/Remove parameters are
      messed up when using append/insertChildNode.
      
      * rendering/RenderBlock.cpp:
      (WebCore::RenderBlock::splitAnonymousBlocksAroundChild):
      (WebCore::RenderBlock::makeChildrenAnonymousColumnBlocks):
      (WebCore::RenderBlock::createAndAppendRootInlineBox):
      (WebCore::RenderBlock::moveChildTo):
      (WebCore::RenderBlock::moveChildrenTo):
      (WebCore::RenderBlock::makeChildrenNonInline):
      (WebCore::RenderBlock::removeChild):
      * rendering/RenderBlock.h:
      (WebCore::RenderBlock::moveChildTo):
      (WebCore::RenderBlock::moveAllChildrenTo):
      (WebCore::RenderBlock::moveChildrenTo):
      * rendering/RenderLayer.cpp:
      (WebCore::RenderLayer::addChild):
      * rendering/RenderObjectChildList.cpp:
      (WebCore::RenderObjectChildList::insertChildNode):
      * rendering/RenderRubyBase.cpp:
      (WebCore::RenderRubyBase::moveInlineChildren):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@60282 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      f5e875db
  9. 26 May, 2010 2 commits
    • abarth@webkit.org's avatar
      2010-05-26 Adam Barth <abarth@webkit.org> · 0e316402
      abarth@webkit.org authored
              Unreviewed, rolling out r60262.
              http://trac.webkit.org/changeset/60262
              https://bugs.webkit.org/show_bug.cgi?id=39783
      
              Broke every build and is blocking me from working.  :(
      
              * rendering/RenderBlock.cpp:
              (WebCore::RenderBlock::splitAnonymousBlocksAroundChild):
              (WebCore::RenderBlock::makeChildrenAnonymousColumnBlocks):
              (WebCore::RenderBlock::moveChildTo):
              (WebCore::RenderBlock::moveAllChildrenTo):
              (WebCore::RenderBlock::makeChildrenNonInline):
              (WebCore::RenderBlock::removeChild):
              * rendering/RenderBlock.h:
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::addChild):
              * rendering/RenderObjectChildList.cpp:
              (WebCore::RenderObjectChildList::insertChildNode):
              * rendering/RenderRubyBase.cpp:
              (WebCore::RenderRubyBase::moveInlineChildren):
              (WebCore::RenderRubyBase::moveBlockChildren):
              (WebCore::RenderRubyBase::mergeBlockChildren):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@60264 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      0e316402
    • hyatt@apple.com's avatar
      https://bugs.webkit.org/show_bug.cgi?id=39783, clean up the moveChild functions on RenderBlock. · 9099e573
      hyatt@apple.com authored
              
      Reviewed by Sam Weinig.
      
      Eliminate the need to pass the toChildrenList to the moveChild functions by tightening up the type of the
      |to| argument to be a RenderBlock.
              
      Add a moveChildrenTo function that can move a range of children, and patch places that were doing this
      by hand.
      
      Make the append forms of the functions just use the insert forms with a beforeChild of 0.
              
      Patch insertChildNode in RenderObjectChildList so that it passes the fullInsert parameter through in the
      case where it does an append.
              
      Add an assert to RenderLayer that catches bad structure built when the fullInsert/Remove parameters are
      messed up when using append/insertChildNode.
      
      * rendering/RenderBlock.cpp:
      (WebCore::RenderBlock::splitAnonymousBlocksAroundChild):
      (WebCore::RenderBlock::makeChildrenAnonymousColumnBlocks):
      (WebCore::RenderBlock::createAndAppendRootInlineBox):
      (WebCore::RenderBlock::moveChildTo):
      (WebCore::RenderBlock::moveChildrenTo):
      (WebCore::RenderBlock::makeChildrenNonInline):
      (WebCore::RenderBlock::removeChild):
      * rendering/RenderBlock.h:
      (WebCore::RenderBlock::moveChildTo):
      (WebCore::RenderBlock::moveAllChildrenTo):
      (WebCore::RenderBlock::moveChildrenTo):
      * rendering/RenderLayer.cpp:
      (WebCore::RenderLayer::addChild):
      * rendering/RenderObjectChildList.cpp:
      (WebCore::RenderObjectChildList::insertChildNode):
      * rendering/RenderRubyBase.cpp:
      (WebCore::RenderRubyBase::moveInlineChildren):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@60262 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      9099e573
  10. 19 May, 2010 1 commit
    • hyatt@apple.com's avatar
      https://bugs.webkit.org/show_bug.cgi?id=21049, opacity and position:relative... · 892cfe00
      hyatt@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=21049, opacity and position:relative fail in multi-column layouts.
              
      Reviewed by Oliver Hunt.
      
      Make layers split painting across columns just as normal flow content does.  This is actually very
      challenging, since intermediate multicol layers can exist between a child that has to be split and
      its enclosing stacking context.
              
      In order to properly paginate layers, a bit is set on all pagination roots, i.e., layers that will get
      split and thus split any descendant layers that they are also responsible for painting.  For a paginated
      root, we walk up the layer hierarchy and collect all intermediate multicol blocks between the child
      and the enclosing stacking context.
              
      We then recur from the outside in, applying clipping and translation as we break up the layer into strips.
              
      Composited layers remain unsplittable and have a hacked offset still in order to be placed in the right
      column.
              
      Painting and hit testing of columns has been simplified in all of the functions to use the x position of
      the column rect instead of trying to increment an x offset by adding in widths and column gaps.  This
      makes those functions directionality-independent (and the LTR/RTL code paths are now the same).
              
      Fix repainting of columns as well to make sure rects are split across columns only after relative position
      and transforms have been applied.
              
      Added fast/multicol/layers-split-across-columns.html
      
      * rendering/RenderBlock.cpp:
      (WebCore::RenderBlock::paintColumnContents):
      (WebCore::RenderBlock::adjustRectForColumns):
      (WebCore::RenderBlock::adjustForColumns):
      * rendering/RenderBlock.h:
      * rendering/RenderBox.cpp:
      (WebCore::RenderBox::computeRectForRepaint):
      * rendering/RenderLayer.cpp:
      (WebCore::RenderLayer::RenderLayer):
      (WebCore::RenderLayer::updateLayerPositions):
      (WebCore::RenderLayer::updatePagination):
      (WebCore::RenderLayer::updateLayerPosition):
      (WebCore::RenderLayer::paintLayer):
      (WebCore::RenderLayer::paintList):
      (WebCore::RenderLayer::paintPaginatedChildLayer):
      (WebCore::RenderLayer::paintChildLayerIntoColumns):
      (WebCore::RenderLayer::hitTestLayer):
      (WebCore::RenderLayer::hitTestList):
      (WebCore::RenderLayer::hitTestPaginatedChildLayer):
      (WebCore::RenderLayer::hitTestChildLayerColumns):
      * rendering/RenderLayer.h:
      (WebCore::RenderLayer::):
      (WebCore::RenderLayer::isPaginated):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@59784 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      892cfe00
  11. 14 May, 2010 1 commit
    • hyatt@apple.com's avatar
      https://bugs.webkit.org/show_bug.cgi?id=39137 · 6de75b19
      hyatt@apple.com authored
      Reviewed by Simon Fraser.
      
      WebCore: 
      
      Make RenderLayers position properly inside multicolumn layout.
              
      (1) Create RenderLayers when column properties are specified.  This allows descendant layers to easily
      know they are inside a multicolumn layout when positioning.
              
      (2) Patch updateLayerPosition to offset the layer into the first column that contains the layer.  Splitting
      of a layer across columns still does not work, but the layer will now at least appear in the first column in
      which it occurs.
              
      (3) Fix pagination bugs caused by the fact that visual overflow doesn't propagate up the line box tree when layers
      are involved.  Make sure to use lineTop and lineBottom in this case (it's not perfect, but it gets most cases
      working properly).  With this change elements like <video> will paginate properly and not get split across pages.
      
      (4) Make column repainting and layer positioning work with RTL columns by fixing adjustForColumns to
      account for RTL.
              
      (5) Fix RTL pagination by making sure the column pagination rects are the content width of the whole block and not just
      the width of one column.
      
      Added fast/multicol/layers-in-multicol.html
      
      * rendering/RenderBlock.cpp:
      (WebCore::RenderBlock::layoutColumns):
      (WebCore::RenderBlock::adjustForColumns):
      * rendering/RenderBox.h:
      (WebCore::RenderBox::locationOffset):
      * rendering/RenderBoxModelObject.h:
      (WebCore::RenderBoxModelObject::requiresLayer):
      * rendering/RenderLayer.cpp:
      (WebCore::RenderLayer::updateLayerPosition):
      (WebCore::RenderLayer::convertToLayerCoords):
      (WebCore::RenderLayer::shouldBeNormalFlowOnly):
      * rendering/RenderLineBoxList.cpp:
      (WebCore::RenderLineBoxList::paint):
      * rendering/RenderView.cpp:
      (WebCore::RenderView::RenderView):
      * rendering/RenderView.h:
      (WebCore::RenderView::requiresLayer):
      * rendering/style/RenderStyle.h:
      (WebCore::InheritedFlags::specifiesColumns):
      
      LayoutTests: 
      
      Reset all multicolumn test results now that columns create RenderLayers.
      
      * fast/multicol/client-rects-expected.txt:
      * fast/multicol/layers-in-multicol.html: Added.
      * fast/multicol/single-line-expected.txt:
      * platform/mac/fast/multicol/column-rules-expected.txt:
      * platform/mac/fast/multicol/columns-shorthand-parsing-expected.txt:
      * platform/mac/fast/multicol/float-avoidance-expected.txt:
      * platform/mac/fast/multicol/float-multicol-expected.txt:
              
      Add a layout test for various types of RenderLayers inside multicol layouts.
      
      * platform/mac/fast/multicol/layers-in-multicol-expected.txt: Added.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@59513 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      6de75b19
  12. 10 May, 2010 1 commit
    • simon.fraser@apple.com's avatar
      2010-05-10 Simon Fraser <simon.fraser@apple.com> · c0c558c1
      simon.fraser@apple.com authored
              Reviewed by Anders Carlsson
      
              Allow compositing layers to be connected across iframe boundaries on Mac
              https://bugs.webkit.org/show_bug.cgi?id=38856
      
              Changes to allow compositing layers for iframes to switch between being hosted
              by the iframe's layer-backed NSView, and parented in the GraphicsLayer tree of the
              enclosing document.
      
              Tests: compositing/iframes/connect-compositing-iframe.html
                     compositing/iframes/connect-compositing-iframe2.html
                     compositing/iframes/connect-compositing-iframe3.html
      
              * page/FrameView.h:
              * page/FrameView.cpp:
              (WebCore::FrameView::hasCompositedContent): New convenience method.
              (WebCore::FrameView::setIsOverlapped): If we're composited, poke the owner document in case it
                  wants to re-evaluate compositing decisions.
              (WebCore::FrameView::isOverlapped): Just expose the existing flag.
      
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::shouldBeNormalFlowOnly):
              (WebCore::RenderLayer::isSelfPaintingLayer):
      
              * rendering/RenderLayerBacking.cpp:
              (WebCore::RenderLayerBacking::updateGraphicsLayerConfiguration): If this is an iframe, we need
                  to ensure that the layers for the iframe content are hooked up.
              (WebCore::RenderLayerBacking::updateDrawsContent): When an iframe toggles between different
                  attachments, the 'drawsContent' behavior of its root layer changes, so needs to be updated.
      
              * rendering/RenderLayerCompositor.h:
              (WebCore::RenderLayerCompositor::updateCompositingLayers): Call destroyRootPlatformLayer()
                  instead of detachRootPlatformLayer() and manually zeroing out the OwnPtrs.
              (WebCore::RenderLayerCompositor::updateBacking): If a RenderIFrame changes compositing mode,
                  we need to ensure that its content compositor attachment is updated.
              (WebCore::RenderLayerCompositor::repaintOnCompositingChange): The existing code had a bug
                  that caused repaints for RenderViews (which have no parent) to bail. We only want to bail
                  for non-RenderViews that are not attached.
              (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree): Factored the iframe-connecting
                  code into a new method, parentIFrameContentLayers().
              (WebCore::RenderLayerCompositor::parentIFrameContentLayers): New method to share the code that hooks
                  up the iframe's compositing layers to the parent.
              (WebCore::RenderLayerCompositor::shouldPropagateCompositingToEnclosingIFrame): Add logic to propagate
                  compositing out of iframes on Mac in two situations: 1) when the FrameView is overlapped, and 2)
                  if the parent document is already composited.
              (WebCore::RenderLayerCompositor::ensureRootPlatformLayer): Clean up the logic here to better deal
                  with dynamic changes of the attachment type.
              (WebCore::RenderLayerCompositor::destroyRootPlatformLayer): Clean up and null out the clipping layer here.
              (WebCore::RenderLayerCompositor::attachRootPlatformLayer): Call rootLayerAttachmentChanged().
              (WebCore::RenderLayerCompositor::detachRootPlatformLayer): Ditto. Also unparent the clipping and platform layers.
              (WebCore::RenderLayerCompositor::updateRootLayerAttachment): Call ensureRootPlatformLayer() to re-evaluate
                  the layer attachment.
              (WebCore::RenderLayerCompositor::rootLayerAttachmentChanged): We need to update the drawsContent() status
                  of the RenderView's layer's backing, because it changes depending on the attachment.
      
              * rendering/RenderWidget.cpp:
              (WebCore::RenderWidget::paint): Do overlap testing if the frameView can do fast repaints (as before),
                  but also now when the frameView has composited content.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@59136 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      c0c558c1
  13. 06 May, 2010 2 commits
    • simon.fraser@apple.com's avatar
      2010-05-06 Simon Fraser <simon.fraser@apple.com> · a4e3093e
      simon.fraser@apple.com authored
              Reviewed by Dan Bernstein.
      
              Compositing layers that are clipped out by an overflow:scroll parent fail to get created on reveal
              https://bugs.webkit.org/show_bug.cgi?id=38712
      
              When compositing layer creation is testing layer overlap, we need to re-run the
              algorithm when an overflow:scroll element scrolls, to create new layers for revealed
              elements.
      
              Test: compositing/layer-creation/overflow-scroll-overlap.html
      
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::scrollToOffset): First, move the compositing updates
              until after the call to updateWidgetPositions(), so that this order is similar
              to what we done when a FrameView scrolls. This change has no known side effects.
              Second, if compositingConsultsOverlap() is true, we need to actually do a
              compositing layer update to compute whether revealed/hidden layers should
              be created/destroyed.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@58936 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      a4e3093e
    • mjs@apple.com's avatar
      2010-05-06 Maciej Stachowiak <mjs@apple.com> · 12a77590
      mjs@apple.com authored
              Reviewed by Darin Adler.
      
              further fixes towards REGRESSION (r57292): 1% PLT regression from visited link information leak fix
              https://bugs.webkit.org/show_bug.cgi?id=38682
              <rdar://problem/7859794>
      
              Looks like a 1-2% speedup on PLT.
      
              - Reorder CSS properties.
              - Remove short circuit tag check in matchRulesForList which costs more than it saves.
              - Inline initForStyleResolve.
              - Optimize applyDeclarations to avoid switch and take fewer branches in the inner loop.
              
              - Change the way Node handles flags - replace bitfield with a uint32_t and explicit masking, 
              to make it cheaper to initialize the bits and give faster access.
              - Added new Node flags to check for isStyledElement, isHTMLElement, isSVGElement, isComment, 
              and devirtualize those methods.
              - Inline constructors for Node, Element, Text, CharacterData, StyledElement, etc since
              they are very simple and lots of nodes get constructed.
              
              * css/CSSPropertyNames.in: Move a few of the properties up front so we can check for them
              with < instead of switch statements
              * css/CSSStyleSelector.cpp:
              (WebCore::CSSStyleSelector::matchRulesForList): Remove unnecessary preflight check
              for tag match before checking selector. This check very rarely short circuits anything,
              since most rules with a tag end up in the appropriate tag bucket. So doing the check
              cost more time than the time saved.
              (WebCore::CSSStyleSelector::initForStyleResolve): Inline. Create RenderStyle in a better way.
              (WebCore::CSSStyleSelector::applyDeclarations): Get rid of switch statement and use <= to
              check for the high priority properties. Convert to template to avoid checking "applyFirst"
              each time through the loop.
              (WebCore::CSSStyleSelector::styleForElement): Adjust for new applyDeclarations() signature.
              (WebCore::CSSStyleSelector::keyframeStylesForAnimation): ditto
              (WebCore::CSSStyleSelector::pseudoStyleForElement): ditto
              * css/CSSStyleSelector.h: Adjust for new applyDeclarations() signature.
              * rendering/style/RenderStyle.cpp:
              (WebCore::RenderStyle::RenderStyle): Inline constructor.
              * rendering/style/RenderStyle.h: Make constructor private so it can be inline.
              * dom/Node.h:
              (WebCore::): See high-level description of changes above. Redid the
              way boolean flags work.
              (WebCore::Node::isElementNode):
              (WebCore::Node::isContainerNode):
              (WebCore::Node::isTextNode):
              (WebCore::Node::isHTMLElement):
              (WebCore::Node::isSVGElement):
              (WebCore::Node::isStyledElement):
              (WebCore::Node::isCommentNode):
              (WebCore::Node::hasID):
              (WebCore::Node::hasClass):
              (WebCore::Node::active):
              (WebCore::Node::inActiveChain):
              (WebCore::Node::inDetach):
              (WebCore::Node::hovered):
              (WebCore::Node::attached):
              (WebCore::Node::setAttached):
              (WebCore::Node::needsStyleRecalc):
              (WebCore::Node::styleChangeType):
              (WebCore::Node::childNeedsStyleRecalc):
              (WebCore::Node::isLink):
              (WebCore::Node::setHasID):
              (WebCore::Node::setHasClass):
              (WebCore::Node::setChildNeedsStyleRecalc):
              (WebCore::Node::clearChildNeedsStyleRecalc):
              (WebCore::Node::setInDocument):
              (WebCore::Node::clearInDocument):
              (WebCore::Node::setInActiveChain):
              (WebCore::Node::clearInActiveChain):
              (WebCore::Node::setIsLink):
              (WebCore::Node::clearIsLink):
              (WebCore::Node::setActive):
              (WebCore::Node::setHovered):
              (WebCore::Node::inDocument):
              (WebCore::Node::):
              (WebCore::Node::getFlag):
              (WebCore::Node::setFlag):
              (WebCore::Node::clearFlag):
              (WebCore::Node::hasRareData):
              (WebCore::Node::isParsingChildrenFinished):
              (WebCore::Node::setIsParsingChildrenFinished):
              (WebCore::Node::clearIsParsingChildrenFinished):
              (WebCore::Node::isStyleAttributeValid):
              (WebCore::Node::setIsStyleAttributeValid):
              (WebCore::Node::clearIsStyleAttributeValid):
              (WebCore::Node::isSynchronizingStyleAttribute):
              (WebCore::Node::setIsSynchronizingStyleAttribute):
              (WebCore::Node::clearIsSynchronizingStyleAttribute):
              (WebCore::Node::areSVGAttributesValid):
              (WebCore::Node::setAreSVGAttributesValid):
              (WebCore::Node::clearAreSVGAttributesValid):
              (WebCore::Node::isSynchronizingSVGAttributes):
              (WebCore::Node::setIsSynchronizingSVGAttributes):
              (WebCore::Node::clearIsSynchronizingSVGAttributes):
              (WebCore::Node::hasRareSVGData):
              (WebCore::Node::setHasRareSVGData):
              (WebCore::Node::clearHasRareSVGData):
              (WebCore::Node::initialRefCount):
              * dom/Node.cpp:
              (WebCore::Node::trackForDebugging): Adjusted for changes in
              flag handling.
              (WebCore::Node::ensureRareData): ditto
              (WebCore::Node::setStyleChange): ditto
              (WebCore::Node::setNeedsStyleRecalc): ditto
              (WebCore::Node::lazyAttach): ditto
              (WebCore::Node::attach): ditto
              (WebCore::Node::detach): ditto
              (WebCore::Node::insertedIntoDocument): ditto
              (WebCore::Node::removedFromDocument): ditto
              * dom/CharacterData.cpp:
              * dom/CharacterData.h:
              (WebCore::CharacterData::CharacterData): Inline the constructor (moved from .cpp)
              * dom/Comment.cpp:
              (WebCore::Comment::Comment): Tell the base class that we're a comment.
              * dom/Comment.h: Remove isCommentNode override.
              * dom/ContainerNode.cpp:
              (WebCore::ContainerNode::detach): Adjusted for changes in flag
              handling.
              (WebCore::ContainerNode::removedFromDocument): ditto
              * dom/Document.cpp:
              (WebCore::Document::Document): Adjusted for changes in flag handling.
              (WebCore::Document::recalcStyle): ditto
              (WebCore::Document::setFocusedNode): ditto
              * dom/Document.h:
              (WebCore::Node::Node): Inline the Node constructor - goes here
              because it uses Document.
              * dom/DocumentFragment.cpp: include Document.h due to above change
              * dom/EditingText.cpp: ditto
              * dom/EntityReference.cpp: ditto
              * dom/Element.cpp:
              (WebCore::Element::getAttribute): Adjusted for changes in flag
              handling.
              (WebCore::Element::setAttribute): ditto
              (WebCore::Element::hasAttributes): ditto
              (WebCore::Element::recalcStyle): ditto
              (WebCore::Element::finishParsingChildren): ditto
              * dom/Element.h:
              (WebCore::Element::Element): Inline (moved from .cpp)
              (WebCore::Element::isFinishedParsingChildren):
              (WebCore::Element::beginParsingChildren):
              (WebCore::Element::attributes): Adjusted for changes in flag
              handling.
              * dom/StyledElement.cpp:
              (WebCore::StyledElement::updateStyleAttribute): Adjust for
              changes to flag handling.
              (WebCore::StyledElement::mapToEntry): ditto
              (WebCore::StyledElement::parseMappedAttribute): ditto
              (WebCore::StyledElement::copyNonAttributeProperties): ditto
              * dom/StyledElement.h:
              (WebCore::StyledElement::StyledElement): Inline (moved from.cpp)
              (WebCore::StyledElement::invalidateStyleAttribute): Adjust for
              changes in flag handling.
              * dom/Text.h:
              (WebCore::Text::Text): Inline (moved from .cpp)
              * dom/Text.cpp:
              * html/HTMLAnchorElement.cpp:
              (WebCore::HTMLAnchorElement::HTMLAnchorElement): Adjust for changes in
              flag handling.
              (WebCore::HTMLAnchorElement::parseMappedAttribute): ditto
              * html/HTMLElement.cpp:
              (WebCore::HTMLElement::create): Tell base class we're an HTML element.
              * html/HTMLElement.h: ditto above; remove isHTMLElement override.
              * html/HTMLFormControlElement.h: Tell base class we're an HTML element.
              * html/HTMLFrameOwnerElement.cpp:
              (WebCore::HTMLFrameOwnerElement::HTMLFrameOwnerElement): ditto
              * html/HTMLProgressElement.cpp:
              (WebCore::HTMLProgressElement::HTMLProgressElement): ditto
              * mathml/MathMLElement.cpp:
              (WebCore::MathMLElement::MathMLElement): Tell base class we're a styled
              element.
              * rendering/MediaControlElements.cpp:
              (WebCore::MediaControlShadowRootElement::MediaControlShadowRootElement):
              Adjust for changes in flag handling.
              (WebCore::MediaControlElement::MediaControlElement): ditto
              (WebCore::MediaControlInputElement::MediaControlInputElement): ditto
              * rendering/RenderFileUploadControl.cpp:
              (WebCore::RenderFileUploadControl::updateFromElement): ditto
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::updateHoverActiveState): ditto
              * rendering/RenderProgress.cpp:
              (WebCore::RenderProgress::updateValuePartState): ditto
              * rendering/RenderSlider.cpp:
              (WebCore::RenderSlider::updateFromElement): ditto
              * rendering/SVGShadowTreeElements.cpp:
              (WebCore::SVGShadowTreeRootElement::SVGShadowTreeRootElement): ditto
              * rendering/TextControlInnerElements.cpp:
              (WebCore::TextControlInnerElement::attachInnerElement): ditto
              * svg/SVGAnimatedProperty.h:
              (WebCore::SVGAnimatedPropertyTearOff::setBaseVal): ditto
              (WebCore::SVGAnimatedPropertyTearOff::setAnimVal): ditto
              * svg/SVGElement.cpp:
              (WebCore::SVGElement::SVGElement): Tell base class we're
              an svg element.
              (WebCore::SVGElement::ensureRareSVGData): Adjust for flag handling
              changes.
              (WebCore::SVGElement::updateAnimatedSVGAttribute): ditto
              * svg/SVGElement.h:
              (WebCore::SVGElement::invalidateSVGAttributes): ditto
              * svg/SVGPolyElement.cpp:
              (WebCore::SVGPolyElement::svgAttributeChanged): ditto
              * wml/WMLAnchorElement.cpp:
              (WebCore::WMLAnchorElement::WMLAnchorElement): ditto
              * wml/WMLElement.cpp:
              (WebCore::WMLElement::WMLElement): Tell base class we're a styled
              element.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@58914 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      12a77590
  14. 28 Apr, 2010 2 commits
    • darin@apple.com's avatar
      2010-04-28 Darin Adler <darin@apple.com> · f1052663
      darin@apple.com authored
              Reviewed by Dan Bernstein.
      
              Remove some obsolete scrolling code
              https://bugs.webkit.org/show_bug.cgi?id=38293
      
              * page/Chrome.cpp:
              (WebCore::Chrome::scrollRectIntoView): Removed ScrollView* argument.
              * page/Chrome.h: Made scrollRectIntoView non-virtual, and removed ScrollView* argument.
      
              * page/FrameView.cpp: Removed scrollRectIntoViewRecursively.
              * page/FrameView.h: Removed scrollRectIntoViewRecursively and made
              setScrollPosition non-virtual, since there is no class derived from
              this class, and ScrollView's setScrollPosition is non-virtual.
      
              * platform/HostWindow.h: Removed scrollRectIntoView.
      
              * platform/ScrollView.cpp:
              (WebCore::ScrollView::scrollRectIntoViewRecursively): Updated comment
              since I was able to do most of the tasks listed here.
      
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::scrollRectToVisible): Removed 0 passed for
              ScrollView* argument to Chrome::scrollRectIntoView.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@58445 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      f1052663
    • darin@apple.com's avatar
      2010-04-28 Darin Adler <darin@apple.com> · 299e8611
      darin@apple.com authored
              Reviewed by Adele Peterson.
      
              REGRESSION: Autoscroll does not work in Mail messages
              https://bugs.webkit.org/show_bug.cgi?id=38267
              rdar://problem/7559799
      
              The machinery to make autoscrolling work on Mac OS X when a WebView is embedded in another
              view had gotten broken in multiple ways. For some reason, a combination of bugs made it
              partly work until around r48064. This brings it back.
      
              * WebCoreSupport/WebChromeClient.mm:
              (WebChromeClient::scrollRectIntoView): When converting coordinates, use the document view
              rather than the WebView itself. This logic may not be correct for the case where
              usesDocumentViews is NO, but that is currently an experimental mode and can be fixed later.
      2010-04-28  Darin Adler  <darin@apple.com>
      
              Reviewed by Adele Peterson.
      
              REGRESSION: Autoscroll does not work in Mail messages
              https://bugs.webkit.org/show_bug.cgi?id=38267
              rdar://problem/7559799
      
              Still haven't figured out a good way to test this with DumpRenderTree
              or with Safari. Testing has to be done with Mail for now.
      
              The machinery to make autoscrolling work on Mac OS X when a WebView is embedded in another
              view had gotten broken in multiple ways. For some reason, a combination of bugs made it
              partly work until around r48064. This brings it back.
      
              There were three problems:
      
                  1) Code in EventHandler decided there was nothing to scroll, so didn't start
                     the autoscroll timer.
                  2) The wrong rectangle was passed to Chrome::scrollRectIntoView.
                  3) The Mac WebKit implementation of ChromeClient::scrollRectIntoView did incorrect
                     coordinate conversion.
      
              I verified that none of these have any effect on regression tests, or behavior in
              web browsers, or behavior on platforms other than Mac.
      
              * page/EventHandler.cpp:
              (WebCore::canAutoscroll): Added. Returns true for boxes that can scroll directly
              and for the top level box of the top frame.
              (WebCore::EventHandler::handleMouseDraggedEvent): Use canAutoscroll.
              (WebCore::EventHandler::updateAutoscrollRenderer): Ditto.
      
              * page/FrameView.cpp:
              (WebCore::FrameView::scrollToAnchor): Fixed comment.
      
              * platform/ScrollView.cpp:
              (WebCore::ScrollView::scrollRectIntoViewRecursively): Put ASSERT_NOT_REACHED into this
              now-unused function along with some comments about removing some obsolete code.
      
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::scrollRectToVisible): Removed call to scrollRectIntoViewRecursively
              since from the WebKit point of view this is the topmost scroll view anyway. Instead call
              setScrollPosition. Moved the code to call Chrome::scrollRectIntoView here since it needs
              to use a different rectangle anyway.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@58428 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      299e8611
  15. 23 Apr, 2010 1 commit
    • hamaji@chromium.org's avatar
      2010-04-23 Shinichiro Hamaji <hamaji@chromium.org> · 61bc60b3
      hamaji@chromium.org authored
              Reviewed by Darin Adler.
      
              Need borderAndPadding(Width|Height)
              https://bugs.webkit.org/show_bug.cgi?id=38046
      
              Refactoring only, so no new tests.
      
              * rendering/InlineBox.cpp:
              (WebCore::InlineBox::height):
              * rendering/RenderApplet.cpp:
              (WebCore::RenderApplet::createWidgetIfNecessary):
              * rendering/RenderBlock.cpp:
              (WebCore::RenderBlock::isSelfCollapsingBlock):
              (WebCore::RenderBlock::calcPrefWidths):
              * rendering/RenderBox.cpp:
              (WebCore::RenderBox::calcBorderBoxWidth):
              (WebCore::RenderBox::calcBorderBoxHeight):
              (WebCore::RenderBox::calcContentBoxWidth):
              (WebCore::RenderBox::calcContentBoxHeight):
              (WebCore::RenderBox::calcWidth):
              (WebCore::RenderBox::calcHeight):
              (WebCore::RenderBox::calcPercentageHeight):
              (WebCore::RenderBox::calcReplacedHeightUsing):
              (WebCore::RenderBox::availableHeightUsing):
              (WebCore::RenderBox::calcAbsoluteHorizontal):
              (WebCore::RenderBox::calcAbsoluteVertical):
              (WebCore::RenderBox::calcAbsoluteHorizontalReplaced):
              (WebCore::RenderBox::calcAbsoluteVerticalReplaced):
              (WebCore::RenderBox::positionForPoint):
              * rendering/RenderBoxModelObject.h:
              (WebCore::RenderBoxModelObject::borderAndPaddingHeight):
              (WebCore::RenderBoxModelObject::borderAndPaddingWidth):
              * rendering/RenderDataGrid.cpp:
              (WebCore::RenderDataGrid::calcPrefWidths):
              * rendering/RenderFieldset.cpp:
              (WebCore::RenderFieldset::calcPrefWidths):
              * rendering/RenderFileUploadControl.cpp:
              (WebCore::RenderFileUploadControl::calcPrefWidths):
              * rendering/RenderFlexibleBox.cpp:
              (WebCore::RenderFlexibleBox::calcPrefWidths):
              (WebCore::RenderFlexibleBox::allowedChildFlex):
              * rendering/RenderImage.cpp:
              (WebCore::RenderImage::calcPrefWidths):
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::resize):
              * rendering/RenderListBox.cpp:
              (WebCore::RenderListBox::calcPrefWidths):
              (WebCore::RenderListBox::calcHeight):
              * rendering/RenderMenuList.cpp:
              (WebCore::RenderMenuList::calcPrefWidths):
              * rendering/RenderReplaced.cpp:
              (WebCore::RenderReplaced::calcPrefWidths):
              * rendering/RenderSVGRoot.cpp:
              (WebCore::RenderSVGRoot::calcPrefWidths):
              * rendering/RenderSlider.cpp:
              (WebCore::RenderSlider::calcPrefWidths):
              (WebCore::RenderSlider::layout):
              * rendering/RenderTableCell.cpp:
              (WebCore::RenderTableCell::styleOrColWidth):
              * rendering/RenderTextControl.cpp:
              (WebCore::RenderTextControl::textBlockHeight):
              (WebCore::RenderTextControl::textBlockWidth):
              (WebCore::RenderTextControl::calcHeight):
              (WebCore::RenderTextControl::calcPrefWidths):
              * rendering/RenderTextControlSingleLine.cpp:
              (WebCore::RenderTextControlSingleLine::layout):
              * rendering/RenderWidget.cpp:
              (WebCore::RenderWidget::updateWidgetPosition):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@58177 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      61bc60b3
  16. 21 Apr, 2010 1 commit
    • eric@webkit.org's avatar
      2010-04-21 Benjamin Poulain <ikipou@gmail.com> · dbb39405
      eric@webkit.org authored
              Reviewed by Simon Fraser.
      
              Update of fixed elements is not made correctly when the page has been scrolled
              https://bugs.webkit.org/show_bug.cgi?id=36783
      
              * fast/repaint/fixed-child-move-after-scroll.html: Added.
              * fast/repaint/fixed-child-of-fixed-move-after-scroll.html: Added.
              * fast/repaint/fixed-child-of-transformed-move-after-scroll.html: Added.
              * fast/repaint/fixed-move-after-scroll.html: Added.
              * platform/mac/fast/repaint/fixed-child-move-after-scroll-expected.checksum: Added.
              * platform/mac/fast/repaint/fixed-child-move-after-scroll-expected.png: Added.
              * platform/mac/fast/repaint/fixed-child-move-after-scroll-expected.txt: Added.
              * platform/mac/fast/repaint/fixed-child-of-fixed-move-after-scroll-expected.checksum: Added.
              * platform/mac/fast/repaint/fixed-child-of-fixed-move-after-scroll-expected.png: Added.
              * platform/mac/fast/repaint/fixed-child-of-fixed-move-after-scroll-expected.txt: Added.
              * platform/mac/fast/repaint/fixed-child-of-transformed-move-after-scroll-expected.checksum: Added.
              * platform/mac/fast/repaint/fixed-child-of-transformed-move-after-scroll-expected.png: Added.
              * platform/mac/fast/repaint/fixed-child-of-transformed-move-after-scroll-expected.txt: Added.
              * platform/mac/fast/repaint/fixed-move-after-scroll-expected.checksum: Added.
              * platform/mac/fast/repaint/fixed-move-after-scroll-expected.png: Added.
              * platform/mac/fast/repaint/fixed-move-after-scroll-expected.txt: Added.
      2010-04-21  Benjamin Poulain  <ikipou@gmail.com>
      
              Reviewed by Simon Fraser.
      
              Update of fixed elements is not made correctly when the page has been scrolled
              https://bugs.webkit.org/show_bug.cgi?id=36783
      
              When a fixed element was updated, the old geometry was not repainted correctly
              because the repaint rect was cached during the layout and not updated when
              scrolling.
      
              The rect is now updated while scrolling so the region updated correspond to the
              region of the element on the screen.
      
              The method RenderLayer::updateRepaintRectsAfterScroll() updates
              the repaint rect of all fixed tree after scroll.
      
              Tests: fast/repaint/fixed-child-move-after-scroll.html
                     fast/repaint/fixed-child-of-fixed-move-after-scroll.html
                     fast/repaint/fixed-child-of-transformed-move-after-scroll.html
                     fast/repaint/fixed-move-after-scroll.html
      
              * page/FrameView.cpp:
              (WebCore::FrameView::scrollPositionChanged):
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::updateRepaintRectsAfterScroll):
              * rendering/RenderLayer.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@57971 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      dbb39405
  17. 19 Apr, 2010 1 commit
  18. 16 Apr, 2010 1 commit
    • mitz@apple.com's avatar
      <rdar://problem/7873647> Crash when updating hover state · 44b6f2c5
      mitz@apple.com authored
      Reviewed by Simon Fraser.
      
      WebCore: 
      
      Test: fast/dynamic/hover-style-recalc-crash.html
      
      Updating the hover state of an element caused the document to need style
      recalc, and then updating the hover state of a link caused style recalc,
      which changed the render tree while updateHoverActiveState() was iterating
      over it, leading to a crash.
      
      * rendering/RenderLayer.cpp:
      (WebCore::RenderLayer::updateHoverActiveState): Collect the nodes to be
      updated into vectors, then update their active and hover states.
      
      LayoutTests: 
      
      * fast/dynamic/hover-style-recalc-crash-expected.txt: Added.
      * fast/dynamic/hover-style-recalc-crash.html: Added.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@57759 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      44b6f2c5
  19. 12 Apr, 2010 1 commit
    • hyatt@apple.com's avatar
      https://bugs.webkit.org/show_bug.cgi?id=37469, clean up ShadowData to be encapsulated properly. · c245927c
      hyatt@apple.com authored
      Reviewed by Dan Bernstein.
      
      * css/CSSComputedStyleDeclaration.cpp:
      (WebCore::CSSComputedStyleDeclaration::valueForShadow):
      * page/animation/AnimationBase.cpp:
      (WebCore::blendFunc):
      (WebCore::PropertyWrapperShadow::PropertyWrapperShadow):
      (WebCore::PropertyWrapperShadow::equals):
      (WebCore::PropertyWrapperShadow::blend):
      * page/mac/FrameMac.mm:
      (WebCore::Frame::fontAttributesForSelectionStart):
      * rendering/EllipsisBox.cpp:
      (WebCore::EllipsisBox::paint):
      * rendering/InlineFlowBox.cpp:
      (WebCore::InlineFlowBox::placeBoxesHorizontally):
      (WebCore::InlineFlowBox::computeVerticalOverflow):
      (WebCore::InlineFlowBox::paintTextDecorations):
      * rendering/InlineTextBox.cpp:
      (WebCore::paintTextWithShadows):
      (WebCore::InlineTextBox::paint):
      (WebCore::InlineTextBox::paintDecoration):
      * rendering/InlineTextBox.h:
      * rendering/RenderBoxModelObject.cpp:
      (WebCore::RenderBoxModelObject::paintBoxShadow):
      * rendering/RenderLayer.cpp:
      (WebCore::RenderLayer::calculateRects):
      * rendering/RenderObject.cpp:
      (WebCore::RenderObject::adjustRectForOutlineAndShadow):
      * rendering/SVGInlineTextBox.cpp:
      (WebCore::SVGInlineTextBox::paintCharacters):
      * rendering/SVGRenderSupport.cpp:
      (WebCore::SVGRenderBase::prepareToRenderSVGContent):
      * rendering/style/RenderStyle.cpp:
      (WebCore::RenderStyle::setTextShadow):
      (WebCore::RenderStyle::setBoxShadow):
      (WebCore::RenderStyle::getBoxShadowExtent):
      (WebCore::RenderStyle::getBoxShadowHorizontalExtent):
      (WebCore::RenderStyle::getBoxShadowVerticalExtent):
      * rendering/style/RenderStyle.h:
      (WebCore::InheritedFlags::textShadow):
      (WebCore::InheritedFlags::boxShadow):
      * rendering/style/SVGRenderStyle.cpp:
      (WebCore::getSVGShadowExtent):
      * rendering/style/ShadowData.cpp:
      (WebCore::ShadowData::ShadowData):
      (WebCore::ShadowData::operator==):
      * rendering/style/ShadowData.h:
      (WebCore::ShadowData::ShadowData):
      (WebCore::ShadowData::~ShadowData):
      (WebCore::ShadowData::x):
      (WebCore::ShadowData::y):
      (WebCore::ShadowData::blur):
      (WebCore::ShadowData::spread):
      (WebCore::ShadowData::style):
      (WebCore::ShadowData::color):
      (WebCore::ShadowData::next):
      (WebCore::ShadowData::setNext):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@57482 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      c245927c
  20. 02 Apr, 2010 2 commits
  21. 01 Apr, 2010 2 commits
    • simon.fraser@apple.com's avatar
      2010-04-01 Simon Fraser <simon.fraser@apple.com> · 65af30e6
      simon.fraser@apple.com authored
              Reviewed by Darin Adler.
      
              https://bugs.webkit.org/show_bug.cgi?id=36980
              Add object addresses to debug showLayerTree() output.
      
              Add the ability to print RenderLayer and RenderObject addresses in the showLayerTree()
              output.
      
              * platform/text/TextStream.cpp:
              (WebCore::TextStream::operator<<):
              * platform/text/TextStream.h:
              * rendering/RenderLayer.cpp:
              (showLayerTree):
              * rendering/RenderTreeAsText.cpp:
              (WebCore::writeRenderObject):
              (WebCore::write):
              * rendering/RenderTreeAsText.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@56948 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      65af30e6
    • jamesr@google.com's avatar
      2010-04-01 James Robinson <jamesr@chromium.org> · 2a4ad996
      jamesr@google.com authored
              Reviewed by Simon Fraser.
      
              Keeps a transient optimistic offset to the root in RenderLayer::updateLayerPositions
              https://bugs.webkit.org/show_bug.cgi?id=33520
      
              RenderLayer::updateLayerPositions() makes a recursive walk through all RenderLayers and updates the repaint rectangles on each.
              These rectangles have to be calculated in the repaint container's coordinates using RenderObject::mapLocalToContainer to walk
              up to the repaint container.  This patch keeps track of the offset to the root and uses that offset instead of walking back up to
              the root every time.
      
              Tests: fast/layers/nested-layers-1.html
                     fast/layers/nested-layers-2.html
                     fast/layers/nested-layers-3.html
                     fast/layers/nested-layers-4.html
      
              * page/FrameView.cpp:
              (WebCore::FrameView::layout):
              * rendering/RenderBox.cpp:
              (WebCore::RenderBox::outlineBoundsForRepaint):
              * rendering/RenderBox.h:
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::updateLayerPositions):
              * rendering/RenderLayer.h:
              * rendering/RenderObject.h:
              (WebCore::RenderObject::outlineBoundsForRepaint):
              * rendering/RenderSVGModelObject.cpp:
              (WebCore::RenderSVGModelObject::outlineBoundsForRepaint):
              * rendering/RenderSVGModelObject.h:
      2010-04-01  James Robinson  <jamesr@chromium.org>
      
              Reviewed by Simon Fraser.
      
              Mapping from local to container coord space in updateLayerPositions is quadratic
              https://bugs.webkit.org/show_bug.cgi?id=33520
      
              These tests move layers around in various ways to test that the offset caching in
              updateLayerPositions() is correct.
      
              * fast/layers/nested-layers-1-expected.txt: Added.
              * fast/layers/nested-layers-1.html: Added.
              * fast/layers/nested-layers-2-expected.txt: Added.
              * fast/layers/nested-layers-2.html: Added.
              * fast/layers/nested-layers-3-expected.txt: Added.
              * fast/layers/nested-layers-3.html: Added.
              * fast/layers/nested-layers-4-expected.txt: Added.
              * fast/layers/nested-layers-4.html: Added.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@56941 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      2a4ad996
  22. 30 Mar, 2010 1 commit
    • barraclough@apple.com's avatar
      Rubber stamped by Sam Weinig. · 00b7992e
      barraclough@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=36866
      Move CString to WTF
      
      JavaScriptCore: 
      
      * Android.mk:
      * GNUmakefile.am:
      * JavaScriptCore.exp:
      * JavaScriptCore.gypi:
      * JavaScriptCore.pro:
      * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
      * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
      * JavaScriptCore.vcproj/WTF/WTF.vcproj:
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * wtf/text: Added.
      * wtf/text/CString.cpp: Copied from WebCore/platform/text/CString.cpp.
      * wtf/text/CString.h: Copied from WebCore/platform/text/CString.h.
      (WTF::CStringBuffer::data):
      (WTF::CStringBuffer::length):
      (WTF::CStringBuffer::create):
      (WTF::CStringBuffer::CStringBuffer):
      (WTF::CStringBuffer::mutableData):
      (WTF::CString::CString):
      (WTF::CString::isNull):
      (WTF::CString::buffer):
      (WTF::operator!=):
      
      WebCore: 
      
      * Android.mk:
      * ForwardingHeaders/wtf/text: Added.
      * ForwardingHeaders/wtf/text/CString.h: Added.
      * GNUmakefile.am:
      * WebCore.base.exp:
      * WebCore.gypi:
      * WebCore.order:
      * WebCore.pro:
      * WebCore.vcproj/WebCore.vcproj:
      * WebCore.xcodeproj/project.pbxproj:
      * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:
      * bindings/js/JSDOMWindowBase.cpp:
      * bindings/js/ScheduledAction.cpp:
      * bindings/js/ScriptController.cpp:
      * bindings/v8/ScriptController.cpp:
      * bindings/v8/V8Binding.cpp:
      * bindings/v8/V8DOMWindowShell.cpp:
      * bridge/jni/JNIBridge.cpp:
      * bridge/jni/v8/JavaStringV8.h:
      (JSC::Bindings::JavaStringImpl::init):
      * css/CSSParser.cpp:
      * dom/CharacterData.cpp:
      * dom/Document.cpp:
      * dom/Element.cpp:
      * dom/Node.cpp:
      * dom/Position.cpp:
      * dom/Range.cpp:
      * dom/Text.cpp:
      * dom/XMLTokenizer.cpp:
      * dom/XMLTokenizerLibxml2.cpp:
      * dom/XMLTokenizerQt.cpp:
      * editing/SelectionController.cpp:
      * editing/VisiblePosition.cpp:
      * editing/VisibleSelection.cpp:
      * history/CachedFrame.cpp:
      * history/HistoryItem.cpp:
      * history/qt/HistoryItemQt.cpp:
      * html/FormDataList.h:
      (WebCore::FormDataList::appendData):
      (WebCore::FormDataList::Item::Item):
      (WebCore::FormDataList::Item::data):
      * html/HTMLDocument.cpp:
      * html/PreloadScanner.cpp:
      * inspector/InspectorController.cpp:
      * inspector/InspectorDOMAgent.cpp:
      * loader/DocLoader.cpp:
      * loader/FTPDirectoryDocument.cpp:
      * loader/FrameLoader.cpp:
      * loader/HistoryController.cpp:
      * loader/ProgressTracker.cpp:
      * loader/appcache/ApplicationCacheStorage.cpp:
      * loader/archive/cf/LegacyWebArchive.cpp:
      * loader/icon/wince/IconDatabaseWince.cpp:
      * loader/loader.cpp:
      * page/Console.cpp:
      * page/DOMWindow.cpp:
      * page/SecurityOrigin.cpp:
      * page/XSSAuditor.cpp:
      * page/animation/AnimationBase.cpp:
      * platform/ContextMenu.cpp:
      * platform/FileSystem.h:
      * platform/KURL.cpp:
      * platform/KURLGoogle.cpp:
      * platform/KURLGooglePrivate.h:
      * platform/Pasteboard.h:
      * platform/android/FileSystemAndroid.cpp:
      * platform/android/TemporaryLinkStubs.cpp:
      * platform/brew/KURLBrew.cpp:
      * platform/cf/FileSystemCF.cpp:
      * platform/chromium/MIMETypeRegistryChromium.cpp:
      * platform/efl/FileSystemEfl.cpp:
      * platform/efl/PasteboardEfl.cpp:
      * platform/efl/PlatformKeyboardEventEfl.cpp:
      * platform/efl/PlatformScreenEfl.cpp:
      * platform/efl/RenderThemeEfl.cpp:
      * platform/efl/ScrollbarEfl.cpp:
      * platform/efl/SharedBufferEfl.cpp:
      * platform/efl/WidgetEfl.cpp:
      * platform/graphics/GlyphPageTreeNode.cpp:
      * platform/graphics/cairo/FontPlatformDataCairo.cpp:
      * platform/graphics/cg/ImageBufferCG.cpp:
      * platform/graphics/chromium/FontCacheLinux.cpp:
      * platform/graphics/chromium/FontPlatformDataLinux.h:
      * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
      * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
      * platform/graphics/gtk/FontPlatformDataPango.cpp:
      * platform/graphics/gtk/IconGtk.cpp:
      * platform/graphics/gtk/ImageGtk.cpp:
      * platform/graphics/haiku/GraphicsContextHaiku.cpp:
      * platform/graphics/mac/GraphicsContext3DMac.cpp:
      * platform/graphics/mac/GraphicsLayerCA.mm:
      * platform/graphics/qt/GraphicsContext3DQt.cpp:
      * platform/graphics/qt/ImageBufferQt.cpp:
      * platform/graphics/qt/MediaPlayerPrivatePhonon.cpp:
      * platform/graphics/qt/MediaPlayerPrivateQt.cpp:
      * platform/graphics/skia/GraphicsLayerSkia.cpp:
      * platform/graphics/win/GraphicsLayerCACF.cpp:
      * platform/graphics/win/WKCACFLayer.cpp:
      * platform/graphics/wx/FontPlatformData.h:
      * platform/gtk/ClipboardGtk.cpp:
      * platform/gtk/ContextMenuItemGtk.cpp:
      * platform/gtk/DataObjectGtk.h:
      * platform/gtk/FileChooserGtk.cpp:
      * platform/gtk/FileSystemGtk.cpp:
      * platform/gtk/GeolocationServiceGtk.cpp:
      * platform/gtk/KURLGtk.cpp:
      * platform/gtk/Language.cpp:
      * platform/gtk/LocalizedStringsGtk.cpp:
      * platform/gtk/PasteboardGtk.cpp:
      * platform/gtk/PopupMenuGtk.cpp:
      * platform/gtk/RenderThemeGtk.cpp:
      * platform/gtk/SharedBufferGtk.cpp:
      * platform/haiku/FileSystemHaiku.cpp:
      * platform/haiku/PlatformKeyboardEventHaiku.cpp:
      * platform/network/CredentialStorage.cpp:
      * platform/network/FormData.cpp:
      * platform/network/FormData.h:
      * platform/network/FormDataBuilder.cpp:
      * platform/network/FormDataBuilder.h:
      * platform/network/HTTPParsers.cpp:
      * platform/network/android/ResourceHandleAndroid.cpp:
      * platform/network/cf/FormDataStreamCFNet.cpp:
      * platform/network/cf/ResourceHandleCFNet.cpp:
      * platform/network/chromium/ResourceResponse.h:
      * platform/network/curl/FormDataStreamCurl.cpp:
      * platform/network/curl/ResourceHandleManager.cpp:
      * platform/network/curl/ResourceHandleManager.h:
      * platform/network/mac/FormDataStreamMac.mm:
      * platform/network/mac/ResourceHandleMac.mm:
      * platform/network/qt/QNetworkReplyHandler.cpp:
      * platform/network/soup/CookieJarSoup.cpp:
      * platform/network/soup/ResourceHandleSoup.cpp:
      * platform/network/soup/ResourceRequestSoup.cpp:
      * platform/network/soup/ResourceResponseSoup.cpp:
      * platform/network/win/ResourceHandleWin.cpp:
      * platform/posix/FileSystemPOSIX.cpp:
      * platform/qt/FileSystemQt.cpp:
      * platform/qt/KURLQt.cpp:
      * platform/qt/TemporaryLinkStubs.cpp:
      * platform/sql/chromium/SQLiteFileSystemChromium.cpp:
      * platform/text/CString.cpp: Removed.
      * platform/text/CString.h: Removed.
      * platform/text/PlatformString.h:
      * platform/text/String.cpp:
      * platform/text/StringImpl.cpp:
      * platform/text/TextCodec.h:
      * platform/text/TextCodecICU.cpp:
      * platform/text/TextCodecLatin1.cpp:
      * platform/text/TextCodecUTF16.cpp:
      * platform/text/TextCodecUserDefined.cpp:
      * platform/text/TextEncoding.cpp:
      * platform/text/TextEncoding.h:
      * platform/text/chromium/TextBreakIteratorInternalICUChromium.cpp:
      * platform/text/gtk/TextCodecGtk.cpp:
      * platform/text/haiku/StringHaiku.cpp:
      * platform/text/mac/TextCodecMac.cpp:
      * platform/text/qt/TextCodecQt.cpp:
      * platform/text/wx/StringWx.cpp:
      * platform/win/ClipboardUtilitiesWin.cpp:
      * platform/win/ClipboardWin.cpp:
      * platform/win/ContextMenuItemWin.cpp:
      * platform/win/ContextMenuWin.cpp:
      * platform/win/FileSystemWin.cpp:
      * platform/win/GDIObjectCounter.cpp:
      * platform/win/Language.cpp:
      * platform/win/PasteboardWin.cpp:
      * platform/wince/FileSystemWince.cpp:
      * platform/wince/KeygenWince.cpp:
      * platform/wince/PasteboardWince.cpp:
      * platform/wx/FileSystemWx.cpp:
      * platform/wx/LoggingWx.cpp:
      * plugins/PluginDebug.h:
      * plugins/PluginPackage.cpp:
      * plugins/PluginStream.cpp:
      * plugins/PluginStream.h:
      * plugins/PluginView.h:
      * plugins/gtk/PluginPackageGtk.cpp:
      * plugins/mac/PluginPackageMac.cpp:
      * plugins/qt/PluginPackageQt.cpp:
      * plugins/symbian/PluginPackageSymbian.cpp:
      * plugins/win/PluginPackageWin.cpp:
      * rendering/RenderLayer.cpp:
      * rendering/RenderLayerCompositor.cpp:
      * rendering/RenderTreeAsText.cpp:
      * storage/Database.cpp:
      * storage/SQLTransactionCoordinator.cpp:
      * storage/SQLTransactionCoordinator.h:
      * storage/StorageAreaSync.cpp:
      * storage/StorageSyncManager.cpp:
      * storage/chromium/DatabaseTrackerChromium.cpp:
      * storage/chromium/QuotaTracker.cpp:
      * storage/chromium/QuotaTracker.h:
      * svg/SVGFontFaceElement.cpp:
      * svg/SVGStyledElement.cpp:
      * svg/SVGUseElement.cpp:
      * websockets/WebSocket.cpp:
      * websockets/WebSocketChannel.cpp:
      * websockets/WebSocketHandshake.cpp:
      * wml/WMLErrorHandling.cpp:
      * wml/WMLGoElement.cpp:
      * wml/WMLPageState.cpp:
      * wml/WMLPostfieldElement.cpp:
      * wml/WMLSelectElement.cpp:
      * xml/XMLHttpRequest.cpp:
      * xml/XSLStyleSheetLibxslt.cpp:
      * xml/XSLTProcessorLibxslt.cpp:
      
      WebKit: 
      
      * efl/WebCoreSupport/ChromeClientEfl.cpp:
      * efl/ewk/ewk_frame.cpp:
      (ewk_frame_name_get):
      (ewk_frame_selection_get):
      (ewk_frame_uri_changed):
      * efl/ewk/ewk_history.cpp:
      * efl/ewk/ewk_settings.cpp:
      
      WebKit/chromium: 
      
      * public/WebCString.h:
      * src/FrameLoaderClientImpl.cpp:
      * src/GraphicsContext3D.cpp:
      * src/WebCString.cpp:
      (WebKit::WebCString::assign):
      (WebKit::WebCString::WebCString):
      (WebKit::WebCString::operator=):
      (WebKit::WebCString::operator WTF::CString):
      * src/WebMediaPlayerClientImpl.cpp:
      * src/WebString.cpp:
      * src/WebURLError.cpp:
      
      WebKit/gtk: 
      
      * WebCoreSupport/ChromeClientGtk.cpp:
      * WebCoreSupport/ContextMenuClientGtk.cpp:
      * WebCoreSupport/EditorClientGtk.cpp:
      * WebCoreSupport/FrameLoaderClientGtk.cpp:
      * WebCoreSupport/InspectorClientGtk.cpp:
      * gdom/ConvertToGCharPrivate.h:
      * webkit/webkitdownload.cpp:
      * webkit/webkithittestresult.cpp:
      * webkit/webkitnetworkrequest.cpp:
      * webkit/webkitprivate.h:
      * webkit/webkitsecurityorigin.cpp:
      * webkit/webkitwebdatabase.cpp:
      * webkit/webkitwebframe.cpp:
      * webkit/webkitwebhistoryitem.cpp:
      (webkit_web_history_item_finalize):
      (webkit_web_history_item_get_target):
      * webkit/webkitwebresource.cpp:
      * webkit/webkitwebsettings.cpp:
      * webkit/webkitwebview.cpp:
      
      WebKit/mac: 
      
      * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
      (WebKit::NetscapePluginInstanceProxy::getCookies):
      (WebKit::NetscapePluginInstanceProxy::getProxy):
      (WebKit::NetscapePluginInstanceProxy::getAuthenticationInfo):
      (WebKit::NetscapePluginInstanceProxy::resolveURL):
      * Plugins/WebBaseNetscapePluginView.h:
      * Plugins/WebBaseNetscapePluginView.mm:
      * Plugins/WebNetscapePluginView.mm:
      (-[WebNetscapePluginView resolveURL:forTarget:]):
      
      WebKit/qt: 
      
      * Api/qwebelement.cpp:
      
      WebKit/win: 
      
      * WebDownload.cpp:
      * WebDownloadCFNet.cpp:
      * WebDownloadCurl.cpp:
      * WebHistoryItem.cpp:
      * WebLocalizableStrings.cpp:
      * WebMutableURLRequest.cpp:
      * WebPreferences.cpp:
      (WebPreferences::migrateWebKitPreferencesToCFPreferences):
      * WebView.cpp:
      
      WebKit/wx: 
      
      * WebFrame.cpp:
      * WebView.cpp:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@56825 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      00b7992e
  23. 12 Mar, 2010 2 commits
    • hyatt@apple.com's avatar
      https://bugs.webkit.org/show_bug.cgi?id=36069 · 9f47d581
      hyatt@apple.com authored
              
      Reviewed by Dan Bernstein.
      
      Eliminate InlineRunBox.
      
      * WebCore.xcodeproj/project.pbxproj:
      * rendering/InlineFlowBox.cpp:
      (WebCore::InlineFlowBox::adjustPosition):
      (WebCore::InlineFlowBox::paintFillLayer):
      (WebCore::InlineFlowBox::paintBoxDecorations):
      (WebCore::InlineFlowBox::paintMask):
      * rendering/InlineFlowBox.h:
      (WebCore::InlineFlowBox::InlineFlowBox):
      (WebCore::InlineFlowBox::prevLineBox):
      (WebCore::InlineFlowBox::nextLineBox):
      (WebCore::InlineFlowBox::setNextLineBox):
      (WebCore::InlineFlowBox::setPreviousLineBox):
      * rendering/InlineRunBox.h: Removed.
      * rendering/InlineTextBox.h:
      (WebCore::InlineTextBox::InlineTextBox):
      (WebCore::InlineTextBox::prevTextBox):
      (WebCore::InlineTextBox::nextTextBox):
      (WebCore::InlineTextBox::setNextTextBox):
      (WebCore::InlineTextBox::setPreviousTextBox):
      * rendering/RenderBlock.cpp:
      (WebCore::RenderBlock::destroy):
      (WebCore::RenderBlock::rightmostPosition):
      (WebCore::RenderBlock::leftmostPosition):
      * rendering/RenderInline.cpp:
      (WebCore::RenderInline::destroy):
      (WebCore::RenderInline::absoluteRects):
      (WebCore::RenderInline::absoluteQuads):
      (WebCore::RenderInline::linesBoundingBox):
      (WebCore::RenderInline::linesVisibleOverflowBoundingBox):
      (WebCore::RenderInline::addFocusRingRects):
      (WebCore::RenderInline::paintOutline):
      * rendering/RenderLayer.cpp:
      (WebCore::RenderLayer::localBoundingBox):
      * rendering/RenderLineBoxList.cpp:
      (WebCore::RenderLineBoxList::deleteLineBoxTree):
      (WebCore::RenderLineBoxList::extractLineBox):
      (WebCore::RenderLineBoxList::attachLineBox):
      (WebCore::RenderLineBoxList::removeLineBox):
      (WebCore::RenderLineBoxList::deleteLineBoxes):
      (WebCore::RenderLineBoxList::dirtyLineBoxes):
      (WebCore::RenderLineBoxList::paint):
      (WebCore::RenderLineBoxList::hitTest):
      (WebCore::RenderLineBoxList::dirtyLinesFromChangedChild):
      (WebCore::RenderLineBoxList::checkConsistency):
      * rendering/RenderSVGInline.cpp:
      (WebCore::RenderSVGInline::absoluteRects):
      (WebCore::RenderSVGInline::absoluteQuads):
      * rendering/RenderSVGText.cpp:
      (WebCore::RenderSVGText::absoluteRects):
      (WebCore::RenderSVGText::absoluteQuads):
      (WebCore::RenderSVGText::objectBoundingBox):
      * rendering/RenderText.cpp:
      (WebCore::RenderText::extractTextBox):
      (WebCore::RenderText::attachTextBox):
      (WebCore::RenderText::removeTextBox):
      (WebCore::RenderText::createInlineTextBox):
      (WebCore::RenderText::positionLineBox):
      * rendering/RootInlineBox.h:
      (WebCore::RootInlineBox::nextRootBox):
      (WebCore::RootInlineBox::prevRootBox):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@55928 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      9f47d581
    • mitz@apple.com's avatar
      <rdar://problem/7694674> Hover states not updated when overflow section... · b5a56888
      mitz@apple.com authored
      <rdar://problem/7694674> Hover states not updated when overflow section scrolls under stationary mouse pointer
      https://bugs.webkit.org/show_bug.cgi?id=35949
      
      Reviewed by Darin Adler.
      
      WebCore: 
      
      Test: fast/events/overflow-scroll-fake-mouse-move.html
      
      Soon after an overflow section scrolls under the mouse pointer, dispatch
      a fake mouse move event. This is similar to how frame scrolling is handled
      in WebKit, and has the effect of updating hover state, dispatching DOM mouse
      events, and updating the tool tip.
      
      * page/EventHandler.cpp:
      (WebCore::EventHandler::EventHandler): Initialize m_fakeMouseMoveEventTimer.
      (WebCore::EventHandler::~EventHandler): Assert that the timer is not active.
      (WebCore::EventHandler::clear): Stop the timer.
      (WebCore::EventHandler::handleMousePressEvent): Cancel pending fake mouse
      move events.
      (WebCore::EventHandler::handleMouseMoveEvent): Ditto.
      (WebCore::EventHandler::dispatchFakeMouseMoveEventSoonInQuad): If the mouse
      is in the passed-in quad, ensure that a fake mouse move event is scheduled
      to fire soon.
      (WebCore::EventHandler::cancelFakeMouseMoveEvent): Does what the name says.
      (WebCore::EventHandler::fakeMouseMoveEventTimerFired): Constructs a
      PlatformMouseEvent with the current mouse location, modifier key state and
      time stamp and calls mouseMoved().
      * page/EventHandler.h:
      * platform/PlatformKeyboardEvent.h: Declared getCurrentModifierState().
      * platform/android/KeyEventAndroid.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Stubbed out.
      * platform/brew/PlatformKeyboardEventBrew.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Ditto.
      * platform/chromium/PlatformKeyboardEventChromium.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Added.
      * platform/efl/PlatformKeyboardEventEfl.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Stubbed out.
      * platform/gtk/KeyEventGtk.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Ditto.
      * platform/haiku/PlatformKeyboardEventHaiku.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Added.
      * platform/mac/KeyEventMac.mm:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Ditto.
      * platform/qt/PlatformKeyboardEventQt.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Stubbed out.
      * platform/win/KeyEventWin.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Added.
      * platform/wx/KeyboardEventWx.cpp:
      (WebCore::PlatformKeyboardEvent::getCurrentModifierState): Ditto.
      * rendering/RenderLayer.cpp:
      (WebCore::RenderLayer::scrollToOffset): Call
      EventHandler::dispatchFakeMouseMoveEventSoonInQuad(). Moved things around
      a little to avoid computing the repaint rect twice.
      
      LayoutTests: 
      
      * fast/events/overflow-scroll-fake-mouse-move-expected.txt: Added.
      * fast/events/overflow-scroll-fake-mouse-move.html: Added.
      * fast/events/touch/basic-multi-touch-events.html:
      * fast/events/touch/basic-single-touch-events.html:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@55909 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      b5a56888
  24. 05 Mar, 2010 1 commit
  25. 22 Feb, 2010 2 commits
    • simon.fraser@apple.com's avatar
      2010-02-22 Simon Fraser <simon.fraser@apple.com> · 5452b814
      simon.fraser@apple.com authored
              Reviewed by Dan Bernstein, Darin Adler.
      
              Remove addScrolledContentOffset/subtractScrolledContentOffset
              https://bugs.webkit.org/show_bug.cgi?id=35225
      
              Remove RenderLayer's addScrolledContentOffset() and subtractScrolledContentOffset()
              methods, and instead use the existing scrolledContentOffset(), and use
              IntSize and IntPoint instead of lots of x, y variables.
      
              Added new IntPoint toPoint(const IntSize&) method as a convenience to convert a size to a point,
              which is needed in a few places.
      
              * page/EventHandler.cpp:
              (WebCore::EventHandler::handleDrag): Use the new toPoint() convenience.
              * platform/graphics/IntPoint.h:
              (WebCore::toPoint): New convenience method to convert an IntSize to an IntPoint.
              * rendering/LayoutState.cpp:
              (WebCore::LayoutState::LayoutState):
              * rendering/RenderBlock.cpp:
              (WebCore::RenderBlock::layoutBlock):
              (WebCore::RenderBlock::paintObject):
              (WebCore::RenderBlock::selectionGapRectsForRepaint):
              (WebCore::RenderBlock::nodeAtPoint):
              (WebCore::RenderBlock::offsetForContents):
              * rendering/RenderBoxModelObject.cpp:
              (WebCore::RenderBoxModelObject::paintFillLayerExtended):
              * rendering/RenderInline.cpp:
              (WebCore::RenderInline::clippedOverflowRectForRepaint):
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::updateLayerPosition):
              * rendering/RenderLayer.h:
              (WebCore::RenderLayer::size):
              * rendering/RenderObject.cpp:
              (WebCore::RenderObject::computeRectForRepaint):
              * rendering/TextControlInnerElements.cpp:
              (WebCore::RenderTextControlInnerBlock::positionForPoint):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@55090 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      5452b814
    • eric@webkit.org's avatar
      2010-02-22 Steve Block <steveblock@google.com> · dca330c4
      eric@webkit.org authored
              Reviewed by Simon Fraser.
      
              Simplifies calculation of the transform in RenderLayer::paintLayer
              https://bugs.webkit.org/show_bug.cgi?id=35101
      
              No new tests, optimization only.
      
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::paintLayer):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@55081 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      dca330c4
  26. 21 Feb, 2010 1 commit
    • simon.fraser@apple.com's avatar
      2010-02-21 Simon Fraser <simon.fraser@apple.com> · 7d7eb245
      simon.fraser@apple.com authored
              Reviewed by Dan Bernstein.
      
              https://bugs.webkit.org/show_bug.cgi?id=22215
              Avoid calling absoluteClippedOverflowRect() so many times
      
              RenderLayer::updateLayerPositions() computes the clipped overflow rect
              and the outline bounds for repaint, and then calls repaintAfterLayoutIfNeeded()
              which can compute the same rects all over again. Avoid this by passing
              these two rects into repaintAfterLayoutIfNeeded() if known. This measurably
              reduces the time spent in updateLayerPositions() for some content.
      
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::updateLayerPositions):
              * rendering/RenderObject.cpp:
              (WebCore::RenderObject::repaintAfterLayoutIfNeeded):
              * rendering/RenderObject.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@55065 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      7d7eb245
  27. 16 Feb, 2010 1 commit
    • simon.fraser@apple.com's avatar
      2010-02-16 Simon Fraser <simon.fraser@apple.com> · 958dd83e
      simon.fraser@apple.com authored
              Reviewed by Dan Bernstein.
      
              https://bugs.webkit.org/show_bug.cgi?id=34999
              Compositing layers inside overflow:scroll divs are not always updated on scrolling
      
              When RenderLayer::scrollToOffset() updates compositing layer positions, it needs
              to start updating at its stacking context rather than just its compositing ancestor.
              The stacking context is guaranteed to contain all descendants of the overflow
              layer, including those that are not direct descendants of the overflow layer in stacking
              (and therefore compositing) order.
      
              Test: compositing/overflow/scroll-ancestor-update.html
      
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::scrollToOffset):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@54848 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      958dd83e
  28. 08 Feb, 2010 1 commit
    • krit@webkit.org's avatar
      2010-02-08 Dirk Schulze <krit@webkit.org> · 2b95a9a6
      krit@webkit.org authored
              Reviewed by Nikolas Zimmermann.
      
              Add back an AffineTransform class for use by SVG
              https://bugs.webkit.org/show_bug.cgi?id=33750
      
              This adds back AffineTransform. This saves additional 4% memory consumption
              on the 50k rects stress test: https://bugs.webkit.org/attachment.cgi?id=46721
              It also makes it possible to optimize the calculations internally of
              AffineTransform to the needs of 2D transformations (the second benefit for SVG,
              which uses transformations relative often at the moment.
              Everything that is 2D related (like images, patterns, gradients, fonts), uses
              AffineTransform now.
      
              * WebCore.xcodeproj/project.pbxproj:
              * bindings/js/JSSVGMatrixCustom.cpp:
              (WebCore::JSSVGMatrix::multiply):
              (WebCore::JSSVGMatrix::inverse):
              (WebCore::JSSVGMatrix::rotateFromVector):
              * bindings/js/JSSVGPODTypeWrapper.h:
              * bindings/scripts/CodeGeneratorJS.pm:
              * bindings/scripts/CodeGeneratorObjC.pm:
              * bindings/scripts/CodeGeneratorV8.pm:
              * bindings/v8/V8Index.h:
              * bindings/v8/custom/V8SVGMatrixCustom.cpp:
              (WebCore::V8SVGMatrix::multiplyCallback):
              (WebCore::V8SVGMatrix::inverseCallback):
              (WebCore::V8SVGMatrix::rotateFromVectorCallback):
              * html/HTMLCanvasElement.cpp: Changed to AffineTransform now
              (WebCore::HTMLCanvasElement::baseTransform):
              * html/HTMLCanvasElement.h:
              * platform/graphics/FloatPoint.cpp:
              (WebCore::FloatPoint::matrixTransform):
              * platform/graphics/FloatPoint.h:
              * platform/graphics/GeneratedImage.cpp:
              (WebCore::GeneratedImage::drawPattern):
              * platform/graphics/GeneratedImage.h:
              * platform/graphics/Gradient.cpp:
              (WebCore::Gradient::setGradientSpaceTransform):
              (WebCore::Gradient::setPlatformGradientSpaceTransform):
              * platform/graphics/Gradient.h:
              (WebCore::Gradient::gradientSpaceTransform):
              * platform/graphics/GraphicsContext.h:
              * platform/graphics/Image.cpp:
              (WebCore::Image::drawTiled):
              * platform/graphics/Image.h:
              * platform/graphics/ImageBuffer.h:
              (WebCore::ImageBuffer::baseTransform):
              * platform/graphics/Path.h:
              * platform/graphics/Pattern.cpp:
              (WebCore::Pattern::setPatternSpaceTransform):
              * platform/graphics/Pattern.h:
              (WebCore::Pattern::create):
              (WebCore::Pattern::tileImage):
              * platform/graphics/cairo/FontCairo.cpp:
              (WebCore::Font::drawGlyphs):
              * platform/graphics/cairo/GraphicsContextCairo.cpp:
              (WebCore::setPlatformFill):
              (WebCore::setPlatformStroke):
              (WebCore::GraphicsContext::getCTM):
              * platform/graphics/cairo/ImageCairo.cpp:
              (WebCore::Image::drawPattern):
              * platform/graphics/cairo/PathCairo.cpp:
              * platform/graphics/cairo/PatternCairo.cpp:
              (WebCore::Pattern::createPlatformPattern):
              * platform/graphics/cg/GraphicsContextCG.cpp:
              (WebCore::GraphicsContext::getCTM):
              * platform/graphics/cg/GraphicsContextPlatformPrivateCG.h:
              (WebCore::GraphicsContextPlatformPrivate::concatCTM):
              * platform/graphics/cg/ImageCG.cpp:
              (WebCore::Image::drawPattern):
              * platform/graphics/cg/PathCG.cpp:
              * platform/graphics/cg/PatternCG.cpp:
              (WebCore::Pattern::createPlatformPattern):
              * platform/graphics/haiku/GraphicsContextHaiku.cpp:
              (WebCore::GraphicsContext::getCTM):
              * platform/graphics/haiku/ImageHaiku.cpp:
              (WebCore::Image::drawPattern):
              * platform/graphics/haiku/PathHaiku.cpp:
              * platform/graphics/qt/FontQt.cpp:
              (WebCore::Font::drawComplexText):
              * platform/graphics/qt/GraphicsContextQt.cpp:
              (WebCore::GraphicsContext::getCTM):
              (WebCore::GraphicsContext::fillPath):
              (WebCore::GraphicsContext::strokePath):
              (WebCore::GraphicsContext::fillRect):
              * platform/graphics/qt/ImageQt.cpp:
              (WebCore::Image::drawPattern):
              * platform/graphics/qt/PathQt.cpp:
              * platform/graphics/qt/PatternQt.cpp:
              (WebCore::Pattern::createPlatformPattern):
              * platform/graphics/skia/GradientSkia.cpp:
              (WebCore::Gradient::setPlatformGradientSpaceTransform):
              * platform/graphics/skia/GraphicsContextSkia.cpp:
              (WebCore::GraphicsContext::getCTM):
              * platform/graphics/skia/ImageSkia.cpp:
              (WebCore::Image::drawPattern):
              * platform/graphics/skia/PathSkia.cpp:
              * platform/graphics/skia/PatternSkia.cpp:
              (WebCore::Pattern::platformPattern):
              * platform/graphics/skia/SkiaFontWin.cpp:
              (WebCore::windowsCanHandleTextDrawing):
              * platform/graphics/transforms/AffineTransform.cpp:
              (WebCore::AffineTransform::makeIdentity): needed by some parts of WebCore
              (WebCore::AffineTransform::scale): Didn't scale the complete matrix
              (WebCore::AffineTransform::translate): Didn't respect other transformations
              (WebCore::AffineTransform::shear): direct calculation, no extra multiply of matrices
              (WebCore::AffineTransform::map):
              (WebCore::AffineTransform::mapPoint):
              (WebCore::AffineTransform::mapRect):
              * platform/graphics/transforms/AffineTransform.h:
              (WebCore::AffineTransform::isIdentityOrTranslation):
              * platform/graphics/transforms/TransformationMatrix.cpp:
              (WebCore::TransformationMatrix::toAffineTransform):
              * platform/graphics/transforms/TransformationMatrix.h:
              * platform/graphics/win/FontCGWin.cpp:
              (WebCore::drawGDIGlyphs):
              * platform/graphics/win/GraphicsContextCGWin.cpp:
              * platform/graphics/win/GraphicsContextCairoWin.cpp:
              * platform/graphics/win/GraphicsContextWin.cpp:
              (WebCore::GraphicsContextPlatformPrivate::concatCTM):
              * platform/graphics/wince/FontWince.cpp:
              * platform/graphics/wince/GraphicsContextWince.cpp:
              (WebCore::GraphicsContextPlatformPrivate::concatCTM):
              (WebCore::GraphicsContext::fillPath):
              (WebCore::GraphicsContext::strokePath):
              (WebCore::GraphicsContext::getCTM):
              (WebCore::GraphicsContext::drawBitmapPattern):
              * platform/graphics/wince/ImageBufferWince.cpp:
              (WebCore::):
              (WebCore::BufferedImage::drawPattern):
              * platform/graphics/wince/PathWince.cpp:
              (WebCore::Path::transform):
              * platform/graphics/wince/PlatformPathWince.cpp:
              (WebCore::drawPolygons):
              (WebCore::PathPolygon::transform):
              (WebCore::PlatformPathElement::transform):
              (WebCore::PlatformPath::strokePath):
              (WebCore::PlatformPath::fillPath):
              (WebCore::PlatformPath::transform):
              * platform/graphics/wince/PlatformPathWince.h:
              (WebCore::):
              * platform/graphics/wx/GraphicsContextWx.cpp:
              (WebCore::GraphicsContext::getCTM):
              * platform/graphics/wx/ImageWx.cpp:
              (WebCore::BitmapImage::drawPattern):
              (WebCore::Image::drawPattern):
              * platform/graphics/wx/PathWx.cpp:
              * platform/gtk/RenderThemeGtk.cpp:
              (WebCore::paintMozillaGtkWidget):
              * plugins/win/PluginViewWin.cpp:
              (WebCore::PluginView::paintWindowedPluginIntoContext):
              * rendering/RenderBox.cpp:
              (WebCore::RenderBox::localTransform):
              * rendering/RenderBox.h:
              * rendering/RenderBoxModelObject.cpp:
              (WebCore::RenderBoxModelScaleData::RenderBoxModelScaleData):
              (WebCore::RenderBoxModelScaleData::transform):
              (WebCore::RenderBoxModelScaleData::setTransform):
              (WebCore::RenderBoxModelScaleObserver::shouldPaintBackgroundAtLowQuality):
              (WebCore::RenderBoxModelObject::paintBoxShadow):
              * rendering/RenderForeignObject.cpp:
              (WebCore::RenderForeignObject::translationForAttributes):
              (WebCore::RenderForeignObject::localToParentTransform):
              * rendering/RenderForeignObject.h:
              (WebCore::RenderForeignObject::localTransform):
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::paintLayer):
              * rendering/RenderObject.cpp:
              (WebCore::RenderObject::localTransform):
              (WebCore::RenderObject::localToParentTransform):
              (WebCore::RenderObject::absoluteTransform):
              * rendering/RenderObject.h:
              * rendering/RenderPath.cpp:
              (WebCore::RenderPath::localToParentTransform):
              (WebCore::RenderPath::localTransform):
              * rendering/RenderPath.h:
              * rendering/RenderSVGHiddenContainer.h:
              (WebCore::RenderSVGHiddenContainer::absoluteTransform):
              * rendering/RenderSVGImage.h:
              (WebCore::RenderSVGImage::localToParentTransform):
              (WebCore::RenderSVGImage::localTransform):
              * rendering/RenderSVGRoot.cpp:
              (WebCore::RenderSVGRoot::localToBorderBoxTransform):
              (WebCore::RenderSVGRoot::localToRepaintContainerTransform):
              (WebCore::RenderSVGRoot::localToParentTransform):
              (WebCore::RenderSVGRoot::absoluteTransform):
              (WebCore::RenderSVGRoot::localTransform):
              * rendering/RenderSVGRoot.h:
              * rendering/RenderSVGText.h:
              (WebCore::RenderSVGText::localToParentTransform):
              (WebCore::RenderSVGText::localTransform):
              * rendering/RenderSVGTransformableContainer.cpp:
              (WebCore::RenderSVGTransformableContainer::localToParentTransform):
              (WebCore::RenderSVGTransformableContainer::localTransform):
              (WebCore::RenderSVGTransformableContainer::calculateLocalTransform):
              * rendering/RenderSVGTransformableContainer.h:
              * rendering/RenderSVGViewportContainer.cpp:
              (WebCore::RenderSVGViewportContainer::markerBoundaries):
              (WebCore::RenderSVGViewportContainer::markerContentTransformation):
              (WebCore::RenderSVGViewportContainer::viewportTransform):
              (WebCore::RenderSVGViewportContainer::localToParentTransform):
              (WebCore::RenderSVGViewportContainer::absoluteTransform):
              * rendering/RenderSVGViewportContainer.h:
              * rendering/SVGCharacterLayoutInfo.cpp:
              (WebCore::SVGChar::characterTransform):
              * rendering/SVGCharacterLayoutInfo.h:
              (WebCore::SVGTextChunkWalker::operator()):
              * rendering/SVGInlineTextBox.cpp:
              (WebCore::SVGInlineTextBox::calculateGlyphBoundaries):
              (WebCore::SVGInlineTextBoxClosestCharacterToPositionWalker::chunkPortionCallback):
              (WebCore::SVGInlineTextBoxSelectionRectWalker::chunkPortionCallback):
              (WebCore::SVGInlineTextBox::paintCharacters):
              (WebCore::SVGInlineTextBox::paintDecoration):
              * rendering/SVGMarkerLayoutInfo.h:
              (WebCore::MarkerLayout::MarkerLayout):
              * rendering/SVGRenderSupport.cpp:
              (WebCore::applyTransformToPaintInfo):
              * rendering/SVGRenderSupport.h:
              * rendering/SVGRenderTreeAsText.cpp:
              (WebCore::operator<<):
              * rendering/SVGRenderTreeAsText.h:
              * rendering/SVGRootInlineBox.cpp:
              (WebCore::SVGRootInlineBoxPaintWalker::chunkPortionCallback):
              (WebCore::applyTextLengthCorrectionToTextChunk):
              (WebCore::SVGRootInlineBox::buildLayoutInformation):
              * rendering/TransformState.cpp:
              (WebCore::TransformState::applyTransform):
              * rendering/TransformState.h:
              * svg/GradientAttributes.h:
              (WebCore::GradientAttributes::gradientTransform):
              (WebCore::GradientAttributes::setGradientTransform):
              * svg/PatternAttributes.h:
              (WebCore::PatternAttributes::patternTransform):
              (WebCore::PatternAttributes::setPatternTransform):
              * svg/SVGAnimateMotionElement.cpp:
              (WebCore::SVGAnimateMotionElement::resetToBaseValue):
              (WebCore::SVGAnimateMotionElement::calculateAnimatedValue):
              (WebCore::SVGAnimateMotionElement::applyResultsToTarget):
              * svg/SVGAnimateMotionElement.h:
              * svg/SVGAnimateTransformElement.cpp:
              * svg/SVGAnimateTransformElement.h:
              * svg/SVGElement.h:
              (WebCore::SVGElement::supplementalTransform):
              * svg/SVGFitToViewBox.cpp:
              (WebCore::SVGFitToViewBox::viewBoxToViewTransform):
              * svg/SVGFitToViewBox.h:
              * svg/SVGLocatable.cpp:
              (WebCore::SVGLocatable::getCTM):
              (WebCore::SVGLocatable::getScreenCTM):
              (WebCore::SVGLocatable::getTransformToElement):
              * svg/SVGLocatable.h:
              * svg/SVGMarkerElement.cpp:
              (WebCore::SVGMarkerElement::viewBoxToViewTransform):
              * svg/SVGMarkerElement.h:
              * svg/SVGMaskElement.cpp:
              (WebCore::SVGMaskElement::drawMaskerContent):
              * svg/SVGMatrix.idl:
              * svg/SVGPatternElement.cpp:
              (WebCore::SVGPatternElement::buildPattern):
              * svg/SVGPreserveAspectRatio.cpp:
              (WebCore::SVGPreserveAspectRatio::getCTM):
              * svg/SVGPreserveAspectRatio.h:
              * svg/SVGSVGElement.cpp:
              (WebCore::SVGSVGElement::viewport):
              (WebCore::SVGSVGElement::createSVGMatrix):
              (WebCore::SVGSVGElement::createSVGTransformFromMatrix):
              (WebCore::SVGSVGElement::getCTM):
              (WebCore::SVGSVGElement::getScreenCTM):
              (WebCore::SVGSVGElement::viewBoxToViewTransform):
              * svg/SVGSVGElement.h:
              * svg/SVGStyledLocatableElement.cpp:
              (WebCore::SVGStyledLocatableElement::getCTM):
              (WebCore::SVGStyledLocatableElement::getScreenCTM):
              * svg/SVGStyledLocatableElement.h:
              * svg/SVGStyledTransformableElement.cpp:
              (WebCore::SVGStyledTransformableElement::getCTM):
              (WebCore::SVGStyledTransformableElement::getScreenCTM):
              (WebCore::SVGStyledTransformableElement::animatedLocalTransform):
              (WebCore::SVGStyledTransformableElement::supplementalTransform):
              * svg/SVGStyledTransformableElement.h:
              (WebCore::SVGStyledTransformableElement::isStyledTransformable):
              (WebCore::SVGStyledTransformableElement::toPathData):
              * svg/SVGTextContentElement.cpp:
              (WebCore::SVGInlineTextBoxQueryWalker::chunkPortionCallback):
              * svg/SVGTextElement.cpp:
              (WebCore::SVGTextElement::getScreenCTM):
              (WebCore::SVGTextElement::getCTM):
              (WebCore::SVGTextElement::animatedLocalTransform):
              (WebCore::SVGTextElement::supplementalTransform):
              * svg/SVGTextElement.h:
              * svg/SVGTextPathElement.cpp:
              * svg/SVGTransform.cpp:
              (SVGTransform::SVGTransform):
              (SVGTransform::matrix):
              (SVGTransform::setMatrix):
              * svg/SVGTransform.h:
              * svg/SVGTransformDistance.cpp:
              (WebCore::SVGTransformDistance::SVGTransformDistance):
              (WebCore::SVGTransformDistance::scaledDistance):
              (WebCore::SVGTransformDistance::isZero):
              * svg/SVGTransformDistance.h:
              * svg/SVGTransformList.cpp:
              (SVGTransformList::createSVGTransformFromMatrix):
              (SVGTransformList::concatenate):
              (SVGTransformList::valueAsString):
              * svg/SVGTransformList.h:
              * svg/SVGTransformable.cpp:
              (WebCore::SVGTransformable::getCTM):
              (WebCore::SVGTransformable::getScreenCTM):
              (WebCore::SVGTransformable::parseTransformValue):
              * svg/SVGTransformable.h:
              (WebCore::SVGTransformable::):
              * svg/graphics/SVGPaintServerGradient.cpp:
              (WebCore::SVGPaintServerGradient::gradientTransform):
              (WebCore::SVGPaintServerGradient::setGradientTransform):
              (WebCore::clipToTextMask):
              (WebCore::SVGPaintServerGradient::setup):
              * svg/graphics/SVGPaintServerGradient.h:
              * svg/graphics/SVGPaintServerPattern.cpp:
              (WebCore::SVGPaintServerPattern::patternTransform):
              (WebCore::SVGPaintServerPattern::setPatternTransform):
              (WebCore::SVGPaintServerPattern::setup):
              * svg/graphics/SVGPaintServerPattern.h:
              * svg/graphics/SVGResourceClipper.cpp:
              (WebCore::SVGResourceClipper::applyClip):
              * svg/graphics/SVGResourceMarker.cpp:
              (WebCore::SVGResourceMarker::markerTransformation):
              (WebCore::SVGResourceMarker::draw):
              * svg/graphics/SVGResourceMarker.h:
              * svg/graphics/filters/SVGFEImage.cpp:
              * svg/graphics/filters/SVGFETile.cpp:
              (WebCore::FETile::apply):
      
      2010-02-08  Dirk Schulze  <krit@webkit.org>
      
              Reviewed by Nikolas Zimmermann.
      
              Add back an AffineTransform class for use by SVG
              https://bugs.webkit.org/show_bug.cgi?id=33750
      
              Some negative zero problems fixed, but new one were added on other places. A seperate
              patch should fix it all at once.
              use-on-disallowed-foreign-object-3 and 4 had wrong results. The old SVG code
              with TransformationMatrix used translateRight, that was wrong at this place and is
              fixed now.
      
              * platform/mac/svg/W3C-SVG-1.1/animate-elem-80-t-expected.txt:
              * platform/mac/svg/W3C-SVG-1.1/fonts-elem-01-t-expected.txt:
              * platform/mac/svg/W3C-SVG-1.1/fonts-elem-02-t-expected.txt:
              * platform/mac/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.txt:
              * platform/mac/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.txt:
              * platform/mac/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.txt:
              * platform/mac/svg/custom/use-on-disallowed-foreign-object-3-expected.txt:
              * platform/mac/svg/custom/use-on-disallowed-foreign-object-4-expected.txt:
              * svg/dom/SVGMatrix-interface-expected.txt:
              * svg/dom/SVGMatrix-interface.xhtml:
      
      2010-02-08  Dirk Schulze  <krit@webkit.org>
      
              Reviewed by Nikolas Zimmermann.
      
              Add back an AffineTransform class for use by SVG
              https://bugs.webkit.org/show_bug.cgi?id=33750
      
              Use AffineTransform instead of TransformationMatrix here.
      
              * tests/TransparencyWinTest.cpp:
              (WebCore::TEST):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@54503 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      2b95a9a6
  29. 04 Feb, 2010 1 commit
    • mitz@apple.com's avatar
      REGRESSION (r53718): When scrolling a tall window by page, the overlap between pages is too big · ed850038
      mitz@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=34371
      
      Reviewed by Simon Fraser.
      
      WebCore: 
      
      Allow ScrollbarTheme to cap the overlap between pages, and set a cap of
      40 in ScrollbarThemeMac.
      
      * WebCore.base.exp: Export Scrollbar::maxOverlapBetweenPages().
      * editing/EditorCommand.cpp:
      (WebCore::verticalScrollDistance): Use Scrollbar methods instead of
      constants, and cap the scroll distance if needed.
      * platform/ScrollView.cpp:
      (WebCore::ScrollView::updateScrollbars): Ditto.
      (WebCore::ScrollView::wheelEvent): Ditto.
      * platform/Scrollbar.cpp:
      (WebCore::Scrollbar::maxOverlapBetweenPages): Added. Returns the
      value from the native scrollbar theme.
      * platform/Scrollbar.h: Replaced scroll amount constants with static methods.
      (WebCore::Scrollbar::pixelsPerLineStep): Replaces cScrollbarPixelsPerLineStep.
      (WebCore::Scrollbar::minFractionToStepWhenPaging): Replaces cFractionToStepWhenPaging.
      * platform/ScrollbarTheme.h:
      (WebCore::ScrollbarTheme::maxOverlapBetweenPages): A base implementation
      that returns the largest int.
      * platform/gtk/WheelEventGtk.cpp:
      (WebCore::PlatformWheelEvent::PlatformWheelEvent): Use Scrollbar methods instead of
      constants.
      * platform/haiku/PlatformWheelEventHaiku.cpp:
      (WebCore::PlatformWheelEvent::PlatformWheelEvent): Use Scrollbar methods instead of
      constants.
      * platform/mac/ScrollbarThemeMac.h:
      (WebCore::ScrollbarThemeMac::maxOverlapBetweenPages): An override
      that returns 40.
      * platform/mac/WheelEventMac.mm:
      (WebCore::PlatformWheelEvent::PlatformWheelEvent): Use
      Scrollbar::pixelsPerLineStep() instead of cScrollbarPixelsPerLineStep.
      * platform/wx/MouseWheelEventWx.cpp:
      (WebCore::PlatformWheelEvent::PlatformWheelEvent): Use Scrollbar methods instead of
      constants.
      * platform/wx/ScrollViewWx.cpp:
      (WebCore::ScrollView::ScrollViewPrivate::OnScrollWinEvents): Use Scrollbar
      methods instead of constants, and cap the scroll distance if needed.
      * rendering/RenderLayer.cpp:
      (WebCore::RenderLayer::updateScrollInfoAfterLayout): Ditto.
      
      WebKit/mac: 
      
      * WebView/WebFrameView.mm:
      (-[WebFrameView _verticalPageScrollDistance]): Use Scrollbar methods instead of
      constants, and cap the scroll distance.
      (-[WebFrameView initWithFrame:]): Use Scrollbar::pixelsPerLineStep() instead of
      cScrollbarPixelsPerLineStep.
      (-[WebFrameView _horizontalPageScrollDistance]):Use Scrollbar methods instead of
      constants, and cap the scroll distance.
      
      WebKit/wx: 
      
      * WebView.cpp:
      (wxWebView::OnKeyEvents): Use Scrollbar method instead of constant.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@54345 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      ed850038
  30. 28 Jan, 2010 1 commit
    • simon.fraser@apple.com's avatar
      2010-01-28 Simon Fraser <simon.fraser@apple.com> · 762661b1
      simon.fraser@apple.com authored
              Reviewed by Dan Bernstein.
      
              Video can overlap position:fixed element when scrolling
              https://bugs.webkit.org/show_bug.cgi?id=32180
      
              When the scroll position changes, and we're using overlap to decide what gets composited,
              then we need to re-evaluate what gets compositing when scrolling in case fixed postion elements
              overlap composited elements (e.g. video).
      
              Test: compositing/geometry/video-fixed-scrolling.html
      
              * page/FrameView.cpp:
              (WebCore::FrameView::updateCompositingLayers):
              (WebCore::FrameView::scrollPositionChanged): Annotate the calls to updateCompositingLayers()
              with the type of change that occurred.
      
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::updateCompositingAndLayerListsIfNeeded): Ditto.
      
              * rendering/RenderLayerCompositor.h:
              * rendering/RenderLayerCompositor.cpp:
              (WebCore::RenderLayerCompositor::updateCompositingLayers): For scroll changes, check
              for hierarchy update if m_compositingConsultsOverlap is true, and do
              a geometry update. For other changes, always check for hierarchy updates.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@54006 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      762661b1
  31. 26 Jan, 2010 1 commit
    • simon.fraser@apple.com's avatar
      2010-01-26 Simon Fraser <simon.fraser@apple.com> · c3d85ac5
      simon.fraser@apple.com authored
              Reviewed by Adele Peterson.
      
              Enhance externalRepresentation() to make it more useful for layer debugging
              https://bugs.webkit.org/show_bug.cgi?id=34143
      
              Enhance externalRepresentation() to output additional information about layers when certain flags are passed.
              The new flags allow you to show all layers (not just those that would paint), to the structure of the z-order
              and normal flow lists, and to show which layers are composited.
      
              * WebCore.base.exp: The signature of externalRepresentation() changed.
      
              * platform/text/TextStream.h: Add operator<<(void*)
              * platform/text/TextStream.cpp: Implement operator<<(void*)
      
              * rendering/RenderLayer.h:
              * rendering/RenderLayer.cpp:
              (showLayerTree): New method outside the WebCore namespace, for ease of calling from gdb.
      
              * rendering/RenderTreeAsText.h: New behavior flags for externalRepresentation().
              * rendering/RenderTreeAsText.cpp:
              (WebCore::write): Output compositing information if requested. Also clean up some -1/1 magic
              numbers with an enum.
              (WebCore::writeLayers): If requested, show layer nesting via the z-order and normal flow lists.
              (WebCore::externalRepresentation): New arguments
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@53874 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      c3d85ac5
  32. 25 Jan, 2010 1 commit
    • dbates@webkit.org's avatar
      2010-01-25 Daniel Bates <dbates@webkit.org> · ef42d386
      dbates@webkit.org authored
              Reviewed by Adam Barth.
      
              https://bugs.webkit.org/show_bug.cgi?id=34073
      
              Fixes misspelled words in comments.
      
              * accessibility/AccessibilityListBox.cpp:
              (WebCore::AccessibilityListBox::addChildren):
              (WebCore::AccessibilityListBox::doAccessibilityHitTest):
              * accessibility/mac/AccessibilityObjectWrapper.mm:
              (-[AccessibilityObjectWrapper detach]):
              (AXAttributeStringSetElement):
              * bindings/js/JSDOMBinding.cpp:
              (WebCore::completeURL):
              * bindings/js/JSDOMWindowBase.cpp:
              * bindings/js/JSDOMWindowBase.h:
              * bindings/js/JSDOMWindowCustom.cpp:
              (WebCore::JSDOMWindow::getOwnPropertySlot):
              * bindings/js/JSSVGPODTypeWrapper.h:
              * bindings/js/ScriptController.cpp:
              (WebCore::ScriptController::evaluateInWorld):
              * bridge/NP_jsobject.cpp:
              (_NPN_SetException):
              * bridge/jni/jsc/JavaInstanceJSC.cpp:
              (JavaInstance::invokeMethod):
              (JObjectWrapper::JObjectWrapper):
              * bridge/objc/objc_instance.mm:
              (ObjcInstance::setValueOfUndefinedField):
              (ObjcInstance::getValueOfUndefinedField):
              * css/CSSFontSelector.cpp:
              (WebCore::CSSFontSelector::addFontFaceRule):
              * css/CSSStyleSelector.cpp:
              (WebCore::CSSStyleSelector::CSSStyleSelector):
              (WebCore::CSSStyleSelector::sortMatchedRules):
              (WebCore::CSSStyleSelector::applyDeclarations):
              (WebCore::CSSStyleSelector::applyProperty):
              * dom/Document.cpp:
              (WebCore::Document::updateLayoutIgnorePendingStylesheets):
              (WebCore::Document::detach):
              * dom/Document.h:
              * dom/Element.cpp:
              (WebCore::Element::updateFocusAppearance):
              * dom/Element.h:
              * dom/MessagePortChannel.h:
              * dom/MouseRelatedEvent.cpp:
              (WebCore::MouseRelatedEvent::receivedTarget):
              * dom/Node.cpp:
              (WebCore::Node::isFocusable):
              (WebCore::Node::shadowAncestorNode):
              * dom/Node.h:
              * dom/Position.cpp:
              (WebCore::Position::upstream):
              * dom/Position.h:
              * dom/Range.cpp:
              (WebCore::Range::processContents):
              * dom/StyledElement.cpp:
              (WebCore::StyledElement::addCSSColor):
              * editing/ApplyStyleCommand.cpp:
              (WebCore::StyleChange::reconcileTextDecorationProperties):
              (WebCore::StyleChange::extractTextStyles):
              (WebCore::prepareEditingStyleToApplyAt):
              * editing/DeleteButtonController.cpp:
              (WebCore::isDeletableElement):
              * editing/DeleteSelectionCommand.cpp:
              (WebCore::DeleteSelectionCommand::initializeStartEnd):
              * editing/Editor.cpp:
              (WebCore::Editor::learnSpelling):
              * inspector/front-end/ConsoleView.js:
              (WebInspector.ConsoleMessage.prototype._format):
              * loader/Cache.cpp:
              (WebCore::Cache::pruneLiveResources):
              (WebCore::Cache::pruneDeadResources):
              * loader/Cache.h:
              * loader/CachedResource.cpp:
              (WebCore::CachedResource::makePurgeable):
              * loader/CachedResource.h:
              * loader/CachedResourceHandle.h:
              * loader/DocumentLoader.h:
              * loader/FTPDirectoryParser.cpp:
              (WebCore::parseOneFTPLine):
              * loader/FrameLoader.cpp:
              (WebCore::FrameLoader::didExplicitOpen):
              * loader/ResourceLoader.cpp:
              (WebCore::ResourceLoader::didCancel):
              * loader/WorkerThreadableLoader.h:
              * loader/appcache/ApplicationCacheStorage.cpp:
              (WebCore::ApplicationCacheStorage::spaceNeeded):
              * notifications/NotificationPresenter.h:
              (WebCore::NotificationPresenter::):
              * page/animation/AnimationController.cpp:
              (WebCore::AnimationController::updateAnimations):
              * platform/LinkHash.cpp:
              (WebCore::cleanPath):
              * platform/graphics/cg/GraphicsContextCG.cpp:
              (WebCore::calculateDrawingMode):
              * platform/graphics/cg/PatternCG.cpp:
              (WebCore::Pattern::createPlatformPattern):
              * platform/graphics/mac/ComplexTextController.cpp:
              (WebCore::ComplexTextController::offsetForPosition):
              * platform/graphics/mac/GraphicsLayerCA.h:
              * platform/graphics/mac/GraphicsLayerCA.mm:
              (WebCore::GraphicsLayerCA::ensureStructuralLayer):
              * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
              (WebCore::MediaPlayerPrivate::doSeek):
              (WebCore::MediaPlayerPrivate::setClosedCaptionsVisible):
              (WebCore::MediaPlayerPrivate::hasAvailableVideoFrame):
              * platform/mac/PasteboardMac.mm:
              (WebCore::Pasteboard::writeSelection):
              (WebCore::Pasteboard::writePlainText):
              (WebCore::Pasteboard::writeURL):
              * platform/text/TextCodecICU.cpp:
              (WebCore::TextCodecICU::registerExtendedEncodingNames):
              * platform/text/TextEncodingDetectorICU.cpp:
              (WebCore::detectTextEncoding):
              * rendering/AutoTableLayout.cpp:
              (WebCore::AutoTableLayout::calcEffectiveWidth):
              (WebCore::AutoTableLayout::layout):
              * rendering/RenderBox.cpp:
              (WebCore::RenderBox::calcAbsoluteHorizontalValues):
              (WebCore::RenderBox::calcAbsoluteVerticalValues):
              (WebCore::RenderBox::calcAbsoluteHorizontalReplaced):
              (WebCore::RenderBox::calcAbsoluteVerticalReplaced):
              * rendering/RenderLayer.cpp:
              (WebCore::RenderLayer::scrollByRecursively):
              (WebCore::RenderLayer::paintLayer):
              (WebCore::RenderLayer::hitTestLayer):
              * rendering/RenderObject.cpp:
              (WebCore::RenderObject::destroy):
              * rendering/RenderTextControl.cpp:
              (WebCore::RenderTextControl::setInnerTextValue):
              * rendering/RenderTheme.cpp:
              (WebCore::RenderTheme::stateChanged):
              * rendering/SVGRenderSupport.cpp:
              (WebCore::SVGRenderBase::mapLocalToContainer):
              * rendering/SVGRootInlineBox.cpp:
              (WebCore::SVGRootInlineBox::buildTextChunks):
              * rendering/TransformState.cpp:
              (WebCore::TransformState::flattenWithTransform):
              * wml/WMLInputElement.cpp:
              (WebCore::WMLInputElement::dispatchBlurEvent):
              (WebCore::WMLInputElement::suggestedValue):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@53809 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      ef42d386