feat(ui): use the shared colour selector in properties, ribbon and layers

Replace the bespoke colour pickers with the shared color_selector / color_list
widget so colour selection is identical everywhere:
- left properties panel (selected entities' colour)
- ribbon Home-tab colour dropdown
- layer manager per-layer colour

Each routes its "More…" entry to the standalone Select Color window via a
ColorPickTarget (Properties / Ribbon / Layer). Extracted color_list as the
shared popup content; the colour selector button now fills its container.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
Hakan SevenandClaude Opus 4.8 committed 2026-06-14 14:22:24 +03:00
1 parent dfb2c6f9d7
commit f7734b698f
6 files changed
+91 -167

No files matched your search

+8 -7
View File
@@ -15,7 +15,7 @@ use iced::{Background, Border, Color, Element, Fill, Length, Padding, Theme};
use crate::app::Message;
use crate::modules::{CadModule, IconKind, RibbonItem};
use crate::plugin::all_ribbon_modules;
use crate::ui::properties::{color_picker_dropdown, lw_options, LinetypeItem};
use crate::ui::properties::{lw_options, LinetypeItem};
mod widgets;
use widgets::{StyleContext, *};
@@ -817,12 +817,13 @@ impl Ribbon {
}
fn prop_color_overlay(&self) -> Option<Element<'_, Message>> {
let picker = color_picker_dropdown(
self.prop_color_palette_open,
Message::RibbonColorPaletteToggle,
Some(Message::RibbonColorChanged(AcadColor::ByLayer)),
Some(Message::RibbonColorChanged(AcadColor::ByBlock)),
|aci| Message::RibbonColorChanged(AcadColor::Index(aci)),
let picker = crate::ui::color_select::color_list(
crate::ui::color_select::ColorExtras {
by_layer: true,
by_block: true,
},
Message::RibbonColorChanged,
Message::OpenColorWindow(crate::app::ColorPickTarget::Ribbon),
);
let panel = container(picker)