diff --git a/crates/re_ui/src/lib.rs b/crates/re_ui/src/lib.rs index d8a9d782db95..a985ba713820 100644 --- a/crates/re_ui/src/lib.rs +++ b/crates/re_ui/src/lib.rs @@ -195,16 +195,19 @@ impl ReUi { label: &str, value: &mut Num, range: RangeInclusive, - ) where + ) -> egui::Response + where Num: egui::emath::Numeric, { ui.with_layout(egui::Layout::right_to_left(egui::Align::Center), |ui| { - ui.add_sized( + let response = ui.add_sized( [Self::box_width(), Self::box_height()], egui::DragValue::new(value).clamp_range(range), ); ui.label(egui::RichText::new(label).color(self.design_tokens.gray_900)); - }); + response + }) + .inner } pub fn labeled_toggle_switch(&self, ui: &mut egui::Ui, label: &str, value: &mut bool) { diff --git a/crates/re_viewer/src/app.rs b/crates/re_viewer/src/app.rs index 4c0e2d4023bc..35abd96480df 100644 --- a/crates/re_viewer/src/app.rs +++ b/crates/re_viewer/src/app.rs @@ -493,9 +493,12 @@ impl eframe::App for App { }; } - if self.backend_handle.is_none() { - self.backend_handle = App::spawn_backend(); - }; + #[cfg(not(target_arch = "wasm32"))] + { + if self.backend_handle.is_none() { + self.backend_handle = App::spawn_backend(); + }; + } if self.startup_options.memory_limit.limit.is_none() { // we only warn about high memory usage if the user hasn't specified a limit diff --git a/crates/re_viewer/src/ui/device_settings_panel.rs b/crates/re_viewer/src/ui/device_settings_panel.rs index 19cd0b1e953b..a1f23aa387b4 100644 --- a/crates/re_viewer/src/ui/device_settings_panel.rs +++ b/crates/re_viewer/src/ui/device_settings_panel.rs @@ -152,20 +152,35 @@ impl DeviceSettingsPanel { .selected_device .supported_left_mono_resolutions { - ui.selectable_value( - &mut device_config.left_camera.resolution, - *res, - format!("{res}"), - ); + if ui + .selectable_value( + &mut device_config + .left_camera + .resolution, + *res, + format!("{res}"), + ) + .changed() + { + device_config.right_camera.resolution = + *res; + } } }, ); - ctx.re_ui.labeled_dragvalue( - ui, - "FPS", - &mut device_config.left_camera.fps, - 0..=120, - ); + if ctx + .re_ui + .labeled_dragvalue( + ui, + "FPS", + &mut device_config.left_camera.fps, + 0..=120, + ) + .changed() + { + device_config.right_camera.fps = + device_config.left_camera.fps; + } ctx.re_ui.labeled_checkbox( ui, "Stream", @@ -191,20 +206,34 @@ impl DeviceSettingsPanel { .selected_device .supported_right_mono_resolutions { - ui.selectable_value( - &mut device_config.right_camera.resolution, - *res, - format!("{res}"), - ); + if ui + .selectable_value( + &mut device_config + .right_camera + .resolution, + *res, + format!("{res}"), + ) + .changed() + { + device_config.left_camera.resolution = *res; + } } }, ); - ctx.re_ui.labeled_dragvalue( - ui, - "FPS", - &mut device_config.right_camera.fps, - 0..=120, - ); + if ctx + .re_ui + .labeled_dragvalue( + ui, + "FPS", + &mut device_config.right_camera.fps, + 0..=120, + ) + .changed() + { + device_config.left_camera.fps = + device_config.right_camera.fps; + } ctx.re_ui.labeled_checkbox( ui, "Stream",