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

Side by Side Diff: Source/core/layout/LayoutBlock.cpp

Issue 1224933002: Combine outline and focus ring code paths (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase Created 5 years, 3 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 | Annotate | Revision Log
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 * (C) 2007 David Smith (catfish.man@gmail.com) 4 * (C) 2007 David Smith (catfish.man@gmail.com)
5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 1266 matching lines...) Expand 10 before | Expand all | Expand 10 after
1277 { 1277 {
1278 BlockPainter(*this).paintObject(paintInfo, paintOffset); 1278 BlockPainter(*this).paintObject(paintInfo, paintOffset);
1279 } 1279 }
1280 1280
1281 LayoutInline* LayoutBlock::inlineElementContinuation() const 1281 LayoutInline* LayoutBlock::inlineElementContinuation() const
1282 { 1282 {
1283 LayoutBoxModelObject* continuation = this->continuation(); 1283 LayoutBoxModelObject* continuation = this->continuation();
1284 return continuation && continuation->isInline() ? toLayoutInline(continuatio n) : 0; 1284 return continuation && continuation->isInline() ? toLayoutInline(continuatio n) : 0;
1285 } 1285 }
1286 1286
1287 ContinuationOutlineTableMap* continuationOutlineTable()
1288 {
1289 DEFINE_STATIC_LOCAL(ContinuationOutlineTableMap, table, ());
1290 return &table;
1291 }
1292
1293 void LayoutBlock::addContinuationWithOutline(LayoutInline* flow)
1294 {
1295 // We can't make this work if the inline is in a layer. We'll just rely on the broken
1296 // way of painting.
1297 ASSERT(!flow->layer() && !flow->isInlineElementContinuation());
1298
1299 ContinuationOutlineTableMap* table = continuationOutlineTable();
1300 ListHashSet<LayoutInline*>* continuations = table->get(this);
1301 if (!continuations) {
1302 continuations = new ListHashSet<LayoutInline*>;
1303 table->set(this, adoptPtr(continuations));
1304 }
1305
1306 continuations->add(flow);
1307 }
1308
1309 bool LayoutBlock::isSelectionRoot() const 1287 bool LayoutBlock::isSelectionRoot() const
1310 { 1288 {
1311 if (isPseudoElement()) 1289 if (isPseudoElement())
1312 return false; 1290 return false;
1313 ASSERT(node() || isAnonymous()); 1291 ASSERT(node() || isAnonymous());
1314 1292
1315 // FIXME: Eventually tables should have to learn how to fill gaps between ce lls, at least in simple non-spanning cases. 1293 // FIXME: Eventually tables should have to learn how to fill gaps between ce lls, at least in simple non-spanning cases.
1316 if (isTable()) 1294 if (isTable())
1317 return false; 1295 return false;
1318 1296
(...skipping 1550 matching lines...) Expand 10 before | Expand all | Expand 10 after
2869 2847
2870 if (TrackedLayoutBoxListHashSet* positionedDescendantSet = positionedObjects ()) { 2848 if (TrackedLayoutBoxListHashSet* positionedDescendantSet = positionedObjects ()) {
2871 TrackedLayoutBoxListHashSet::const_iterator end = positionedDescendantSe t->end(); 2849 TrackedLayoutBoxListHashSet::const_iterator end = positionedDescendantSe t->end();
2872 for (TrackedLayoutBoxListHashSet::const_iterator it = positionedDescenda ntSet->begin(); it != end; ++it) { 2850 for (TrackedLayoutBoxListHashSet::const_iterator it = positionedDescenda ntSet->begin(); it != end; ++it) {
2873 LayoutBox* currBox = *it; 2851 LayoutBox* currBox = *it;
2874 ASSERT(!currBox->needsLayout()); 2852 ASSERT(!currBox->needsLayout());
2875 } 2853 }
2876 } 2854 }
2877 } 2855 }
2878 2856
2879 bool LayoutBlock::paintsContinuationOutline(LayoutInline* flow)
2880 {
2881 ContinuationOutlineTableMap* table = continuationOutlineTable();
2882 if (table->isEmpty())
2883 return false;
2884
2885 ListHashSet<LayoutInline*>* continuations = table->get(this);
2886 if (!continuations)
2887 return false;
2888
2889 return continuations->contains(flow);
2890 }
2891
2892 #endif 2857 #endif
2893 2858
2894 #ifndef NDEBUG 2859 #ifndef NDEBUG
2895 2860
2896 void LayoutBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Layout Object* obj) const 2861 void LayoutBlock::showLineTreeAndMark(const InlineBox* markedBox1, const char* m arkedLabel1, const InlineBox* markedBox2, const char* markedLabel2, const Layout Object* obj) const
2897 { 2862 {
2898 showLayoutObject(); 2863 showLayoutObject();
2899 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot Box()) 2864 for (const RootInlineBox* root = firstRootBox(); root; root = root->nextRoot Box())
2900 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa bel2, obj, 1); 2865 root->showLineTreeAndMark(markedBox1, markedLabel1, markedBox2, markedLa bel2, obj, 1);
2901 } 2866 }
2902 2867
2903 #endif 2868 #endif
2904 2869
2905 } // namespace blink 2870 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698