diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-01-15 11:31:24 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-01-15 11:31:24 +0100 |
| commit | 1af2b2bef65b133c9f56cb64007adc0aebad59aa (patch) | |
| tree | 81aba83effb7b3eefcf61f21435a336762ef69d4 /src | |
| parent | 491c3fe2ac2de4d1015567b1556048a084bbc59f (diff) | |
Different fix for assertion failures when right-aligning in horizontal wxBoxSizers.
Diffstat (limited to 'src')
| -rw-r--r-- | src/wx/wx_util.cc | 30 |
1 files changed, 18 insertions, 12 deletions
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 <wx/splash.h> #include <wx/progdlg.h> #include <wx/filepicker.h> +#include <wx/sizer.h> DCPOMATIC_ENABLE_WARNINGS #include <boost/thread.hpp> @@ -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<wxBoxSizer>(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; |
