diff --git a/src/slic3r/GUI/PublishSettingsDialog.cpp b/src/slic3r/GUI/PublishSettingsDialog.cpp index 16b0b6201c..e63cec7615 100644 --- a/src/slic3r/GUI/PublishSettingsDialog.cpp +++ b/src/slic3r/GUI/PublishSettingsDialog.cpp @@ -1037,9 +1037,6 @@ size_t PublishSettingsDialog::section_group_for(Section kind) section.mixed_tabs = new TabCtrl(section.page, wxID_ANY, wxDefaultPosition, wxDefaultSize, s_tab_style); section.mixed_tabs->SetFont(Label::Body_14); section.mixed_tabs->SetBackgroundColour(GetBackgroundColour()); - // The mixed tabs carry full swatch compositions: give them a touch more room than the - // filament tabs so neighbouring compositions stay distinguishable (must precede AppendItem). - section.mixed_tabs->SetItemSpace(FromDIP(3)); page_sizer->Add(section.mixed_tabs, 0, wxEXPAND | wxTOP, FromDIP(2)); section.mixed_tabs->Hide(); } diff --git a/src/slic3r/GUI/Widgets/Button.cpp b/src/slic3r/GUI/Widgets/Button.cpp index 22b1c34cab..5f03636f18 100644 --- a/src/slic3r/GUI/Widgets/Button.cpp +++ b/src/slic3r/GUI/Widgets/Button.cpp @@ -311,8 +311,11 @@ void Button::render(wxDC& dc) } } auto szContent = textSize; + // Whether the measured content reserved the text/icon gap. macOS measures an empty label + // as 0-high, so the gap is skipped there; the dot must not advance past it in that case. + const bool gap_reserved = szContent.y > 0; if (icon.bmp().IsOk()) { - if (szContent.y > 0) { + if (gap_reserved) { //BBS norrow size between text and icon if (vertical) szContent.y += spacing; @@ -357,10 +360,10 @@ void Button::render(wxDC& dc) dc.DrawBitmap(icon.bmp(), pt); //BBS norrow size between text and icon if (vertical) { - pt.y += szIcon.y + spacing; + pt.y += szIcon.y + (gap_reserved ? spacing : 0); pt.x = rcContent.x; } else { - pt.x += szIcon.x + spacing; + pt.x += szIcon.x + (gap_reserved ? spacing : 0); pt.y = rcContent.y; } } diff --git a/src/slic3r/GUI/Widgets/TabCtrl.cpp b/src/slic3r/GUI/Widgets/TabCtrl.cpp index 34de109b8f..ef23e2c5e4 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.cpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.cpp @@ -99,7 +99,7 @@ int TabCtrl::AppendItem(const wxString& item, int image, int selImage, void* cli btns.push_back(btn); if (btns.size() > 1) sizer->GetItem(sizer->GetItemCount() - 1)->SetMinSize({0, 0}); - sizer->Add(btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, item_space); + sizer->Add(btn, 0, wxALIGN_CENTER_VERTICAL); sizer->AddStretchSpacer(1); relayout(); return btns.size() - 1; @@ -256,12 +256,12 @@ void TabCtrl::relayout() int item = sel + 1; int first = 0; for (int i = 0; i < item; ++i) - offset += btns[i]->GetMinSize().x + item_space * 2; + offset += btns[i]->GetMinSize().x; if (item < btns.size()) - offset += btns[item]->GetMinSize().x + item_space * 2; + offset += btns[item]->GetMinSize().x; int width = GetSize().x; for (int i = 0; i < btns.size(); ++i) { - auto size = btns[i]->GetMinSize().x + item_space * 2; + auto size = btns[i]->GetMinSize().x; if (i < sel && offset > width) { sizer->Show(i * 2 + 1, false); sizer->Show(i * 2 + 2, false); @@ -284,26 +284,17 @@ void TabCtrl::relayout() if (item >= btns.size()) --item; // Keep spacing 2 ~ 10 TAB_BUTTON_SPACE - int b = GetSize().x - offset - 10 - (item + 1 - first) * item_space * 8; + int b = GetSize().x - offset - 10 - (item + 1 - first) * 16; sizer->GetItem(item * 2 + 2)->SetMinSize({b > 0 ? b : 0, 0}); Layout(); } -void TabCtrl::SetItemSpace(int space) -{ - if (space < 0 || space == item_space) - return; - item_space = space; - relayout(); - Refresh(); -} - int TabCtrl::GetFullSize() const { - // Mirrors relayout(): a 10px leading spacer plus every button's min width and spacing. + // Mirrors relayout(): a 10px leading spacer plus every button's min width. int width = 10; for (const Button* btn : btns) - width += btn->GetMinSize().x + item_space * 2; + width += btn->GetMinSize().x; return width; } diff --git a/src/slic3r/GUI/Widgets/TabCtrl.hpp b/src/slic3r/GUI/Widgets/TabCtrl.hpp index 493c4edee5..d89da145af 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.hpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.hpp @@ -14,7 +14,6 @@ class TabCtrl : public StaticBox int sel = -1; wxFont bold; - int item_space = 2; // space around each button, both sides (SetItemSpace) public: TabCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0); @@ -64,10 +63,6 @@ public: int GetNextVisible(int item) const; bool IsVisible(unsigned int item) const; - // Extra space around each tab button (in px on both sides). Defaults to the control-wide - // standard; call before appending items so every button picks it up. - void SetItemSpace(int space); - int GetFullSize() const; private: