From 88521a06d12cd4ebbcb8e98d8c929e9815aa71de Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Fri, 14 Feb 2025 21:35:29 +0800 Subject: [PATCH] FIX: StaticGroup constriant layout badge on macOS Change-Id: Ia93c91b990ec3f5fef3eae57d48ca71b4a0841e6 Jira: STUDIO-10383 --- src/slic3r/GUI/Widgets/StaticGroup.cpp | 23 +++-------------------- src/slic3r/GUI/Widgets/StaticGroup.hpp | 4 ---- src/slic3r/Utils/MacDarkMode.hpp | 1 + src/slic3r/Utils/MacDarkMode.mm | 9 +++++++++ 4 files changed, 13 insertions(+), 24 deletions(-) diff --git a/src/slic3r/GUI/Widgets/StaticGroup.cpp b/src/slic3r/GUI/Widgets/StaticGroup.cpp index 24aa2beaa..f2c208cda 100644 --- a/src/slic3r/GUI/Widgets/StaticGroup.cpp +++ b/src/slic3r/GUI/Widgets/StaticGroup.cpp @@ -10,6 +10,8 @@ StaticGroup::StaticGroup(wxWindow *parent, wxWindowID id, const wxString &label) #endif } +void StaticGroup_layoutBadge(void * group, void * badge); + void StaticGroup::ShowBadge(bool show) { #ifdef __WXMSW__ @@ -24,7 +26,7 @@ void StaticGroup::ShowBadge(bool show) badge = new ScalableButton(this, wxID_ANY, "badge", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 18); badge->SetSize(badge->GetBestSize()); badge->SetBackgroundColour("#F7F7F7"); - LayoutBadge(); + StaticGroup_layoutBadge(GetHandle(), badge->GetHandle()); } if (badge && badge->IsShown() != show) badge->Show(show); @@ -70,22 +72,3 @@ void StaticGroup::PaintForeground(wxDC &dc, const struct tagRECT &rc) } #endif - -#ifdef __WXOSX__ - -void StaticGroup::DoSetSize(int x, int y, int width, int height, int sizeFlags) -{ - auto size = GetSize(); - wxStaticBox::DoSetSize(x, y, width, height, sizeFlags); - if (badge && size != GetSize()) - LayoutBadge(); -} - -void StaticGroup::LayoutBadge() -{ - auto size = GetSize(); - auto size2 = size - badge->GetSize(); - badge->SetPosition({size2.x - 6, 0}); -} - -#endif diff --git a/src/slic3r/GUI/Widgets/StaticGroup.hpp b/src/slic3r/GUI/Widgets/StaticGroup.hpp index 928fe8bb3..807616e54 100644 --- a/src/slic3r/GUI/Widgets/StaticGroup.hpp +++ b/src/slic3r/GUI/Widgets/StaticGroup.hpp @@ -18,10 +18,6 @@ private: void OnPaint(wxPaintEvent &evt); void PaintForeground(wxDC &dc, const struct tagRECT &rc) override; #endif -#ifdef __WXOSX__ - void DoSetSize(int x, int y, int width, int height, int sizeFlags) override; - void LayoutBadge(); -#endif private: #ifdef __WXMSW__ diff --git a/src/slic3r/Utils/MacDarkMode.hpp b/src/slic3r/Utils/MacDarkMode.hpp index 9a450c1f3..435a164d1 100644 --- a/src/slic3r/Utils/MacDarkMode.hpp +++ b/src/slic3r/Utils/MacDarkMode.hpp @@ -16,6 +16,7 @@ void set_tag_when_enter_full_screen(bool isfullscreen); void set_title_colour_after_set_title(void * window); void initGestures(void * view, wxEvtHandler * handler); void openFolderForFile(wxString const & file); +void StaticGroup_layoutBadge(void * group, void * badge); #endif diff --git a/src/slic3r/Utils/MacDarkMode.mm b/src/slic3r/Utils/MacDarkMode.mm index 0dcce3a6a..36eedd526 100644 --- a/src/slic3r/Utils/MacDarkMode.mm +++ b/src/slic3r/Utils/MacDarkMode.mm @@ -416,3 +416,12 @@ void initGestures(void * view, wxEvtHandler * handler) } } + +void StaticGroup_layoutBadge(void * group, void * badge) +{ + NSView * vg = (NSView *)group; + NSView * vb = (NSView *)badge; + vb.translatesAutoresizingMaskIntoConstraints = NO; + [vg addConstraint: [NSLayoutConstraint constraintWithItem:vb attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:vg attribute:NSLayoutAttributeTop multiplier:1.0 constant:15]]; + [vg addConstraint: [NSLayoutConstraint constraintWithItem:vb attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:vg attribute:NSLayoutAttributeRight multiplier:1.0 constant:-1]]; +}