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

Side by Side Diff: Source/core/rendering/RenderFrameSet.cpp

Issue 13963006: Remove frame flattening support as Chromium has no intention of using it (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 8 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/core/rendering/RenderFrameSet.h ('k') | Source/core/rendering/RenderIFrame.h » ('j') | 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 * (C) 2000 Simon Hausmann <hausmann@kde.org> 3 * (C) 2000 Simon Hausmann <hausmann@kde.org>
4 * (C) 2000 Stefan Schimanski (1Stein@gmx.de) 4 * (C) 2000 Stefan Schimanski (1Stein@gmx.de)
5 * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. 5 * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 464
465 if (m_rows.m_sizes.size() != rows || m_cols.m_sizes.size() != cols) { 465 if (m_rows.m_sizes.size() != rows || m_cols.m_sizes.size() != cols) {
466 m_rows.resize(rows); 466 m_rows.resize(rows);
467 m_cols.resize(cols); 467 m_cols.resize(cols);
468 } 468 }
469 469
470 LayoutUnit borderThickness = frameSet()->border(); 470 LayoutUnit borderThickness = frameSet()->border();
471 layOutAxis(m_rows, frameSet()->rowLengths(), height() - (rows - 1) * borderT hickness); 471 layOutAxis(m_rows, frameSet()->rowLengths(), height() - (rows - 1) * borderT hickness);
472 layOutAxis(m_cols, frameSet()->colLengths(), width() - (cols - 1) * borderTh ickness); 472 layOutAxis(m_cols, frameSet()->colLengths(), width() - (cols - 1) * borderTh ickness);
473 473
474 if (flattenFrameSet()) 474 positionFrames();
475 positionFramesWithFlattening();
476 else
477 positionFrames();
478 475
479 RenderBox::layout(); 476 RenderBox::layout();
480 477
481 computeEdgeInfo(); 478 computeEdgeInfo();
482 479
483 updateLayerTransform(); 480 updateLayerTransform();
484 481
485 if (doFullRepaint) { 482 if (doFullRepaint) {
486 repaintUsingContainer(repaintContainer, pixelSnappedIntRect(oldBounds)); 483 repaintUsingContainer(repaintContainer, pixelSnappedIntRect(oldBounds));
487 LayoutRect newBounds = clippedOverflowRectForRepaint(repaintContainer); 484 LayoutRect newBounds = clippedOverflowRectForRepaint(repaintContainer);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 } 525 }
529 526
530 // all the remaining frames are hidden to avoid ugly spurious unflowed frame s 527 // all the remaining frames are hidden to avoid ugly spurious unflowed frame s
531 for (; child; child = child->nextSiblingBox()) { 528 for (; child; child = child->nextSiblingBox()) {
532 child->setWidth(0); 529 child->setWidth(0);
533 child->setHeight(0); 530 child->setHeight(0);
534 child->setNeedsLayout(false); 531 child->setNeedsLayout(false);
535 } 532 }
536 } 533 }
537 534
538 void RenderFrameSet::positionFramesWithFlattening()
539 {
540 RenderBox* child = firstChildBox();
541 if (!child)
542 return;
543
544 int rows = frameSet()->totalRows();
545 int cols = frameSet()->totalCols();
546
547 int borderThickness = frameSet()->border();
548 bool repaintNeeded = false;
549
550 // calculate frameset height based on actual content height to eliminate scr olling
551 bool out = false;
552 for (int r = 0; r < rows && !out; r++) {
553 int extra = 0;
554 int height = m_rows.m_sizes[r];
555
556 for (int c = 0; c < cols; c++) {
557 IntRect oldFrameRect = pixelSnappedIntRect(child->frameRect());
558
559 int width = m_cols.m_sizes[c];
560
561 bool fixedWidth = frameSet()->colLengths() && frameSet()->colLengths ()[c].isFixed();
562 bool fixedHeight = frameSet()->rowLengths() && frameSet()->rowLength s()[r].isFixed();
563
564 // has to be resized and itself resize its contents
565 if (!fixedWidth)
566 child->setWidth(width ? width + extra / (cols - c) : 0);
567 else
568 child->setWidth(width);
569 child->setHeight(height);
570
571 child->setNeedsLayout(true);
572
573 if (child->isFrameSet())
574 toRenderFrameSet(child)->layout();
575 else
576 toRenderFrame(child)->layoutWithFlattening(fixedWidth, fixedHeig ht);
577
578 if (child->height() > m_rows.m_sizes[r])
579 m_rows.m_sizes[r] = child->height();
580 if (child->width() > m_cols.m_sizes[c])
581 m_cols.m_sizes[c] = child->width();
582
583 if (child->frameRect() != oldFrameRect)
584 repaintNeeded = true;
585
586 // difference between calculated frame width and the width it actual ly decides to have
587 extra += width - m_cols.m_sizes[c];
588
589 child = child->nextSiblingBox();
590 if (!child) {
591 out = true;
592 break;
593 }
594 }
595 }
596
597 int xPos = 0;
598 int yPos = 0;
599 out = false;
600 child = firstChildBox();
601 for (int r = 0; r < rows && !out; r++) {
602 xPos = 0;
603 for (int c = 0; c < cols; c++) {
604 // ensure the rows and columns are filled
605 IntRect oldRect = pixelSnappedIntRect(child->frameRect());
606
607 child->setLocation(IntPoint(xPos, yPos));
608 child->setHeight(m_rows.m_sizes[r]);
609 child->setWidth(m_cols.m_sizes[c]);
610
611 if (child->frameRect() != oldRect) {
612 repaintNeeded = true;
613
614 // update to final size
615 child->setNeedsLayout(true);
616 if (child->isFrameSet())
617 toRenderFrameSet(child)->layout();
618 else
619 toRenderFrame(child)->layoutWithFlattening(true, true);
620 }
621
622 xPos += m_cols.m_sizes[c] + borderThickness;
623 child = child->nextSiblingBox();
624 if (!child) {
625 out = true;
626 break;
627 }
628 }
629 yPos += m_rows.m_sizes[r] + borderThickness;
630 }
631
632 setWidth(xPos - borderThickness);
633 setHeight(yPos - borderThickness);
634
635 if (repaintNeeded)
636 repaint();
637
638 // all the remaining frames are hidden to avoid ugly spurious unflowed frame s
639 for (; child; child = child->nextSiblingBox()) {
640 child->setWidth(0);
641 child->setHeight(0);
642 child->setNeedsLayout(false);
643 }
644 }
645
646 bool RenderFrameSet::flattenFrameSet() const
647 {
648 return frame() && frame()->settings() && frame()->settings()->frameFlattenin gEnabled();
649 }
650
651 void RenderFrameSet::startResizing(GridAxis& axis, int position) 535 void RenderFrameSet::startResizing(GridAxis& axis, int position)
652 { 536 {
653 int split = hitTestSplit(axis, position); 537 int split = hitTestSplit(axis, position);
654 if (split == noSplit || axis.m_preventResize[split]) { 538 if (split == noSplit || axis.m_preventResize[split]) {
655 axis.m_splitBeingResized = noSplit; 539 axis.m_splitBeingResized = noSplit;
656 return; 540 return;
657 } 541 }
658 axis.m_splitBeingResized = split; 542 axis.m_splitBeingResized = split;
659 axis.m_splitResizeOffset = position - splitPosition(axis, split); 543 axis.m_splitResizeOffset = position - splitPosition(axis, split);
660 } 544 }
661 545
662 void RenderFrameSet::continueResizing(GridAxis& axis, int position) 546 void RenderFrameSet::continueResizing(GridAxis& axis, int position)
663 { 547 {
664 if (needsLayout()) 548 if (needsLayout())
665 return; 549 return;
666 if (axis.m_splitBeingResized == noSplit) 550 if (axis.m_splitBeingResized == noSplit)
667 return; 551 return;
668 int currentSplitPosition = splitPosition(axis, axis.m_splitBeingResized); 552 int currentSplitPosition = splitPosition(axis, axis.m_splitBeingResized);
669 int delta = (position - currentSplitPosition) - axis.m_splitResizeOffset; 553 int delta = (position - currentSplitPosition) - axis.m_splitResizeOffset;
670 if (!delta) 554 if (!delta)
671 return; 555 return;
672 axis.m_deltas[axis.m_splitBeingResized - 1] += delta; 556 axis.m_deltas[axis.m_splitBeingResized - 1] += delta;
673 axis.m_deltas[axis.m_splitBeingResized] -= delta; 557 axis.m_deltas[axis.m_splitBeingResized] -= delta;
674 setNeedsLayout(true); 558 setNeedsLayout(true);
675 } 559 }
676 560
677 bool RenderFrameSet::userResize(MouseEvent* evt) 561 bool RenderFrameSet::userResize(MouseEvent* evt)
678 { 562 {
679 if (flattenFrameSet())
680 return false;
681
682 if (!m_isResizing) { 563 if (!m_isResizing) {
683 if (needsLayout()) 564 if (needsLayout())
684 return false; 565 return false;
685 if (evt->type() == eventNames().mousedownEvent && evt->button() == LeftB utton) { 566 if (evt->type() == eventNames().mousedownEvent && evt->button() == LeftB utton) {
686 FloatPoint localPos = absoluteToLocal(evt->absoluteLocation(), UseTr ansforms); 567 FloatPoint localPos = absoluteToLocal(evt->absoluteLocation(), UseTr ansforms);
687 startResizing(m_cols, localPos.x()); 568 startResizing(m_cols, localPos.x());
688 startResizing(m_rows, localPos.y()); 569 startResizing(m_rows, localPos.y());
689 if (m_cols.m_splitBeingResized != noSplit || m_rows.m_splitBeingResi zed != noSplit) { 570 if (m_cols.m_splitBeingResized != noSplit || m_rows.m_splitBeingResi zed != noSplit) {
690 setIsResizing(true); 571 setIsResizing(true);
691 return true; 572 return true;
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
809 void RenderFrameSet::GridAxis::reportMemoryUsage(MemoryObjectInfo* memoryObjectI nfo) const 690 void RenderFrameSet::GridAxis::reportMemoryUsage(MemoryObjectInfo* memoryObjectI nfo) const
810 { 691 {
811 MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Rendering) ; 692 MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Rendering) ;
812 info.addMember(m_sizes, "sizes"); 693 info.addMember(m_sizes, "sizes");
813 info.addMember(m_deltas, "deltas"); 694 info.addMember(m_deltas, "deltas");
814 info.addMember(m_preventResize, "preventResize"); 695 info.addMember(m_preventResize, "preventResize");
815 info.addMember(m_allowBorder, "allowBorder"); 696 info.addMember(m_allowBorder, "allowBorder");
816 } 697 }
817 698
818 } // namespace WebCore 699 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderFrameSet.h ('k') | Source/core/rendering/RenderIFrame.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698