diff --git a/wayvr/src/overlays/edit/mod.rs b/wayvr/src/overlays/edit/mod.rs index d9f913b2..2ca5fe06 100644 --- a/wayvr/src/overlays/edit/mod.rs +++ b/wayvr/src/overlays/edit/mod.rs @@ -468,50 +468,68 @@ fn reset_panel( let mut com = panel.layout.common(); - let c = panel + if let Ok(c) = panel .parser_state - .fetch_component_as::("top_grab")?; - c.set_sticky_state(&mut com, !state.grabbable); + .fetch_component_as::("top_grab") + { + c.set_sticky_state(&mut com, !state.grabbable); + } - let c = panel + if let Ok(c) = panel .parser_state - .fetch_component_as::("lerp_slider")?; - c.set_value_primary(&mut com, state.positioning.get_lerp().unwrap_or(1.0)); + .fetch_component_as::("lerp_slider") + { + c.set_value_primary(&mut com, state.positioning.get_lerp().unwrap_or(1.0)); + } - let c = panel + if let Ok(c) = panel .parser_state - .fetch_component_as::("alpha_slider")?; - c.set_value_primary(&mut com, state.alpha); + .fetch_component_as::("alpha_slider") + { + c.set_value_primary(&mut com, state.alpha); + } - let c = panel + if let Ok(c) = panel .parser_state - .fetch_component_as::("curve_slider")?; - c.set_value_primary(&mut com, state.curvature.unwrap_or(0.0)); + .fetch_component_as::("curve_slider") + { + c.set_value_primary(&mut com, state.curvature.unwrap_or(0.0)); + } - let c = panel + if let Ok(c) = panel .parser_state - .fetch_component_as::("additive_box")?; - c.set_checked(&mut com, state.additive); + .fetch_component_as::("additive_box") + { + c.set_checked(&mut com, state.additive); + } - let c = panel + if let Ok(c) = panel .parser_state - .fetch_component_as::("align_box")?; - c.set_checked(&mut com, state.positioning.get_align().unwrap_or(false)); + .fetch_component_as::("align_box") + { + c.set_checked(&mut com, state.positioning.get_align().unwrap_or(false)); + } - let c = panel + if let Ok(c) = panel .parser_state - .fetch_component_as::("global_box")?; - c.set_checked(&mut com, owc.global); + .fetch_component_as::("global_box") + { + c.set_checked(&mut com, owc.global); + } - let c = panel + if let Ok(c) = panel .parser_state - .fetch_component_as::("angle_fade_box")?; - c.set_checked(&mut com, state.angle_fade); + .fetch_component_as::("angle_fade_box") + { + c.set_checked(&mut com, state.angle_fade); + } - let c = panel + if let Ok(c) = panel .parser_state - .fetch_component_as::("block_input_box")?; - c.set_checked(&mut com, state.block_input); + .fetch_component_as::("block_input_box") + { + c.set_checked(&mut com, state.block_input); + } panel.state.pos.reset(&mut com, &state.positioning.into()); panel.state.lock.reset(&mut com, state.interactable); @@ -526,10 +544,12 @@ fn reset_panel( // Set the checkbox label based on stereo mode let translation = get_stereo_full_frame_translation(stereo); - let c = panel + if let Ok(c) = panel .parser_state - .fetch_component_as::("stereo_full_frame_box")?; - c.set_text(&mut com, Translation::from_translation_key(translation)); + .fetch_component_as::("stereo_full_frame_box") + { + c.set_text(&mut com, Translation::from_translation_key(translation)); + } } else { panel.state.tabs.set_tab_visible(&mut com, "stereo", false); } @@ -548,20 +568,24 @@ fn reset_panel( owc.backend.get_attrib(BackendAttrib::StereoFullFrame), BackendAttribValue::StereoFullFrame ) { - let c = panel + if let Ok(c) = panel .parser_state - .fetch_component_as::("stereo_full_frame_box")?; - c.set_checked(&mut com, full_frame); + .fetch_component_as::("stereo_full_frame_box") + { + c.set_checked(&mut com, full_frame); + } } if let Some(adjust_mouse) = attrib_value!( owc.backend.get_attrib(BackendAttrib::StereoAdjustMouse), BackendAttribValue::StereoAdjustMouse ) { - let c = panel + if let Ok(c) = panel .parser_state - .fetch_component_as::("stereo_adjust_mouse_box")?; - c.set_checked(&mut com, adjust_mouse); + .fetch_component_as::("stereo_adjust_mouse_box") + { + c.set_checked(&mut com, adjust_mouse); + } } Ok(()) @@ -666,9 +690,16 @@ fn set_up_checkbox( id: &str, callback: fn(&mut AppState, &mut OverlayWindowConfig, bool), ) -> anyhow::Result<()> { - let checkbox = panel + let checkbox = match panel .parser_state - .fetch_component_as::(id)?; + .fetch_component_as::(id) + { + Ok(c) => c, + Err(e) => { + log::warn!("Component checkbox '{id}' not found in theme: {e:?}"); + return Ok(()); + } + }; let tasks = panel.state.tasks.clone(); let overlay_id = panel.state.id.clone(); checkbox.on_toggle(Box::new(move |_common, e| { diff --git a/wayvr/src/overlays/edit/stereo.rs b/wayvr/src/overlays/edit/stereo.rs index 81cf830e..6417abcb 100644 --- a/wayvr/src/overlays/edit/stereo.rs +++ b/wayvr/src/overlays/edit/stereo.rs @@ -13,7 +13,8 @@ pub fn new_stereo_tab_handler( // Fetch the checkbox component first, before creating the closure let checkbox = panel .parser_state - .fetch_component_as::("stereo_full_frame_box")?; + .fetch_component_as::("stereo_full_frame_box") + .ok(); SpriteTabHandler::new( panel, @@ -23,7 +24,9 @@ pub fn new_stereo_tab_handler( let stereo = *state; let translation = get_stereo_full_frame_translation(stereo); - checkbox.set_text(common, Translation::from_translation_key(translation)); + if let Some(ref cb) = checkbox { + cb.set_text(common, Translation::from_translation_key(translation)); + } Box::new(move |app, owc| { owc.backend diff --git a/wayvr/src/windowing/manager.rs b/wayvr/src/windowing/manager.rs index 252760eb..0fcb1e62 100644 --- a/wayvr/src/windowing/manager.rs +++ b/wayvr/src/windowing/manager.rs @@ -631,15 +631,13 @@ impl OverlayWindowManager { } if enabled { - self.wrappers - .wrap_edit_mode(id, &mut overlay.config, app) - .inspect_err(|e| log::error!("{e:?}")) - .unwrap(); // FIXME: unwrap + if let Err(e) = self.wrappers.wrap_edit_mode(id, &mut overlay.config, app) { + log::error!("Could not wrap edit mode for overlay {id:?}: {e:?}"); + } } else { - self.wrappers - .unwrap_edit_mode(&mut overlay.config, app) - .inspect_err(|e| log::error!("{e:?}")) - .unwrap(); // FIXME: unwrap + if let Err(e) = self.wrappers.unwrap_edit_mode(&mut overlay.config, app) { + log::error!("Could not unwrap edit mode for overlay {id:?}: {e:?}"); + } } }