diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index c2a7a3d1cb..fd6678d18b 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -632,7 +632,7 @@ bool PresetComboBox::selection_is_changed_according_to_physical_printers() PlaterPresetComboBox::PlaterPresetComboBox(wxWindow *parent, Preset::Type preset_type) : PresetComboBox(parent, preset_type, wxSize(25 * wxGetApp().em_unit(), 30 * wxGetApp().em_unit() / 10)) { - GetDropDown().SetUseContentWidth(true); + GetDropDown().SetUseContentWidth(true,true); if (m_type == Preset::TYPE_FILAMENT) { diff --git a/src/slic3r/GUI/Widgets/DropDown.cpp b/src/slic3r/GUI/Widgets/DropDown.cpp index c5f47062fb..1996bd4e4b 100644 --- a/src/slic3r/GUI/Widgets/DropDown.cpp +++ b/src/slic3r/GUI/Widgets/DropDown.cpp @@ -141,11 +141,12 @@ void DropDown::SetSelectorBackgroundColor(StateColor const &color) paintNow(); } -void DropDown::SetUseContentWidth(bool use) +void DropDown::SetUseContentWidth(bool use, bool limit_max_content_width) { if (use_content_width == use) return; use_content_width = use; + this->limit_max_content_width = limit_max_content_width; need_sync = true; messureSize(); } @@ -350,6 +351,11 @@ void DropDown::messureSize() szContent.x = x; } rowSize = szContent; + if (limit_max_content_width) { + wxSize parent_size = GetParent()->GetSize(); + if (rowSize.x > parent_size.x * 2) + rowSize.x = 2 * parent_size.x; + } szContent.y *= std::min((size_t)15, texts.size()); szContent.y += texts.size() > 15 ? rowSize.y / 2 : 0; wxWindow::SetSize(szContent); diff --git a/src/slic3r/GUI/Widgets/DropDown.hpp b/src/slic3r/GUI/Widgets/DropDown.hpp index e2a6cb4930..4ff909c845 100644 --- a/src/slic3r/GUI/Widgets/DropDown.hpp +++ b/src/slic3r/GUI/Widgets/DropDown.hpp @@ -22,6 +22,7 @@ class DropDown : public PopupWindow double radius = 0; bool use_content_width = false; + bool limit_max_content_width = false; bool align_icon = false; bool text_off = false; @@ -74,7 +75,7 @@ public: void SetSelectorBackgroundColor(StateColor const &color); - void SetUseContentWidth(bool use); + void SetUseContentWidth(bool use, bool limit_max_content_width = false); void SetAlignIcon(bool align);