diff --git a/src/common/sizer.cpp b/src/common/sizer.cpp index e1fbee369a..a0b1768ea1 100644 --- a/src/common/sizer.cpp +++ b/src/common/sizer.cpp @@ -883,6 +883,9 @@ bool wxSizer::Replace( size_t old, wxSizerItem *newitem ) delete item; + if (wxWindow* const w = newitem->GetWindow()) + w->SetContainingSizer(this); + return true; } diff --git a/tests/sizers/boxsizer.cpp b/tests/sizers/boxsizer.cpp index 3bf4d6aba9..69d271b724 100644 --- a/tests/sizers/boxsizer.cpp +++ b/tests/sizers/boxsizer.cpp @@ -444,3 +444,9 @@ TEST_CASE_METHOD(BoxSizerTestCase, "BoxSizer::IncompatibleFlags", "[sizer]") #undef ASSERT_SIZER_INCOMPATIBLE_FLAGS #undef ASSERT_SIZER_INVALID_FLAGS } + +TEST_CASE_METHOD(BoxSizerTestCase, "BoxSizer::Replace", "[sizer]") +{ + m_sizer->AddSpacer(1); + m_sizer->Replace(0, new wxSizerItem(new wxWindow(m_win, wxID_ANY))); +}