| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. | 2 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above | 8 * 1. Redistributions of source code must retain the above |
| 9 * copyright notice, this list of conditions and the following | 9 * copyright notice, this list of conditions and the following |
| 10 * disclaimer. | 10 * disclaimer. |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 204 return false; | 204 return false; |
| 205 | 205 |
| 206 return true; | 206 return true; |
| 207 } | 207 } |
| 208 | 208 |
| 209 void RenderFlowThread::repaintRectangleInRegions(const LayoutRect& repaintRect)
const | 209 void RenderFlowThread::repaintRectangleInRegions(const LayoutRect& repaintRect)
const |
| 210 { | 210 { |
| 211 if (!shouldRepaint(repaintRect) || !hasValidRegionInfo()) | 211 if (!shouldRepaint(repaintRect) || !hasValidRegionInfo()) |
| 212 return; | 212 return; |
| 213 | 213 |
| 214 LayoutStateDisabler layoutStateDisabler(view()); // We can't use layout stat
e to repaint, since the regions are somewhere else. | 214 LayoutStateDisabler layoutStateDisabler(*this); // We can't use layout state
to repaint, since the regions are somewhere else. |
| 215 | 215 |
| 216 // We can't use currentFlowThread as it is possible to have interleaved flow
threads and the wrong one could be used. | 216 // We can't use currentFlowThread as it is possible to have interleaved flow
threads and the wrong one could be used. |
| 217 // Let each region figure out the proper enclosing flow thread. | 217 // Let each region figure out the proper enclosing flow thread. |
| 218 CurrentRenderFlowThreadDisabler disabler(view()); | 218 CurrentRenderFlowThreadDisabler disabler(view()); |
| 219 | 219 |
| 220 for (RenderRegionList::const_iterator iter = m_regionList.begin(); iter != m
_regionList.end(); ++iter) { | 220 for (RenderRegionList::const_iterator iter = m_regionList.begin(); iter != m
_regionList.end(); ++iter) { |
| 221 RenderRegion* region = *iter; | 221 RenderRegion* region = *iter; |
| 222 | 222 |
| 223 region->repaintFlowThreadContent(repaintRect); | 223 region->repaintFlowThreadContent(repaintRect); |
| 224 } | 224 } |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 559 | 559 |
| 560 const RenderBox* RenderFlowThread::currentStatePusherRenderBox() const | 560 const RenderBox* RenderFlowThread::currentStatePusherRenderBox() const |
| 561 { | 561 { |
| 562 const RenderObject* currentObject = m_statePusherObjectsStack.isEmpty() ? 0
: m_statePusherObjectsStack.last(); | 562 const RenderObject* currentObject = m_statePusherObjectsStack.isEmpty() ? 0
: m_statePusherObjectsStack.last(); |
| 563 if (currentObject && currentObject->isBox()) | 563 if (currentObject && currentObject->isBox()) |
| 564 return toRenderBox(currentObject); | 564 return toRenderBox(currentObject); |
| 565 | 565 |
| 566 return 0; | 566 return 0; |
| 567 } | 567 } |
| 568 | 568 |
| 569 void RenderFlowThread::pushFlowThreadLayoutState(const RenderObject* object) | 569 void RenderFlowThread::pushFlowThreadLayoutState(const RenderObject& object) |
| 570 { | 570 { |
| 571 if (const RenderBox* currentBoxDescendant = currentStatePusherRenderBox()) { | 571 if (const RenderBox* currentBoxDescendant = currentStatePusherRenderBox()) { |
| 572 LayoutState* layoutState = currentBoxDescendant->view()->layoutState(); | 572 LayoutState* layoutState = currentBoxDescendant->view()->layoutState(); |
| 573 if (layoutState && layoutState->isPaginated()) { | 573 if (layoutState && layoutState->isPaginated()) { |
| 574 ASSERT(layoutState->renderer() == currentBoxDescendant); | 574 ASSERT(layoutState->renderer() == currentBoxDescendant); |
| 575 LayoutSize offsetDelta = layoutState->m_layoutOffset - layoutState->
m_pageOffset; | 575 LayoutSize offsetDelta = layoutState->m_layoutOffset - layoutState->
m_pageOffset; |
| 576 setOffsetFromLogicalTopOfFirstRegion(currentBoxDescendant, currentBo
xDescendant->isHorizontalWritingMode() ? offsetDelta.height() : offsetDelta.widt
h()); | 576 setOffsetFromLogicalTopOfFirstRegion(currentBoxDescendant, currentBo
xDescendant->isHorizontalWritingMode() ? offsetDelta.height() : offsetDelta.widt
h()); |
| 577 } | 577 } |
| 578 } | 578 } |
| 579 | 579 |
| 580 m_statePusherObjectsStack.add(object); | 580 m_statePusherObjectsStack.add(&object); |
| 581 } | 581 } |
| 582 | 582 |
| 583 void RenderFlowThread::popFlowThreadLayoutState() | 583 void RenderFlowThread::popFlowThreadLayoutState() |
| 584 { | 584 { |
| 585 m_statePusherObjectsStack.removeLast(); | 585 m_statePusherObjectsStack.removeLast(); |
| 586 | 586 |
| 587 if (const RenderBox* currentBoxDescendant = currentStatePusherRenderBox()) { | 587 if (const RenderBox* currentBoxDescendant = currentStatePusherRenderBox()) { |
| 588 LayoutState* layoutState = currentBoxDescendant->view()->layoutState(); | 588 LayoutState* layoutState = currentBoxDescendant->view()->layoutState(); |
| 589 if (layoutState && layoutState->isPaginated()) | 589 if (layoutState && layoutState->isPaginated()) |
| 590 clearOffsetFromLogicalTopOfFirstRegion(currentBoxDescendant); | 590 clearOffsetFromLogicalTopOfFirstRegion(currentBoxDescendant); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 670 { | 670 { |
| 671 if (!m_renderFlowThread) | 671 if (!m_renderFlowThread) |
| 672 return; | 672 return; |
| 673 RenderView* view = m_renderFlowThread->view(); | 673 RenderView* view = m_renderFlowThread->view(); |
| 674 ASSERT(view->flowThreadController()->currentRenderFlowThread() == m_renderFl
owThread); | 674 ASSERT(view->flowThreadController()->currentRenderFlowThread() == m_renderFl
owThread); |
| 675 view->flowThreadController()->setCurrentRenderFlowThread(m_previousRenderFlo
wThread); | 675 view->flowThreadController()->setCurrentRenderFlowThread(m_previousRenderFlo
wThread); |
| 676 } | 676 } |
| 677 | 677 |
| 678 | 678 |
| 679 } // namespace WebCore | 679 } // namespace WebCore |
| OLD | NEW |