From 1644d49ae1c413a543bbf8b5a2b5630603b05859 Mon Sep 17 00:00:00 2001 From: yw4z Date: Sun, 31 May 2026 15:16:29 +0300 Subject: [PATCH] Fix non functional OBJ import dialog on linux (#13914) --- src/slic3r/GUI/ObjColorDialog.cpp | 38 +++++++++++++++++++------------ 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/src/slic3r/GUI/ObjColorDialog.cpp b/src/slic3r/GUI/ObjColorDialog.cpp index fc5c734148..a8ef3f046f 100644 --- a/src/slic3r/GUI/ObjColorDialog.cpp +++ b/src/slic3r/GUI/ObjColorDialog.cpp @@ -229,7 +229,7 @@ ObjColorPanel::ObjColorPanel(wxWindow *parent, Slic3r::ObjDialogInOut &in_out, c specify_color_cluster_title->SetFont(Label::Head_14); specify_cluster_sizer->Add(specify_color_cluster_title, 0, wxALIGN_CENTER | wxALL, FromDIP(5)); - m_color_cluster_num_by_user_ebox = new SpinInput(m_page_simple, "", wxEmptyString, wxDefaultPosition, wxSize(FromDIP(45), -1), wxTE_PROCESS_ENTER); + m_color_cluster_num_by_user_ebox = new SpinInput(m_page_simple, "", wxEmptyString, wxDefaultPosition, wxSize(FromDIP(60), -1), wxTE_PROCESS_ENTER); m_color_cluster_num_by_user_ebox->SetValue(std::to_string(m_color_cluster_num_by_algo).c_str()); m_color_cluster_num_by_user_ebox->SetToolTip(_L("Enter or click the adjustment button to modify number again")); {//event @@ -284,11 +284,8 @@ ObjColorPanel::ObjColorPanel(wxWindow *parent, Slic3r::ObjDialogInOut &in_out, c } } - wxStaticText *combox_title = new wxStaticText(m_page_simple, wxID_ANY, _L("view"), wxPoint(FromDIP(216), FromDIP(312))); - // combox_title->SetTransparent(true); - combox_title->SetBackgroundColour(wxColour(240, 240, 240, 0)); - combox_title->SetForegroundColour(wxColour(107, 107, 107, 100)); - auto cur_combox = new ComboBox(m_page_simple, wxID_ANY, wxEmptyString, wxPoint(FromDIP(250), FromDIP(310)), wxSize(FromDIP(100), -1), 0, NULL, wxCB_READONLY); + wxStaticText *combox_title = new wxStaticText(m_page_simple, wxID_ANY, _L("view")); + auto cur_combox = new ComboBox(m_page_simple, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(FromDIP(100), -1), 0, NULL, wxCB_READONLY); wxArrayString choices = get_all_camera_view_type(); for (size_t i = 0; i < choices.size(); i++) { cur_combox->Append(choices[i]); } cur_combox->SetSelection(0); @@ -310,11 +307,18 @@ ObjColorPanel::ObjColorPanel(wxWindow *parent, Slic3r::ObjDialogInOut &in_out, c wxBORDER_NONE | wxBU_AUTODRAW); m_image_button->SetBitmap(image); m_image_button->SetCanFocus(false); + #ifdef __WXGTK__ + RemoveButtonBorder(m_image_button); + #endif icon_sizer->Add(m_image_button, 0, wxEXPAND | wxALL, FromDIP(0)); // wxEXPAND | wxALL cur_combox->Raise();//for mac m_sizer_simple->Add(icon_sizer, FromDIP(0), wxALIGN_CENTER | wxALL, FromDIP(0)); + auto view_sizer = new wxBoxSizer(wxHORIZONTAL); + view_sizer->Add(combox_title, 0, wxALIGN_CENTER | wxALL, FromDIP(5)); + view_sizer->Add(cur_combox , 0, wxALIGN_CENTER | wxALL, FromDIP(5)); + m_sizer_simple->Add(view_sizer, 0, wxALIGN_RIGHT | wxRIGHT, FromDIP(20)); } wxBoxSizer * current_filaments_title_sizer = new wxBoxSizer(wxHORIZONTAL); wxStaticText *current_filaments_title = new wxStaticText(m_page_simple, wxID_ANY, _L("Current filament colors")); @@ -357,7 +361,7 @@ ObjColorPanel::ObjColorPanel(wxWindow *parent, Slic3r::ObjDialogInOut &in_out, c m_scrolledWindow->ShowScrollbars(wxScrollbarVisibility::wxSHOW_SB_NEVER, wxScrollbarVisibility::wxSHOW_SB_DEFAULT); draw_new_table(); - m_sizer_simple->Add(m_scrolledWindow, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(5)); + m_sizer_simple->Add(m_scrolledWindow, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(15)); //buttons wxBoxSizer *quick_set_sizer = new wxBoxSizer(wxHORIZONTAL); quick_set_sizer->AddSpacer(FromDIP(25)); @@ -522,9 +526,12 @@ wxBoxSizer *ObjColorPanel::create_reset_btn_sizer(wxWindow *parent) wxBoxSizer *ObjColorPanel::create_extruder_icon_and_rgba_sizer(wxWindow *parent, int id, const wxColour &color) { auto icon_sizer = new wxBoxSizer(wxHORIZONTAL); - wxButton *icon = new wxButton(parent, wxID_ANY, {}, wxDefaultPosition, ICON_SIZE, wxBORDER_NONE | wxBU_AUTODRAW); - icon->SetBitmap(*get_extruder_color_icon(color.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(), std::to_string(id + 1), FromDIP(16), FromDIP(16))); + wxButton *icon = new wxButton(parent, wxID_ANY, {}, wxDefaultPosition, FromDIP(wxSize(20,20)), wxBORDER_NONE | wxBU_AUTODRAW); + icon->SetBitmap(*get_extruder_color_icon(color.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(), std::to_string(id + 1), FromDIP(20), FromDIP(20))); icon->SetCanFocus(false); + #ifdef __WXGTK__ + RemoveButtonBorder(icon); + #endif m_extruder_icon_list.emplace_back(icon); icon_sizer->Add(icon, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, 0); // wxALIGN_CENTER_VERTICAL | wxTOP | wxBOTTOM //icon_sizer->AddSpacer(FromDIP(5)); @@ -553,10 +560,10 @@ ComboBox *ObjColorPanel::CreateEditorCtrl(wxWindow *parent, int id) // wxRect la if (icons.empty()) return nullptr; - ::ComboBox *c_editor = new ::ComboBox(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(FromDIP(m_combox_width), -1), 0, nullptr, + ::ComboBox *c_editor = new ::ComboBox(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY | CB_NO_DROP_ICON | CB_NO_TEXT); - c_editor->SetMinSize(wxSize(FromDIP(m_combox_width), -1)); - c_editor->SetMaxSize(wxSize(FromDIP(m_combox_width), -1)); + c_editor->SetMinSize(wxSize(icon_width + FromDIP(8), -1)); // match size with bitmap + c_editor->SetMaxSize(wxSize(icon_width + FromDIP(8), -1)); // match size with bitmap c_editor->GetDropDown().SetUseContentWidth(false); for (size_t i = 0; i < icons.size(); i++) { c_editor->Append(wxString::Format("%d", i), *icons[i]); @@ -910,9 +917,12 @@ wxBoxSizer *ObjColorPanel::create_color_icon_map_rgba_sizer(wxWindow *parent, in { auto icon_sizer = new wxBoxSizer(wxHORIZONTAL); //icon_sizer->AddSpacer(FromDIP(40)); - wxButton *icon = new wxButton(parent, wxID_ANY, {}, wxDefaultPosition, ICON_SIZE, wxBORDER_NONE | wxBU_AUTODRAW); - icon->SetBitmap(*get_extruder_color_icon(color.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(), "", FromDIP(16), FromDIP(16))); + wxButton *icon = new wxButton(parent, wxID_ANY, {}, wxDefaultPosition, FromDIP(wxSize(20,20)), wxBORDER_NONE | wxBU_AUTODRAW); + icon->SetBitmap(*get_extruder_color_icon(color.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(), "", FromDIP(20), FromDIP(20))); icon->SetCanFocus(false); +#ifdef __WXGTK__ + RemoveButtonBorder(icon); +#endif m_color_cluster_icon_list.emplace_back(icon); icon_sizer->Add(icon, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, 0); // wxALIGN_CENTER_VERTICAL | wxTOP | wxBOTTOM icon_sizer->AddSpacer(FromDIP(10));