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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutInline.cpp

Issue 2202493002: NOT FOR REVIEW: Fullscreen WIP (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 1 month 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. 4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc.
5 * All rights reserved. 5 * All rights reserved.
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.
11 * 11 *
12 * This library is distributed in the hope that it will be useful, 12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Library General Public License for more details. 15 * Library General Public License for more details.
16 * 16 *
17 * You should have received a copy of the GNU Library General Public License 17 * You should have received a copy of the GNU Library General Public License
18 * along with this library; see the file COPYING.LIB. If not, write to 18 * along with this library; see the file COPYING.LIB. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 * Boston, MA 02110-1301, USA. 20 * Boston, MA 02110-1301, USA.
21 * 21 *
22 */ 22 */
23 23
24 #include "core/layout/LayoutInline.h" 24 #include "core/layout/LayoutInline.h"
25 25
26 #include "core/dom/Fullscreen.h"
27 #include "core/dom/StyleEngine.h" 26 #include "core/dom/StyleEngine.h"
28 #include "core/layout/HitTestResult.h" 27 #include "core/layout/HitTestResult.h"
29 #include "core/layout/LayoutBlock.h" 28 #include "core/layout/LayoutBlock.h"
30 #include "core/layout/LayoutFullScreen.h"
31 #include "core/layout/LayoutGeometryMap.h" 29 #include "core/layout/LayoutGeometryMap.h"
32 #include "core/layout/LayoutTheme.h" 30 #include "core/layout/LayoutTheme.h"
33 #include "core/layout/LayoutView.h" 31 #include "core/layout/LayoutView.h"
34 #include "core/layout/api/LineLayoutBoxModel.h" 32 #include "core/layout/api/LineLayoutBoxModel.h"
35 #include "core/layout/line/InlineTextBox.h" 33 #include "core/layout/line/InlineTextBox.h"
36 #include "core/paint/BoxPainter.h" 34 #include "core/paint/BoxPainter.h"
37 #include "core/paint/InlinePainter.h" 35 #include "core/paint/InlinePainter.h"
38 #include "core/paint/ObjectPainter.h" 36 #include "core/paint/ObjectPainter.h"
39 #include "core/paint/PaintLayer.h" 37 #include "core/paint/PaintLayer.h"
40 #include "core/style/StyleInheritedData.h" 38 #include "core/style/StyleInheritedData.h"
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 } 387 }
390 } 388 }
391 389
392 void LayoutInline::splitInlines(LayoutBlockFlow* fromBlock, 390 void LayoutInline::splitInlines(LayoutBlockFlow* fromBlock,
393 LayoutBlockFlow* toBlock, 391 LayoutBlockFlow* toBlock,
394 LayoutBlockFlow* middleBlock, 392 LayoutBlockFlow* middleBlock,
395 LayoutObject* beforeChild, 393 LayoutObject* beforeChild,
396 LayoutBoxModelObject* oldCont) { 394 LayoutBoxModelObject* oldCont) {
397 ASSERT(isDescendantOf(fromBlock)); 395 ASSERT(isDescendantOf(fromBlock));
398 396
399 // If we're splitting the inline containing the fullscreened element,
400 // |beforeChild| may be the layoutObject for the fullscreened element.
401 // However, that layoutObject is wrapped in a LayoutFullScreen, so |this| is
402 // not its parent. Since the splitting logic expects |this| to be the parent,
403 // set |beforeChild| to be the LayoutFullScreen.
404 if (Fullscreen* fullscreen = Fullscreen::fromIfExists(document())) {
405 const Element* fullScreenElement = fullscreen->currentFullScreenElement();
406 if (fullScreenElement && beforeChild &&
407 beforeChild->node() == fullScreenElement)
408 beforeChild = fullscreen->fullScreenLayoutObject();
409 }
410
411 // FIXME: Because splitting is O(n^2) as tags nest pathologically, we cap the 397 // FIXME: Because splitting is O(n^2) as tags nest pathologically, we cap the
412 // depth at which we're willing to clone. 398 // depth at which we're willing to clone.
413 // There will eventually be a better approach to this problem that will let us 399 // There will eventually be a better approach to this problem that will let us
414 // nest to a much greater depth (see bugzilla bug 13430) but for now we have a 400 // nest to a much greater depth (see bugzilla bug 13430) but for now we have a
415 // limit. This *will* result in incorrect rendering, but the alternative is to 401 // limit. This *will* result in incorrect rendering, but the alternative is to
416 // hang forever. 402 // hang forever.
417 const unsigned cMaxSplitDepth = 200; 403 const unsigned cMaxSplitDepth = 200;
418 Vector<LayoutInline*> inlinesToClone; 404 Vector<LayoutInline*> inlinesToClone;
419 LayoutInline* topMostInline = this; 405 LayoutInline* topMostInline = this;
420 for (LayoutObject* o = this; o != fromBlock; o = o->parent()) { 406 for (LayoutObject* o = this; o != fromBlock; o = o->parent()) {
(...skipping 1093 matching lines...) Expand 10 before | Expand all | Expand 10 after
1514 paintInvalidator.invalidateDisplayItemClient(*box, invalidationReason); 1500 paintInvalidator.invalidateDisplayItemClient(*box, invalidationReason);
1515 } 1501 }
1516 1502
1517 // TODO(lunalu): Not to just dump 0, 0 as the x and y here 1503 // TODO(lunalu): Not to just dump 0, 0 as the x and y here
1518 LayoutRect LayoutInline::debugRect() const { 1504 LayoutRect LayoutInline::debugRect() const {
1519 IntRect linesBox = enclosingIntRect(linesBoundingBox()); 1505 IntRect linesBox = enclosingIntRect(linesBoundingBox());
1520 return LayoutRect(IntRect(0, 0, linesBox.width(), linesBox.height())); 1506 return LayoutRect(IntRect(0, 0, linesBox.width(), linesBox.height()));
1521 } 1507 }
1522 1508
1523 } // namespace blink 1509 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutFullScreen.cpp ('k') | third_party/WebKit/Source/core/layout/LayoutMenuList.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698