diff --git a/src/ui/panes/valve_control/ui/valve_control_window.rs b/src/ui/panes/valve_control/ui/valve_control_window.rs index 470b6a2346704cb036486134ea06950555063e92..c1c71f0690a7e0a1207e1701ba44ae580a4deafa 100644 --- a/src/ui/panes/valve_control/ui/valve_control_window.rs +++ b/src/ui/panes/valve_control/ui/valve_control_window.rs @@ -92,9 +92,15 @@ impl ValveControlView { .text_size(12.) } - fn add_parameter_btn(ui: &mut Ui, key: Key) -> Response { + fn add_parameter_btn(ui: &mut Ui, key: Key, action_override: bool) -> Response { ui.scope_builder(UiBuilder::new().id_salt(key).sense(Sense::click()), |ui| { - let visuals = *ui.style().interact(&ui.response()); + let mut visuals = *ui.style().interact(&ui.response()); + + // override the visuals if the button is pressed + if action_override { + visuals = ui.visuals().widgets.active; + } + let shortcut_card = shortcut_ui(ui, &key, &ui.response()); Frame::canvas(ui.style()) @@ -127,8 +133,12 @@ impl ValveControlView { ui: &mut Ui, ) -> Response { let res = match state { - ValveViewState::Open => Some(add_parameter_btn(ui, FOCUS_APERTURE_KEY)), - ValveViewState::ApertureFocused => Some(add_parameter_btn(ui, SET_PAR_KEY)), + ValveViewState::Open => Some(add_parameter_btn(ui, FOCUS_APERTURE_KEY, false)), + ValveViewState::ApertureFocused => Some(add_parameter_btn( + ui, + SET_PAR_KEY, + action.is_some_and(|a| a == WindowAction::SetAperture), + )), ValveViewState::TimingFocused | ValveViewState::Closed => None, }; if let Some(res) = &res { @@ -147,8 +157,12 @@ impl ValveControlView { ui: &mut Ui, ) -> Response { let res = match state { - ValveViewState::Open => Some(add_parameter_btn(ui, FOCUS_TIMING_KEY)), - ValveViewState::TimingFocused => Some(add_parameter_btn(ui, SET_PAR_KEY)), + ValveViewState::Open => Some(add_parameter_btn(ui, FOCUS_TIMING_KEY, false)), + ValveViewState::TimingFocused => Some(add_parameter_btn( + ui, + SET_PAR_KEY, + action.is_some_and(|a| a == WindowAction::SetTiming), + )), ValveViewState::ApertureFocused | ValveViewState::Closed => None, }; if let Some(res) = &res { @@ -166,7 +180,13 @@ impl ValveControlView { .scope_builder( UiBuilder::new().id_salt(WIGGLE_KEY).sense(Sense::click()), |ui| { - let visuals = *ui.style().interact(&ui.response()); + let mut visuals = *ui.style().interact(&ui.response()); + + // override the visuals if the button is pressed + if let Some(WindowAction::Wiggle) = action.as_ref() { + visuals = ui.visuals().widgets.active; + } + let shortcut_card = shortcut_ui(ui, &WIGGLE_KEY, &ui.response()); Frame::canvas(ui.style()) @@ -588,7 +608,7 @@ enum ValveViewState { ApertureFocused, } -#[derive(Debug, Clone, Copy)] +#[derive(Debug, Clone, Copy, PartialEq, Eq)] enum WindowAction { // window actions CloseWindow,