summaryrefslogtreecommitdiff
path: root/iced_builder
diff options
context:
space:
mode:
Diffstat (limited to 'iced_builder')
-rw-r--r--iced_builder/src/main.rs6
-rw-r--r--iced_builder/src/types/element_name.rs2
-rwxr-xr-xiced_builder/src/types/rendered_element.rs24
-rw-r--r--iced_builder/src/views/element_list.rs4
4 files changed, 19 insertions, 17 deletions
diff --git a/iced_builder/src/main.rs b/iced_builder/src/main.rs
index ab708df..d428a8f 100644
--- a/iced_builder/src/main.rs
+++ b/iced_builder/src/main.rs
@@ -32,7 +32,7 @@ struct App {
pane_state: pane_grid::State<Panes>,
focus: Option<Pane>,
designer_page: DesignerPage,
- element_list: Vec<ElementName>,
+ element_list: &'static [ElementName],
editor_content: text_editor::Content,
}
@@ -62,7 +62,7 @@ impl App {
pane_state: state,
focus: None,
designer_page: DesignerPage::DesignerView,
- element_list: ElementName::ALL.to_vec(),
+ element_list: ElementName::ALL,
editor_content: text_editor::Content::new(),
},
Task::none(),
@@ -321,7 +321,7 @@ impl App {
),
},
Panes::ElementList => {
- element_list::view(&self.element_list, is_focused)
+ element_list::view(self.element_list, is_focused)
}
}
})
diff --git a/iced_builder/src/types/element_name.rs b/iced_builder/src/types/element_name.rs
index 5567cff..e172227 100644
--- a/iced_builder/src/types/element_name.rs
+++ b/iced_builder/src/types/element_name.rs
@@ -17,7 +17,7 @@ pub enum ElementName {
}
impl ElementName {
- pub const ALL: [Self; 7] = [
+ pub const ALL: &'static [Self; 7] = &[
Self::Text(String::new()),
Self::Button(String::new()),
Self::SVG(String::new()),
diff --git a/iced_builder/src/types/rendered_element.rs b/iced_builder/src/types/rendered_element.rs
index 35198a1..d4d1a6c 100755
--- a/iced_builder/src/types/rendered_element.rs
+++ b/iced_builder/src/types/rendered_element.rs
@@ -95,7 +95,8 @@ impl RenderedElement {
}
pub fn remove(&mut self, element: &RenderedElement) {
- if let Some(child_elements) = self.child_elements.as_mut() {
+ let parent = self.find_parent(element).unwrap();
+ if let Some(child_elements) = parent.child_elements.as_mut() {
if let Some(index) =
child_elements.iter().position(|x| x == element)
{
@@ -132,8 +133,7 @@ impl RenderedElement {
match action {
Action::Stop => Ok(()),
Action::Drop => {
- let parent = element_tree.find_parent(self).unwrap();
- parent.remove(self);
+ element_tree.remove(self);
Ok(())
}
@@ -141,8 +141,7 @@ impl RenderedElement {
"the action was of kind `AddNew`, but invoking it on an existing element tree is not possible".into(),
),
Action::PushFront(id) => {
- let old_parent = element_tree.find_parent(self).unwrap();
- old_parent.remove(self);
+ element_tree.remove(self);
let new_parent = element_tree.find_by_id(id).unwrap();
new_parent.push_front(self);
@@ -150,8 +149,7 @@ impl RenderedElement {
Ok(())
}
Action::InsertAfter(parent_id, target_id) => {
- let old_parent = element_tree.find_parent(self).unwrap();
- old_parent.remove(self);
+ element_tree.remove(self);
let new_parent = element_tree.find_by_id(parent_id).unwrap();
new_parent.insert_after(target_id, self);
@@ -161,9 +159,9 @@ impl RenderedElement {
}
}
- fn preset_options(mut self, options: Vec<&str>) -> Self {
+ fn preset_options<'a>(mut self, options: &[&'a str]) -> Self {
for opt in options {
- let _ = self.options.insert(opt.to_owned(), None);
+ let _ = self.options.insert(opt.to_string(), None);
}
self
}
@@ -445,8 +443,12 @@ impl Action {
}
pub fn text(text: &str) -> RenderedElement {
- RenderedElement::new(ElementName::Text(text.to_owned()))
- .preset_options(vec!["size", "line_height", "width", "height"])
+ RenderedElement::new(ElementName::Text(text.to_owned())).preset_options(&[
+ "size",
+ "line_height",
+ "width",
+ "height",
+ ])
}
pub fn button(text: &str) -> RenderedElement {
diff --git a/iced_builder/src/views/element_list.rs b/iced_builder/src/views/element_list.rs
index 0a75a93..74188af 100644
--- a/iced_builder/src/views/element_list.rs
+++ b/iced_builder/src/views/element_list.rs
@@ -5,7 +5,7 @@ use iced_drop::droppable;
use super::style;
use crate::types::{ElementName, Message};
-fn items_list_view<'a>(items: &'a Vec<ElementName>) -> Element<'a, Message> {
+fn items_list_view<'a>(items: &'a [ElementName]) -> Element<'a, Message> {
let mut column = Column::new()
.spacing(20)
.align_x(Alignment::Center)
@@ -27,7 +27,7 @@ fn items_list_view<'a>(items: &'a Vec<ElementName>) -> Element<'a, Message> {
}
pub fn view<'a>(
- element_list: &'a Vec<ElementName>,
+ element_list: &'a [ElementName],
is_focused: bool,
) -> pane_grid::Content<'a, Message> {
let items_list = items_list_view(element_list);