OLD | NEW |
1 /** | 1 /** |
2 * Copyright (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) | 2 * Copyright (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) |
3 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. | 3 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. |
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 12 matching lines...) Expand all Loading... |
23 #include "core/layout/LayoutCounter.h" | 23 #include "core/layout/LayoutCounter.h" |
24 | 24 |
25 #include "core/HTMLNames.h" | 25 #include "core/HTMLNames.h" |
26 #include "core/dom/Element.h" | 26 #include "core/dom/Element.h" |
27 #include "core/dom/ElementTraversal.h" | 27 #include "core/dom/ElementTraversal.h" |
28 #include "core/html/HTMLOListElement.h" | 28 #include "core/html/HTMLOListElement.h" |
29 #include "core/layout/CounterNode.h" | 29 #include "core/layout/CounterNode.h" |
30 #include "core/layout/LayoutListItem.h" | 30 #include "core/layout/LayoutListItem.h" |
31 #include "core/layout/LayoutListMarker.h" | 31 #include "core/layout/LayoutListMarker.h" |
32 #include "core/layout/LayoutView.h" | 32 #include "core/layout/LayoutView.h" |
33 #include "core/layout/style/LayoutStyle.h" | 33 #include "core/layout/style/ComputedStyle.h" |
34 #include "wtf/StdLibExtras.h" | 34 #include "wtf/StdLibExtras.h" |
35 | 35 |
36 #ifndef NDEBUG | 36 #ifndef NDEBUG |
37 #include <stdio.h> | 37 #include <stdio.h> |
38 #endif | 38 #endif |
39 | 39 |
40 namespace blink { | 40 namespace blink { |
41 | 41 |
42 using namespace HTMLNames; | 42 using namespace HTMLNames; |
43 | 43 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 static bool planCounter(LayoutObject& object, const AtomicString& identifier, bo
ol& isReset, int& value) | 104 static bool planCounter(LayoutObject& object, const AtomicString& identifier, bo
ol& isReset, int& value) |
105 { | 105 { |
106 // Real text nodes don't have their own style so they can't have counters. | 106 // Real text nodes don't have their own style so they can't have counters. |
107 // We can't even look at their styles or we'll see extra resets and incremen
ts! | 107 // We can't even look at their styles or we'll see extra resets and incremen
ts! |
108 if (object.isText() && !object.isBR()) | 108 if (object.isText() && !object.isBR()) |
109 return false; | 109 return false; |
110 Node* generatingNode = object.generatingNode(); | 110 Node* generatingNode = object.generatingNode(); |
111 // We must have a generating node or else we cannot have a counter. | 111 // We must have a generating node or else we cannot have a counter. |
112 if (!generatingNode) | 112 if (!generatingNode) |
113 return false; | 113 return false; |
114 const LayoutStyle& style = object.styleRef(); | 114 const ComputedStyle& style = object.styleRef(); |
115 | 115 |
116 switch (style.styleType()) { | 116 switch (style.styleType()) { |
117 case NOPSEUDO: | 117 case NOPSEUDO: |
118 // Sometimes nodes have more then one renderer. Only the first one gets
the counter | 118 // Sometimes nodes have more then one renderer. Only the first one gets
the counter |
119 // LayoutTests/http/tests/css/counter-crash.html | 119 // LayoutTests/http/tests/css/counter-crash.html |
120 if (generatingNode->layoutObject() != &object) | 120 if (generatingNode->layoutObject() != &object) |
121 return false; | 121 return false; |
122 break; | 122 break; |
123 case BEFORE: | 123 case BEFORE: |
124 case AFTER: | 124 case AFTER: |
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 if (node) | 534 if (node) |
535 node = node->parentNode(); | 535 node = node->parentNode(); |
536 else | 536 else |
537 node = renderer->generatingNode(); | 537 node = renderer->generatingNode(); |
538 if (node && node->needsAttach()) | 538 if (node && node->needsAttach()) |
539 return; // No need to update if the parent is not attached yet | 539 return; // No need to update if the parent is not attached yet |
540 for (LayoutObject* descendant = renderer; descendant; descendant = descendan
t->nextInPreOrder(renderer)) | 540 for (LayoutObject* descendant = renderer; descendant; descendant = descendan
t->nextInPreOrder(renderer)) |
541 updateCounters(*descendant); | 541 updateCounters(*descendant); |
542 } | 542 } |
543 | 543 |
544 void LayoutCounter::rendererStyleChanged(LayoutObject& renderer, const LayoutSty
le* oldStyle, const LayoutStyle& newStyle) | 544 void LayoutCounter::rendererStyleChanged(LayoutObject& renderer, const ComputedS
tyle* oldStyle, const ComputedStyle& newStyle) |
545 { | 545 { |
546 Node* node = renderer.generatingNode(); | 546 Node* node = renderer.generatingNode(); |
547 if (!node || node->needsAttach()) | 547 if (!node || node->needsAttach()) |
548 return; // cannot have generated content or if it can have, it will be h
andled during attaching | 548 return; // cannot have generated content or if it can have, it will be h
andled during attaching |
549 const CounterDirectiveMap* oldCounterDirectives = oldStyle ? oldStyle->count
erDirectives() : 0; | 549 const CounterDirectiveMap* oldCounterDirectives = oldStyle ? oldStyle->count
erDirectives() : 0; |
550 const CounterDirectiveMap* newCounterDirectives = newStyle.counterDirectives
(); | 550 const CounterDirectiveMap* newCounterDirectives = newStyle.counterDirectives
(); |
551 if (oldCounterDirectives) { | 551 if (oldCounterDirectives) { |
552 if (newCounterDirectives) { | 552 if (newCounterDirectives) { |
553 CounterDirectiveMap::const_iterator newMapEnd = newCounterDirectives
->end(); | 553 CounterDirectiveMap::const_iterator newMapEnd = newCounterDirectives
->end(); |
554 CounterDirectiveMap::const_iterator oldMapEnd = oldCounterDirectives
->end(); | 554 CounterDirectiveMap::const_iterator oldMapEnd = oldCounterDirectives
->end(); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
603 fprintf(stderr, " "); | 603 fprintf(stderr, " "); |
604 fprintf(stderr, "%p N:%p P:%p PS:%p NS:%p C:%p\n", | 604 fprintf(stderr, "%p N:%p P:%p PS:%p NS:%p C:%p\n", |
605 current, current->node(), current->parent(), current->previousSiblin
g(), | 605 current, current->node(), current->parent(), current->previousSiblin
g(), |
606 current->nextSibling(), current->hasCounterNodeMap() ? | 606 current->nextSibling(), current->hasCounterNodeMap() ? |
607 counterName ? blink::counterMaps().get(current)->get(identifier) : (
blink::CounterNode*)1 : (blink::CounterNode*)0); | 607 counterName ? blink::counterMaps().get(current)->get(identifier) : (
blink::CounterNode*)1 : (blink::CounterNode*)0); |
608 } | 608 } |
609 fflush(stderr); | 609 fflush(stderr); |
610 } | 610 } |
611 | 611 |
612 #endif // NDEBUG | 612 #endif // NDEBUG |
OLD | NEW |