[librsvg: 3/7] element: set the atts directly in the create fn
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 3/7] element: set the atts directly in the create fn
- Date: Mon, 30 Mar 2020 16:05:46 +0000 (UTC)
commit 0b365f60269c35bc868aff9c1be5ba976afec37d
Author: Paolo Borelli <pborelli gnome org>
Date: Sat Mar 28 12:42:12 2020 +0100
element: set the atts directly in the create fn
rsvg_internals/src/document.rs | 9 +++++----
rsvg_internals/src/element.rs | 8 ++++++--
rsvg_internals/src/node.rs | 5 +++--
3 files changed, 14 insertions(+), 8 deletions(-)
---
diff --git a/rsvg_internals/src/document.rs b/rsvg_internals/src/document.rs
index e93d50b9..cda56a96 100644
--- a/rsvg_internals/src/document.rs
+++ b/rsvg_internals/src/document.rs
@@ -453,7 +453,11 @@ impl DocumentBuilder {
pbag: &PropertyBag,
parent: Option<Node>,
) -> Node {
- let mut node = Node::new(NodeData::new_element(name, pbag));
+ let node = Node::new(NodeData::new_element(
+ name,
+ pbag,
+ self.load_options.locale(),
+ ));
if let Some(id) = node.borrow_element().get_id() {
// This is so we don't overwrite an existing id
@@ -462,9 +466,6 @@ impl DocumentBuilder {
.or_insert_with(|| node.clone());
}
- node.borrow_element_mut()
- .set_atts(pbag, self.load_options.locale());
-
if let Some(mut parent) = parent {
parent.append(node.clone());
} else if self.tree.is_none() {
diff --git a/rsvg_internals/src/element.rs b/rsvg_internals/src/element.rs
index 619287a8..a2a6ccbe 100644
--- a/rsvg_internals/src/element.rs
+++ b/rsvg_internals/src/element.rs
@@ -579,7 +579,7 @@ static ELEMENT_CREATORS: Lazy<HashMap<&'static str, (ElementCreateFn, ElementCre
///
/// [`Element`]: type.Element.html
/// [`NonRendering`]: ../structure/struct.NonRendering.html
-pub fn create_element(name: &QualName, pbag: &PropertyBag) -> Element {
+pub fn create_element(name: &QualName, pbag: &PropertyBag, locale: &Locale) -> Element {
let mut id = None;
let mut class = None;
@@ -617,7 +617,11 @@ pub fn create_element(name: &QualName, pbag: &PropertyBag) -> Element {
// sizes::print_sizes();
- create_fn(name, id, class)
+ let mut element = create_fn(name, id, class);
+
+ element.set_atts(pbag, locale);
+
+ element
}
#[cfg(ignore)]
diff --git a/rsvg_internals/src/node.rs b/rsvg_internals/src/node.rs
index 54579fd5..2fc41f30 100644
--- a/rsvg_internals/src/node.rs
+++ b/rsvg_internals/src/node.rs
@@ -11,6 +11,7 @@
//! [`Node`]: ../../rctree/struct.Node.html
//! [`NodeData`]: struct.NodeData.html
+use locale_config::Locale;
use markup5ever::QualName;
use std::cell::{Ref, RefMut};
use std::fmt;
@@ -74,8 +75,8 @@ pub enum NodeData {
}
impl NodeData {
- pub fn new_element(name: &QualName, pbag: &PropertyBag) -> NodeData {
- NodeData::Element(Box::new(create_element(name, pbag)))
+ pub fn new_element(name: &QualName, pbag: &PropertyBag, locale: &Locale) -> NodeData {
+ NodeData::Element(Box::new(create_element(name, pbag, locale)))
}
pub fn new_chars() -> NodeData {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]