diff --git a/src/app/mod.rs b/src/app/mod.rs index bb6af37b3..31fc33a10 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -1435,6 +1435,10 @@ pub enum Message { PropAttrCommit(String), /// Toggle the inline color picker dropdown open/closed. PropColorPickerToggle, + /// Collapse the inline color picker dropdown. Fired when another + /// properties-panel dropdown (a combo_box) opens, so at most one panel + /// dropdown is open at a time and they can't overlap. (#235) + PropColorPickerClose, /// Toggle the full ACI colour palette expansion. PropColorPaletteToggle, /// Enter the model-space editing mode inside the given viewport (MSPACE). diff --git a/src/app/update/mod.rs b/src/app/update/mod.rs index 137794324..6153a6d6f 100644 --- a/src/app/update/mod.rs +++ b/src/app/update/mod.rs @@ -2123,6 +2123,13 @@ impl OpenCADStudio { Task::none() } + Message::PropColorPickerClose => { + let i = self.active_tab; + self.tabs[i].properties.color_picker_open = false; + self.tabs[i].properties.color_palette_open = false; + Task::none() + } + Message::PropColorPaletteToggle => { self.tabs[self.active_tab].properties.color_palette_open = !self.tabs[self.active_tab].properties.color_palette_open; diff --git a/src/ui/properties.rs b/src/ui/properties.rs index c37efebf1..f553fa985 100644 --- a/src/ui/properties.rs +++ b/src/ui/properties.rs @@ -207,6 +207,7 @@ impl PropertiesPanel { .size(FONT_SZ) .padding([2, 6]) .input_style(combo_input_style) + .on_open(Message::PropColorPickerClose) .width(Length::Fill) .into() }; @@ -387,6 +388,7 @@ impl PropertiesPanel { right: 6.0, }) .input_style(combo_input_style) + .on_open(Message::PropColorPickerClose) .width(Length::Fill); prop_row_widget(label, combo.into()) @@ -489,6 +491,7 @@ impl PropertiesPanel { right: 6.0, }) .input_style(combo_input_style) + .on_open(Message::PropColorPickerClose) .width(Length::Fill); prop_row_widget(label, combo.into()) @@ -509,6 +512,7 @@ impl PropertiesPanel { right: 6.0, }) .input_style(combo_input_style) + .on_open(Message::PropColorPickerClose) .width(Length::Fill); prop_row_widget(label, combo.into()) @@ -542,6 +546,7 @@ impl PropertiesPanel { right: 6.0, }) .input_style(combo_input_style) + .on_open(Message::PropColorPickerClose) .width(Length::Fill); prop_row_widget(label, combo.into()) @@ -574,6 +579,7 @@ impl PropertiesPanel { right: 6.0, }) .input_style(combo_input_style) + .on_open(Message::PropColorPickerClose) .width(Length::Fill); prop_row_widget(label, combo.into()) @@ -655,6 +661,7 @@ impl PropertiesPanel { right: 6.0, }) .input_style(combo_input_style) + .on_open(Message::PropColorPickerClose) .width(Length::Fill); prop_row_widget(label, combo.into())