OLD | NEW |
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) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) | 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) |
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv
ed. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv
ed. |
7 * Copyright (C) 2009 Google Inc. All rights reserved. | 7 * Copyright (C) 2009 Google Inc. All rights reserved. |
8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 2354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2365 | 2365 |
2366 // If this renderer is being autoscrolled, stop the autoscroll timer | 2366 // If this renderer is being autoscrolled, stop the autoscroll timer |
2367 | 2367 |
2368 // FIXME: RenderObject::destroy should not get called with a renderer whose
document | 2368 // FIXME: RenderObject::destroy should not get called with a renderer whose
document |
2369 // has a null frame, so we assert this. However, we don't want release build
s to crash which is why we | 2369 // has a null frame, so we assert this. However, we don't want release build
s to crash which is why we |
2370 // check that the frame is not null. | 2370 // check that the frame is not null. |
2371 ASSERT(frame()); | 2371 ASSERT(frame()); |
2372 if (frame() && frame()->eventHandler()->autoscrollRenderer() == this) | 2372 if (frame() && frame()->eventHandler()->autoscrollRenderer() == this) |
2373 frame()->eventHandler()->stopAutoscrollTimer(true); | 2373 frame()->eventHandler()->stopAutoscrollTimer(true); |
2374 | 2374 |
2375 if (AXObjectCache::accessibilityEnabled()) { | |
2376 document()->axObjectCache()->childrenChanged(this->parent()); | |
2377 document()->axObjectCache()->remove(this); | |
2378 } | |
2379 animation()->cancelAnimations(this); | 2375 animation()->cancelAnimations(this); |
2380 | 2376 |
| 2377 // For accessibility management, notify the parent of the imminent change to
its child set. |
| 2378 // We do it now, before remove(), while the parent pointer is still availabl
e. |
| 2379 if (AXObjectCache::accessibilityEnabled()) |
| 2380 document()->axObjectCache()->childrenChanged(this->parent()); |
| 2381 |
2381 remove(); | 2382 remove(); |
2382 | 2383 |
| 2384 // The remove() call above may invoke axObjectCache()->childrenChanged() on
the parent, which may require the AX render |
| 2385 // object for this renderer. So we remove the AX render object now, after th
e renderer is removed. |
| 2386 if (AXObjectCache::accessibilityEnabled()) |
| 2387 document()->axObjectCache()->remove(this); |
| 2388 |
2383 // Continuation and first-letter can generate several renderers associated w
ith a single node. | 2389 // Continuation and first-letter can generate several renderers associated w
ith a single node. |
2384 // We only want to clear the node's renderer if we are the associated render
er. | 2390 // We only want to clear the node's renderer if we are the associated render
er. |
2385 if (node() && node()->renderer() == this) | 2391 if (node() && node()->renderer() == this) |
2386 node()->setRenderer(0); | 2392 node()->setRenderer(0); |
2387 | 2393 |
2388 #ifndef NDEBUG | 2394 #ifndef NDEBUG |
2389 if (!documentBeingDestroyed() && view() && view()->hasRenderNamedFlowThreads
()) { | 2395 if (!documentBeingDestroyed() && view() && view()->hasRenderNamedFlowThreads
()) { |
2390 // After remove, the object and the associated information should not be
in any flow thread. | 2396 // After remove, the object and the associated information should not be
in any flow thread. |
2391 const RenderNamedFlowThreadList* flowThreadList = view()->flowThreadCont
roller()->renderNamedFlowThreadList(); | 2397 const RenderNamedFlowThreadList* flowThreadList = view()->flowThreadCont
roller()->renderNamedFlowThreadList(); |
2392 for (RenderNamedFlowThreadList::const_iterator iter = flowThreadList->be
gin(); iter != flowThreadList->end(); ++iter) { | 2398 for (RenderNamedFlowThreadList::const_iterator iter = flowThreadList->be
gin(); iter != flowThreadList->end(); ++iter) { |
(...skipping 777 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3170 { | 3176 { |
3171 if (object1) { | 3177 if (object1) { |
3172 const WebCore::RenderObject* root = object1; | 3178 const WebCore::RenderObject* root = object1; |
3173 while (root->parent()) | 3179 while (root->parent()) |
3174 root = root->parent(); | 3180 root = root->parent(); |
3175 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); | 3181 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); |
3176 } | 3182 } |
3177 } | 3183 } |
3178 | 3184 |
3179 #endif | 3185 #endif |
OLD | NEW |