| 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 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 return StyledElement::rendererIsNeeded(context); | 220 return StyledElement::rendererIsNeeded(context); |
| 221 | 221 |
| 222 return false; | 222 return false; |
| 223 } | 223 } |
| 224 | 224 |
| 225 void SVGTRefElement::buildPendingResource() | 225 void SVGTRefElement::buildPendingResource() |
| 226 { | 226 { |
| 227 // Remove any existing event listener. | 227 // Remove any existing event listener. |
| 228 clearEventListener(); | 228 clearEventListener(); |
| 229 | 229 |
| 230 // If we're not yet in a document, this function will be called again from i
nsertedIntoDocument(). |
| 231 if (!inDocument()) |
| 232 return; |
| 233 |
| 230 String id; | 234 String id; |
| 231 Element* target = SVGURIReference::targetElementFromIRIString(href(), docume
nt(), &id); | 235 Element* target = SVGURIReference::targetElementFromIRIString(href(), docume
nt(), &id); |
| 232 if (!target) { | 236 if (!target) { |
| 233 if (hasPendingResources() || id.isEmpty()) | 237 if (hasPendingResources() || id.isEmpty()) |
| 234 return; | 238 return; |
| 235 | 239 |
| 236 ASSERT(!hasPendingResources()); | 240 ASSERT(!hasPendingResources()); |
| 237 document()->accessSVGExtensions()->addPendingResource(id, this); | 241 document()->accessSVGExtensions()->addPendingResource(id, this); |
| 238 ASSERT(hasPendingResources()); | 242 ASSERT(hasPendingResources()); |
| 239 return; | 243 return; |
| 240 } | 244 } |
| 241 | 245 |
| 242 updateReferencedText(); | 246 updateReferencedText(); |
| 243 | 247 |
| 244 // We should not add the event listener if we are not in document yet. | |
| 245 if (!inDocument()) | |
| 246 return; | |
| 247 | |
| 248 m_eventListener = SubtreeModificationEventListener::create(this, id); | 248 m_eventListener = SubtreeModificationEventListener::create(this, id); |
| 249 ASSERT(target->parentNode()); | 249 ASSERT(target->parentNode()); |
| 250 target->parentNode()->addEventListener(eventNames().DOMSubtreeModifiedEvent,
m_eventListener.get(), false); | 250 target->parentNode()->addEventListener(eventNames().DOMSubtreeModifiedEvent,
m_eventListener.get(), false); |
| 251 } | 251 } |
| 252 | 252 |
| 253 void SVGTRefElement::insertedIntoDocument() | 253 void SVGTRefElement::insertedIntoDocument() |
| 254 { | 254 { |
| 255 SVGStyledElement::insertedIntoDocument(); | 255 SVGStyledElement::insertedIntoDocument(); |
| 256 buildPendingResource(); | 256 buildPendingResource(); |
| 257 } | 257 } |
| 258 | 258 |
| 259 void SVGTRefElement::removedFromDocument() | 259 void SVGTRefElement::removedFromDocument() |
| 260 { | 260 { |
| 261 SVGStyledElement::removedFromDocument(); | 261 SVGStyledElement::removedFromDocument(); |
| 262 clearEventListener(); | 262 clearEventListener(); |
| 263 } | 263 } |
| 264 | 264 |
| 265 void SVGTRefElement::clearEventListener() | 265 void SVGTRefElement::clearEventListener() |
| 266 { | 266 { |
| 267 if (m_eventListener) { | 267 if (m_eventListener) { |
| 268 m_eventListener->clear(); | 268 m_eventListener->clear(); |
| 269 m_eventListener = 0; | 269 m_eventListener = 0; |
| 270 } | 270 } |
| 271 } | 271 } |
| 272 | 272 |
| 273 } | 273 } |
| 274 | 274 |
| 275 #endif // ENABLE(SVG) | 275 #endif // ENABLE(SVG) |
| OLD | NEW |