From 1af2b2bef65b133c9f56cb64007adc0aebad59aa Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 15 Jan 2021 11:31:24 +0100 Subject: Different fix for assertion failures when right-aligning in horizontal wxBoxSizers. --- src/wx/wx_util.cc | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/wx/wx_util.cc b/src/wx/wx_util.cc index 8b6d0961b..2bd64cc30 100644 --- a/src/wx/wx_util.cc +++ b/src/wx/wx_util.cc @@ -38,6 +38,7 @@ DCPOMATIC_DISABLE_WARNINGS #include #include #include +#include DCPOMATIC_ENABLE_WARNINGS #include @@ -64,6 +65,19 @@ create_label (wxWindow* p, wxString t, bool) return new StaticText (p, t); } + +static +setup_osx_flags (wxSizer* s, bool left, int& flags) +{ + if (left) { + auto box = dynamic_cast(s); + if (!box || box->GetOrientation() != wxHORIZONTAL) { + flags |= wxALIGN_RIGHT; + } + } +} + + /** Add a wxStaticText to a wxSizer, aligning it at vertical centre. * @param s Sizer to add to. * @param p Parent window for the wxStaticText. @@ -76,9 +90,7 @@ wxStaticText * add_label_to_sizer (wxSizer* s, wxWindow* p, wxString t, bool left, int prop, int flags) { #ifdef __WXOSX__ - if (left) { - flags |= wxALIGN_RIGHT; - } + setup_osx_flags (s, left, flags); #endif auto m = create_label (p, t, left); s->Add (m, prop, flags, 6); @@ -93,9 +105,7 @@ add_label_to_sizer (wxSizer* s, wxStaticText* t, bool, int prop, int flags) #endif { #ifdef __WXOSX__ - if (left) { - flags |= wxALIGN_RIGHT; - } + setup_osx_flags (s, left, flags); #endif s->Add (t, prop, flags, 6); return t; @@ -106,9 +116,7 @@ add_label_to_sizer (wxGridBagSizer* s, wxWindow* p, wxString t, bool left, wxGBP { int flags = wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT; #ifdef __WXOSX__ - if (left) { - flags |= wxALIGN_RIGHT; - } + setup_osx_flags (s, left, flags); #endif auto m = create_label (p, t, left); s->Add (m, pos, span, flags); @@ -124,9 +132,7 @@ add_label_to_sizer (wxGridBagSizer* s, wxStaticText* t, bool, wxGBPosition pos, { int flags = wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT; #ifdef __WXOSX__ - if (left) { - flags |= wxALIGN_RIGHT; - } + setup_osx_flags (s, left, flags); #endif s->Add (t, pos, span, flags); return t; -- cgit v1.2.3