From 0c2b643b0ba34bb6ebbf0435fb884bcdf0532075 Mon Sep 17 00:00:00 2001 From: Tommaso Bianchi Date: Sat, 1 Aug 2026 09:00:23 +0200 Subject: [PATCH] Design: the card says which tool it is, and "Dress-up" stops being a word we use Mirror of snaporca 3677937964 (DesignPanel.cpp applied as a patch; parity 30, shared files byte-identical). The card header read "Fillet 1" over a chamfer because the offer's Chamfer address opened the tool before setting the type, and open_tool() titles the card from that combo. Choose first, then open. "Dress-up" removed from the offer row (-> "Fillet / chamfer"), the card field (-> "Type", it was a label reading Dress-up whose value said Chamfer) and the toolbar tooltip. Verified on the rig: header "Chamfer 1", field "Type: Chamfer", row "Fillet / chamfer". Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01LyRwbuq6fjn3VV9U9UvhBM --- docs/ux/tool_atlas.json | 4 ++-- src/slic3r/GUI/DesignOffer.hpp | 2 +- src/slic3r/GUI/DesignPanel.cpp | 11 +++++++---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/docs/ux/tool_atlas.json b/docs/ux/tool_atlas.json index c52f45b04e..65a881bfa9 100644 --- a/docs/ux/tool_atlas.json +++ b/docs/ux/tool_atlas.json @@ -37,8 +37,8 @@ "id": "dressup", "pos": "SE", "angle": 45, - "label": "Dress-up", - "why": "finishes faces and edges without changing the shape's intent" + "label": "Fillet / chamfer", + "why": "finishes faces and edges without changing the shape's intent; named for what it does, not for the trade word" }, { "id": "repeat", diff --git a/src/slic3r/GUI/DesignOffer.hpp b/src/slic3r/GUI/DesignOffer.hpp index 67199b83b9..8619ebbb1f 100644 --- a/src/slic3r/GUI/DesignOffer.hpp +++ b/src/slic3r/GUI/DesignOffer.hpp @@ -70,7 +70,7 @@ static const char* const kOfferRowNames[] = { "Create", "Add material", "Remove", - "Dress-up", + "Fillet / chamfer", "Repeat", "Transform", "Reference", diff --git a/src/slic3r/GUI/DesignPanel.cpp b/src/slic3r/GUI/DesignPanel.cpp index 36cfbe9f21..e188bb5c0f 100644 --- a/src/slic3r/GUI/DesignPanel.cpp +++ b/src/slic3r/GUI/DesignPanel.cpp @@ -902,7 +902,7 @@ DesignPanel::DesignPanel(wxWindow* parent) // Dress-up: finishing operations on the faces and edges of an existing solid — nothing // that moves a body (see the Placement drawer) and nothing that creates geometry. - feat_dropdown("dressup", "design_dressup", _L("Dress-up (fillet / chamfer / draft / shell / delete face)"), { + feat_dropdown("dressup", "design_dressup", _L("Fillet / chamfer / draft / shell / delete face"), { {"design_dressup", _L("Fillet / Chamfer"), _L("Round or bevel a picked edge"), [this] { open_tool(Tool::Dressup); }, SHIFT('F')}, {"design_draft", _L("Draft (taper a face)"), _L("Tilt a picked face by a draft angle"), @@ -1228,10 +1228,13 @@ DesignPanel::DesignPanel(wxWindow* parent) // SHIFT() is a constructor-local helper, so resolve the codes here rather than inside // the stored lambdas, which outlive it. const int k_dress = SHIFT('F'), k_bool = SHIFT('B'), k_pat = SHIFT('N'); + // Choose FIRST, then open: open_tool() titles the card from m_dressup_type, so setting + // it afterwards left the header reading "Fillet 1" over a chamfer. Nothing in the + // opener resets the combo, so this order is safe. m_verb_actions["btn:dress#0"] = [this, open_feature, k_dress] { - open_feature(k_dress); if (m_dressup_type) m_dressup_type->SetSelection(0); }; + if (m_dressup_type) m_dressup_type->SetSelection(0); open_feature(k_dress); }; m_verb_actions["btn:dress#1"] = [this, open_feature, k_dress] { - open_feature(k_dress); if (m_dressup_type) m_dressup_type->SetSelection(1); }; + if (m_dressup_type) m_dressup_type->SetSelection(1); open_feature(k_dress); }; for (int op = 0; op < 3; ++op) m_verb_actions["btn:bool#" + std::to_string(op)] = [this, open_feature, k_bool, op] { open_feature(k_bool); @@ -1598,7 +1601,7 @@ DesignPanel::DesignPanel(wxWindow* parent) m_dressup_type->Append(_L("Fillet")); m_dressup_type->Append(_L("Chamfer")); m_dressup_type->SetSelection(0); - dform->Add(new wxStaticText(m_cards, wxID_ANY, _L("Dress-up")), 0, wxALIGN_CENTER_VERTICAL); + dform->Add(new wxStaticText(m_cards, wxID_ANY, _L("Type")), 0, wxALIGN_CENTER_VERTICAL); dform->Add(m_dressup_type, 0, wxEXPAND); // The card can dress ONE picked edge or a whole face-group, and which one it will do is