From 74ad534dd4a7044dc75d382a8826d478080aa77c Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 19 Feb 2008 02:43:29 +0000 Subject: [PATCH] implement wxRadioBox::Reparent(): it didn't reparent the radio buttons (patch 1891030) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@51905 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + include/wx/msw/radiobox.h | 2 ++ src/msw/radiobox.cpp | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index d266e1cd48..17c3d6495f 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -142,6 +142,7 @@ wxMSW: highlight, just as if the control were created in report mode initially. - Use correct index of the right-clicked column in wxListCtrl in the corresponding event even when the control is scrolled horizontally. +- Implement wxRadioBox::Reparent() correctly (Vince Harron). wxGTK: diff --git a/include/wx/msw/radiobox.h b/include/wx/msw/radiobox.h index 05bccdc050..9fe8ae5cb7 100644 --- a/include/wx/msw/radiobox.h +++ b/include/wx/msw/radiobox.h @@ -111,6 +111,8 @@ public: } #endif // wxUSE_HELP + virtual bool Reparent(wxWindowBase *newParent); + // we inherit a version always returning false from wxStaticBox, override // it to behave normally virtual bool AcceptsFocus() const { return wxControl::AcceptsFocus(); } diff --git a/src/msw/radiobox.cpp b/src/msw/radiobox.cpp index 4ca4bb2ae9..5f527f323b 100644 --- a/src/msw/radiobox.cpp +++ b/src/msw/radiobox.cpp @@ -443,6 +443,25 @@ void wxRadioBox::DoSetItemToolTip(unsigned int item, wxToolTip *tooltip) #endif // wxUSE_TOOLTIPS +bool wxRadioBox::Reparent(wxWindowBase *newParent) +{ + if ( !wxStaticBox::Reparent(newParent) ) + { + return false; + } + + HWND hwndParent = GetHwndOf(GetParent()); + for ( size_t item = 0; item < m_radioButtons->GetCount(); item++ ) + { + ::SetParent((*m_radioButtons)[item], hwndParent); + } +#ifdef __WXWINCE__ + // put static box under the buttons in the Z-order + SetWindowPos(GetHwnd(), HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); +#endif + return true; +} + WX_FORWARD_STD_METHODS_TO_SUBWINDOWS(wxRadioBox, wxStaticBox, m_radioButtons) // ----------------------------------------------------------------------------