+ wxCHECK_MSG( pItem, NULL, _T("NULL item in wxMenu::DoAppend") );
+
+ bool bCheck = false;
+
+ if (pItem->GetKind() == wxITEM_RADIO)
+ {
+ int nCount = GetMenuItemCount();
+
+ if (m_nStartRadioGroup == -1)
+ {
+ //
+ // Start a new radio group
+ //
+ m_nStartRadioGroup = nCount;
+
+ //
+ // For now it has just one element
+ //
+ pItem->SetAsRadioGroupStart();
+ pItem->SetRadioGroupEnd(m_nStartRadioGroup);
+
+ //
+ // Ensure that we have a checked item in the radio group
+ //
+ bCheck = true;
+ }
+ else // extend the current radio group
+ {
+ //
+ // We need to update its end item
+ //
+ pItem->SetRadioGroupStart(m_nStartRadioGroup);
+
+ wxMenuItemList::compatibility_iterator node = GetMenuItems().Item(m_nStartRadioGroup);
+
+ if (node)
+ {
+ node->GetData()->SetRadioGroupEnd(nCount);
+ }
+ else
+ {
+ wxFAIL_MSG( _T("where is the radio group start item?") );
+ }
+ }
+ }
+ else // not a radio item
+ {
+ EndRadioGroup();
+ }
+
+ if (!wxMenuBase::DoAppend(pItem) || !DoInsertOrAppend(pItem))
+ {
+ return NULL;
+ }
+ if (bCheck)
+ {
+ //
+ // Check the item initially
+ //
+ pItem->Check(true);
+ }
+ return pItem;
+} // end of wxMenu::DoAppend