fix(properties): close color picker when a panel dropdown opens (#235)

The Properties panel color picker is a custom bool-driven dropdown, while
Layer/Linetype/Lineweight are combo_boxes. Combo_boxes close each other on
blur, but nothing closed the color picker — so opening the Layer dropdown
while the color picker was open left both showing and overlapping.

Give every panel combo_box an on_open handler that collapses the color
picker, so at most one panel dropdown is open at a time.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
Hakan SevenandClaude Opus 4.8 committed 2026-07-01 19:47:32 +03:00
1 parent 1614fd9ab2
commit d6e5b38847
3 files changed
+18

No files matched your search

+4
View File
@@ -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).
+7
View File
@@ -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;
+7
View File
@@ -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())