Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Side by Side Diff: Source/WebCore/rendering/RenderView.cpp

Issue 10427008: Merge 118039 - Source/WebCore: Fix iframe printing. (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1132/
Patch Set: Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/WebCore/rendering/RenderView.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 { 77 {
78 } 78 }
79 79
80 bool RenderView::hitTest(const HitTestRequest& request, HitTestResult& result) 80 bool RenderView::hitTest(const HitTestRequest& request, HitTestResult& result)
81 { 81 {
82 return layer()->hitTest(request, result); 82 return layer()->hitTest(request, result);
83 } 83 }
84 84
85 void RenderView::computeLogicalHeight() 85 void RenderView::computeLogicalHeight()
86 { 86 {
87 if (!printing() && m_frameView) 87 if (!shouldUsePrintingLayout() && m_frameView)
88 setLogicalHeight(viewLogicalHeight()); 88 setLogicalHeight(viewLogicalHeight());
89 } 89 }
90 90
91 void RenderView::computeLogicalWidth() 91 void RenderView::computeLogicalWidth()
92 { 92 {
93 if (!printing() && m_frameView) 93 if (!shouldUsePrintingLayout() && m_frameView)
94 setLogicalWidth(viewLogicalWidth()); 94 setLogicalWidth(viewLogicalWidth());
95 } 95 }
96 96
97 void RenderView::computePreferredLogicalWidths() 97 void RenderView::computePreferredLogicalWidths()
98 { 98 {
99 ASSERT(preferredLogicalWidthsDirty()); 99 ASSERT(preferredLogicalWidthsDirty());
100 100
101 RenderBlock::computePreferredLogicalWidths(); 101 RenderBlock::computePreferredLogicalWidths();
102 } 102 }
103 103
104 bool RenderView::isChildAllowed(RenderObject* child, RenderStyle*) const 104 bool RenderView::isChildAllowed(RenderObject* child, RenderStyle*) const
105 { 105 {
106 return child->isBox(); 106 return child->isBox();
107 } 107 }
108 108
109 void RenderView::layout() 109 void RenderView::layout()
110 { 110 {
111 if (!document()->paginated()) 111 if (!document()->paginated())
112 setPageLogicalHeight(0); 112 setPageLogicalHeight(0);
113 113
114 if (printing()) 114 if (shouldUsePrintingLayout())
115 m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = logicalWidth() ; 115 m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = logicalWidth() ;
116 116
117 // Use calcWidth/Height to get the new width/height, since this will take th e full page zoom factor into account. 117 // Use calcWidth/Height to get the new width/height, since this will take th e full page zoom factor into account.
118 bool relayoutChildren = !printing() && (!m_frameView || width() != viewWidth () || height() != viewHeight()); 118 bool relayoutChildren = !shouldUsePrintingLayout() && (!m_frameView || width () != viewWidth() || height() != viewHeight());
119 if (relayoutChildren) { 119 if (relayoutChildren) {
120 setChildNeedsLayout(true, MarkOnlyThis); 120 setChildNeedsLayout(true, MarkOnlyThis);
121 for (RenderObject* child = firstChild(); child; child = child->nextSibli ng()) { 121 for (RenderObject* child = firstChild(); child; child = child->nextSibli ng()) {
122 if ((child->isBox() && toRenderBox(child)->hasRelativeLogicalHeight( )) 122 if ((child->isBox() && toRenderBox(child)->hasRelativeLogicalHeight( ))
123 || child->style()->logicalHeight().isPercent() 123 || child->style()->logicalHeight().isPercent()
124 || child->style()->logicalMinHeight().isPercent() 124 || child->style()->logicalMinHeight().isPercent()
125 || child->style()->logicalMaxHeight().isPercent()) 125 || child->style()->logicalMaxHeight().isPercent())
126 child->setChildNeedsLayout(true, MarkOnlyThis); 126 child->setChildNeedsLayout(true, MarkOnlyThis);
127 } 127 }
128 } 128 }
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 { 640 {
641 startPos = m_selectionStartPos; 641 startPos = m_selectionStartPos;
642 endPos = m_selectionEndPos; 642 endPos = m_selectionEndPos;
643 } 643 }
644 644
645 bool RenderView::printing() const 645 bool RenderView::printing() const
646 { 646 {
647 return document()->printing(); 647 return document()->printing();
648 } 648 }
649 649
650 bool RenderView::shouldUsePrintingLayout() const
651 {
652 if (!printing() || !m_frameView)
653 return false;
654 Frame* frame = m_frameView->frame();
655 // Only root frame should have special handling for printing.
656 return frame && !frame->tree()->parent();
657 }
658
650 size_t RenderView::getRetainedWidgets(Vector<RenderWidget*>& renderWidgets) 659 size_t RenderView::getRetainedWidgets(Vector<RenderWidget*>& renderWidgets)
651 { 660 {
652 size_t size = m_widgets.size(); 661 size_t size = m_widgets.size();
653 662
654 renderWidgets.reserveCapacity(size); 663 renderWidgets.reserveCapacity(size);
655 664
656 RenderWidgetSet::const_iterator end = m_widgets.end(); 665 RenderWidgetSet::const_iterator end = m_widgets.end();
657 for (RenderWidgetSet::const_iterator it = m_widgets.begin(); it != end; ++it ) { 666 for (RenderWidgetSet::const_iterator it = m_widgets.begin(); it != end; ++it ) {
658 renderWidgets.uncheckedAppend(*it); 667 renderWidgets.uncheckedAppend(*it);
659 (*it)->ref(); 668 (*it)->ref();
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 size_t size = getRetainedWidgets(renderWidgets); 713 size_t size = getRetainedWidgets(renderWidgets);
705 714
706 for (size_t i = 0; i < size; ++i) 715 for (size_t i = 0; i < size; ++i)
707 renderWidgets[i]->notifyWidget(notification); 716 renderWidgets[i]->notifyWidget(notification);
708 717
709 releaseWidgets(renderWidgets); 718 releaseWidgets(renderWidgets);
710 } 719 }
711 720
712 LayoutRect RenderView::viewRect() const 721 LayoutRect RenderView::viewRect() const
713 { 722 {
714 if (printing()) 723 if (shouldUsePrintingLayout())
715 return LayoutRect(LayoutPoint(), size()); 724 return LayoutRect(LayoutPoint(), size());
716 if (m_frameView) 725 if (m_frameView)
717 return m_frameView->visibleContentRect(); 726 return m_frameView->visibleContentRect();
718 return LayoutRect(); 727 return LayoutRect();
719 } 728 }
720 729
721 730
722 IntRect RenderView::unscaledDocumentRect() const 731 IntRect RenderView::unscaledDocumentRect() const
723 { 732 {
724 LayoutRect overflowRect(layoutOverflowRect()); 733 LayoutRect overflowRect(layoutOverflowRect());
(...skipping 19 matching lines...) Expand all
744 { 753 {
745 IntRect overflowRect(unscaledDocumentRect()); 754 IntRect overflowRect(unscaledDocumentRect());
746 if (hasTransform()) 755 if (hasTransform())
747 overflowRect = layer()->currentTransform().mapRect(overflowRect); 756 overflowRect = layer()->currentTransform().mapRect(overflowRect);
748 return overflowRect; 757 return overflowRect;
749 } 758 }
750 759
751 int RenderView::viewHeight() const 760 int RenderView::viewHeight() const
752 { 761 {
753 int height = 0; 762 int height = 0;
754 if (!printing() && m_frameView) { 763 if (!shouldUsePrintingLayout() && m_frameView) {
755 height = m_frameView->layoutHeight(); 764 height = m_frameView->layoutHeight();
756 height = m_frameView->useFixedLayout() ? ceilf(style()->effectiveZoom() * float(height)) : height; 765 height = m_frameView->useFixedLayout() ? ceilf(style()->effectiveZoom() * float(height)) : height;
757 } 766 }
758 return height; 767 return height;
759 } 768 }
760 769
761 int RenderView::viewWidth() const 770 int RenderView::viewWidth() const
762 { 771 {
763 int width = 0; 772 int width = 0;
764 if (!printing() && m_frameView) { 773 if (!shouldUsePrintingLayout() && m_frameView) {
765 width = m_frameView->layoutWidth(); 774 width = m_frameView->layoutWidth();
766 width = m_frameView->useFixedLayout() ? ceilf(style()->effectiveZoom() * float(width)) : width; 775 width = m_frameView->useFixedLayout() ? ceilf(style()->effectiveZoom() * float(width)) : width;
767 } 776 }
768 return width; 777 return width;
769 } 778 }
770 779
771 int RenderView::viewLogicalHeight() const 780 int RenderView::viewLogicalHeight() const
772 { 781 {
773 int height = style()->isHorizontalWritingMode() ? viewHeight() : viewWidth() ; 782 int height = style()->isHorizontalWritingMode() ? viewHeight() : viewWidth() ;
774 783
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
943 952
944 void RenderView::removeFixedPositionedObject(RenderBox* object) 953 void RenderView::removeFixedPositionedObject(RenderBox* object)
945 { 954 {
946 if (!m_positionedObjects) 955 if (!m_positionedObjects)
947 return; 956 return;
948 957
949 m_positionedObjects->remove(object); 958 m_positionedObjects->remove(object);
950 } 959 }
951 960
952 } // namespace WebCore 961 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/WebCore/rendering/RenderView.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698