summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/RenderFrameSet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/rendering/RenderFrameSet.cpp')
-rw-r--r--Source/WebCore/rendering/RenderFrameSet.cpp52
1 files changed, 17 insertions, 35 deletions
diff --git a/Source/WebCore/rendering/RenderFrameSet.cpp b/Source/WebCore/rendering/RenderFrameSet.cpp
index e4e7e24bb..308204547 100644
--- a/Source/WebCore/rendering/RenderFrameSet.cpp
+++ b/Source/WebCore/rendering/RenderFrameSet.cpp
@@ -40,6 +40,7 @@
#include "RenderLayer.h"
#include "RenderView.h"
#include "Settings.h"
+#include <wtf/StackStats.h>
namespace WebCore {
@@ -157,24 +158,6 @@ void RenderFrameSet::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset)
}
}
-bool RenderFrameSet::nodeAtPoint(const HitTestRequest& request, HitTestResult& result,
- const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction action)
-{
- if (action != HitTestForeground)
- return false;
-
- bool inside = RenderBox::nodeAtPoint(request, result, locationInContainer, accumulatedOffset, action)
- || m_isResizing;
-
- if (inside && frameSet()->noResize()
- && !request.readOnly() && !result.innerNode() && !request.touchMove()) {
- result.setInnerNode(node());
- result.setInnerNonSharedNode(node());
- }
-
- return inside || m_isChildResizing;
-}
-
void RenderFrameSet::GridAxis::resize(int size)
{
m_sizes.resize(size);
@@ -420,10 +403,10 @@ void RenderFrameSet::computeEdgeInfo()
if (!child)
return;
- int rows = frameSet()->totalRows();
- int cols = frameSet()->totalCols();
- for (int r = 0; r < rows; ++r) {
- for (int c = 0; c < cols; ++c) {
+ size_t rows = m_rows.m_sizes.size();
+ size_t cols = m_cols.m_sizes.size();
+ for (size_t r = 0; r < rows; ++r) {
+ for (size_t c = 0; c < cols; ++c) {
FrameEdgeInfo edgeInfo;
if (child->isFrameSet())
edgeInfo = toRenderFrameSet(child)->edgeInfo();
@@ -464,8 +447,11 @@ void RenderFrameSet::layout()
bool doFullRepaint = selfNeedsLayout() && checkForRepaintDuringLayout();
LayoutRect oldBounds;
- if (doFullRepaint)
- oldBounds = absoluteClippedOverflowRect();
+ RenderLayerModelObject* repaintContainer = 0;
+ if (doFullRepaint) {
+ repaintContainer = containerForRepaint();
+ oldBounds = clippedOverflowRectForRepaint(repaintContainer);
+ }
if (!parent()->isFrameSet() && !document()->printing()) {
setWidth(view()->viewWidth());
@@ -493,19 +479,15 @@ void RenderFrameSet::layout()
computeEdgeInfo();
+ updateLayerTransform();
+
if (doFullRepaint) {
- view()->repaintViewRectangle(oldBounds);
- LayoutRect newBounds = absoluteClippedOverflowRect();
+ repaintUsingContainer(repaintContainer, pixelSnappedIntRect(oldBounds));
+ LayoutRect newBounds = clippedOverflowRectForRepaint(repaintContainer);
if (newBounds != oldBounds)
- view()->repaintViewRectangle(newBounds);
+ repaintUsingContainer(repaintContainer, pixelSnappedIntRect(newBounds));
}
- // If this FrameSet has a transform matrix then we need to recompute it
- // because the transform origin is a function the size of the RenderFrameSet
- // which may not be computed until it is attached to the render tree.
- if (layer() && hasTransform())
- layer()->updateTransform();
-
setNeedsLayout(false);
}
@@ -700,7 +682,7 @@ bool RenderFrameSet::userResize(MouseEvent* evt)
if (needsLayout())
return false;
if (evt->type() == eventNames().mousedownEvent && evt->button() == LeftButton) {
- FloatPoint localPos = absoluteToLocal(evt->absoluteLocation(), UseTransforms | SnapOffsetForTransforms);
+ FloatPoint localPos = absoluteToLocal(evt->absoluteLocation(), UseTransforms);
startResizing(m_cols, localPos.x());
startResizing(m_rows, localPos.y());
if (m_cols.m_splitBeingResized != noSplit || m_rows.m_splitBeingResized != noSplit) {
@@ -710,7 +692,7 @@ bool RenderFrameSet::userResize(MouseEvent* evt)
}
} else {
if (evt->type() == eventNames().mousemoveEvent || (evt->type() == eventNames().mouseupEvent && evt->button() == LeftButton)) {
- FloatPoint localPos = absoluteToLocal(evt->absoluteLocation(), UseTransforms | SnapOffsetForTransforms);
+ FloatPoint localPos = absoluteToLocal(evt->absoluteLocation(), UseTransforms);
continueResizing(m_cols, localPos.x());
continueResizing(m_rows, localPos.y());
if (evt->type() == eventNames().mouseupEvent && evt->button() == LeftButton) {