FIX: Show RGB for custom color and allow staying in official picker dialog

- Display RGB values when a custom color is selected
- Prevent official color picker dialog from closing when custom color dialog is canceled
- Ensure multi-color materials are correctly displayed when importing new 3MF files

jira: STUDIO-12938, STUDIO-12937, STUDIO-12933, STUDIO-13110

Change-Id: Iab410585bf8cc5e9e81c6f0da23fe4ddba561785
(cherry picked from commit 2c20d591b998b02b0b66ac81b048a28fa26bd409)
This commit is contained in:
fei2.fang
2025-07-01 16:58:41 +08:00
committed by Noisyfox
parent 0bbd563a79
commit ea826815af
6 changed files with 82 additions and 14 deletions

View File

@@ -1421,13 +1421,11 @@ FilamentColor PlaterPresetComboBox::get_cur_color_info()
void PlaterPresetComboBox::show_default_color_picker()
{
wxColourDialog dialog(this, &m_clrData);
dialog.SetTitle(_L("Please choose the filament colour"));
if (dialog.ShowModal() == wxID_OK)
{
m_clrData = dialog.GetColourData();
std::vector<std::string> color = {m_clrData.GetColour().GetAsString(wxC2S_HTML_SYNTAX).ToStdString()};
this->sync_colour_config(color, false);
wxColourData data = show_sys_picker_dialog(this, m_clrData);
if(m_clrData.GetColour() != data.GetColour()) {
std::vector<std::string> color = {data.GetColour().GetAsString(wxC2S_HTML_SYNTAX).ToStdString()};
m_clrData.SetColour(data.GetColour());
sync_colour_config(color, false);
}
}