- // Yes, we do, so reset its index as the next item added shouldn't
- // count as part of the same radio group anyhow.
- m_startRadioGroup = -1;
+ // Yes, we do, update the next radio group item, if any, to be the
+ // start one now.
+ const int endGroup = item->GetRadioGroupEnd();
+
+ wxMenuItemList::compatibility_iterator
+ node = GetMenuItems().Item(endGroup);
+ wxASSERT_MSG( node, wxS("Should have valid radio group end") );
+
+ while ( node->GetData() != item )
+ {
+ const wxMenuItemList::compatibility_iterator
+ prevNode = node->GetPrevious();
+ wxMenuItem* const prevItem = prevNode->GetData();
+ if ( prevItem == item )
+ {
+ prevItem->SetAsRadioGroupStart();
+ prevItem->SetRadioGroupEnd(endGroup);
+ break;
+ }
+
+ node = prevNode;
+ }