OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2004, 2005 Nikolas Zimmermann <zimmermann@kde.org> |
3 * Copyright (C) 2004, 2005, 2006 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005, 2006 Rob Buis <buis@kde.org> |
4 * Copyright (C) Research In Motion Limited 2011. All rights reserved. | 4 * Copyright (C) Research In Motion Limited 2011. All rights reserved. |
5 * | 5 * |
6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
10 * | 10 * |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 m_eventListener->removeFromTarget(); | 188 m_eventListener->removeFromTarget(); |
189 m_eventListener = 0; | 189 m_eventListener = 0; |
190 } | 190 } |
191 String id; | 191 String id; |
192 Element* target = SVGURIReference::targetElementFromIRIString(href(), do
cument(), &id); | 192 Element* target = SVGURIReference::targetElementFromIRIString(href(), do
cument(), &id); |
193 if (!target) { | 193 if (!target) { |
194 document()->accessSVGExtensions()->addPendingResource(id, this); | 194 document()->accessSVGExtensions()->addPendingResource(id, this); |
195 return; | 195 return; |
196 } | 196 } |
197 updateReferencedText(); | 197 updateReferencedText(); |
198 m_eventListener = SubtreeModificationEventListener::create(this, id); | 198 if (inDocument()) { |
199 ASSERT(target->parentNode()); | 199 m_eventListener = SubtreeModificationEventListener::create(this, id)
; |
200 target->parentNode()->addEventListener(eventNames().DOMSubtreeModifiedEv
ent, m_eventListener.get(), false); | 200 ASSERT(target->parentNode()); |
| 201 target->parentNode()->addEventListener(eventNames().DOMSubtreeModifi
edEvent, m_eventListener.get(), false); |
| 202 } |
201 if (RenderObject* renderer = this->renderer()) | 203 if (RenderObject* renderer = this->renderer()) |
202 RenderSVGResource::markForLayoutAndParentResourceInvalidation(render
er); | 204 RenderSVGResource::markForLayoutAndParentResourceInvalidation(render
er); |
203 return; | 205 return; |
204 } | 206 } |
205 | 207 |
206 ASSERT_NOT_REACHED(); | 208 ASSERT_NOT_REACHED(); |
207 } | 209 } |
208 | 210 |
209 RenderObject* SVGTRefElement::createRenderer(RenderArena* arena, RenderStyle*) | 211 RenderObject* SVGTRefElement::createRenderer(RenderArena* arena, RenderStyle*) |
210 { | 212 { |
(...skipping 24 matching lines...) Expand all Loading... |
235 { | 237 { |
236 updateReferencedText(); | 238 updateReferencedText(); |
237 if (Element* target = SVGURIReference::targetElementFromIRIString(href(), do
cument())) { | 239 if (Element* target = SVGURIReference::targetElementFromIRIString(href(), do
cument())) { |
238 ASSERT(!m_eventListener); | 240 ASSERT(!m_eventListener); |
239 m_eventListener = SubtreeModificationEventListener::create(this, target-
>getIdAttribute()); | 241 m_eventListener = SubtreeModificationEventListener::create(this, target-
>getIdAttribute()); |
240 ASSERT(target->parentNode()); | 242 ASSERT(target->parentNode()); |
241 target->parentNode()->addEventListener(eventNames().DOMSubtreeModifiedEv
ent, m_eventListener.get(), false); | 243 target->parentNode()->addEventListener(eventNames().DOMSubtreeModifiedEv
ent, m_eventListener.get(), false); |
242 } | 244 } |
243 } | 245 } |
244 | 246 |
| 247 void SVGTRefElement::insertedIntoDocument() |
| 248 { |
| 249 SVGStyledElement::insertedIntoDocument(); |
| 250 String id; |
| 251 Element* target = SVGURIReference::targetElementFromIRIString(href(), docume
nt(), &id); |
| 252 if (!target) { |
| 253 document()->accessSVGExtensions()->addPendingResource(id, this); |
| 254 return; |
| 255 } |
| 256 updateReferencedText(); |
| 257 m_eventListener = SubtreeModificationEventListener::create(this, id); |
| 258 ASSERT(target->parentNode()); |
| 259 target->parentNode()->addEventListener(eventNames().DOMSubtreeModifiedEvent,
m_eventListener.get(), false); |
| 260 } |
| 261 |
245 void SVGTRefElement::removedFromDocument() | 262 void SVGTRefElement::removedFromDocument() |
246 { | 263 { |
247 SVGStyledElement::removedFromDocument(); | 264 SVGStyledElement::removedFromDocument(); |
248 | 265 |
249 if (!m_eventListener) | 266 if (!m_eventListener) |
250 return; | 267 return; |
251 | 268 |
252 m_eventListener->removeFromTarget(); | 269 m_eventListener->removeFromTarget(); |
253 m_eventListener = 0; | 270 m_eventListener = 0; |
254 } | 271 } |
255 | 272 |
256 } | 273 } |
257 | 274 |
258 #endif // ENABLE(SVG) | 275 #endif // ENABLE(SVG) |
OLD | NEW |