live preview: Retrieve ElementSelection from preview_state

... and not the selected element directly. This will allow to move
more code into the proper submodules.
This commit is contained in:
Tobias Hunger 2024-02-21 15:04:43 +01:00 committed by Tobias Hunger
parent 17fbe46342
commit df1db6aafe
2 changed files with 15 additions and 7 deletions

View file

@ -164,7 +164,10 @@ fn change_geometry_of_selected_element(x: f32, y: f32, width: f32, height: f32)
return;
};
let Some(selected_element) = selected_element() else {
let Some(selected_element_struct) = selected_element() else {
return;
};
let Some(selected_element) = selected_element_struct.as_element() else {
return;
};
let Some(component_instance) = component_instance() else {
@ -657,10 +660,10 @@ fn set_selected_element(
})
}
fn selected_element() -> Option<ElementRc> {
fn selected_element() -> Option<ElementSelection> {
PREVIEW_STATE.with(move |preview_state| {
let preview_state = preview_state.borrow();
preview_state.selected.as_ref().and_then(|es| es.as_element())
preview_state.selected.clone()
})
}

View file

@ -291,9 +291,11 @@ pub fn select_element_at(x: f32, y: f32, enter_component: bool) {
let root_element = root_element(&component_instance);
if let Some(se) = super::selected_element() {
if element_covers_point(x, y, &component_instance, &se) {
// We clicked on the already selected element: Do nothing!
return;
if let Some(element) = se.as_element() {
if element_covers_point(x, y, &component_instance, &element) {
// We clicked on the already selected element: Do nothing!
return;
}
}
}
@ -315,7 +317,10 @@ pub fn select_element_behind(x: f32, y: f32, enter_component: bool, reverse: boo
};
let root_element = root_element(&component_instance);
let Some(selected_element) = super::selected_element() else {
let Some(selected_element_data) = super::selected_element() else {
return;
};
let Some(selected_element) = selected_element_data.as_element() else {
return;
};
let Some(selected_component) = selected_element.borrow().enclosing_component.upgrade() else {