Ticket #10602: radio_aui.patch

File radio_aui.patch, 2.7 KB (added by jacmoe, 11 years ago)
  • auibar.cpp

     
    14621462
    14631463    if (tool)
    14641464    {
    1465         if (tool->kind != wxITEM_CHECK)
     1465        if ( (tool->kind != wxITEM_CHECK) && (tool->kind != wxITEM_RADIO) )
    14661466            return;
    14671467
    1468         if (state == true)
    1469             tool->state |= wxAUI_BUTTON_STATE_CHECKED;
    1470         else
    1471             tool->state &= ~wxAUI_BUTTON_STATE_CHECKED;
     1468                if(tool->kind == wxITEM_RADIO)
     1469                {
     1470                        int idx = GetToolIndex(tool_id);
     1471                        if (idx >= 0 && idx < (int)m_items.GetCount())
     1472                        {
     1473                                for (int i = idx, count = m_items.GetCount(); i < count; ++i)
     1474                                {
     1475                                        tool = FindToolByIndex(i);
     1476                                        if (tool->kind != wxITEM_RADIO)
     1477                                        break;
     1478                                        tool->state &= ~wxAUI_BUTTON_STATE_CHECKED;
     1479                                }
     1480                                for (int i = idx; i > 0; i--)
     1481                                {
     1482                                        tool = FindToolByIndex(i);
     1483                                        if (tool->kind != wxITEM_RADIO)
     1484                                        break;
     1485                                        tool->state &= ~wxAUI_BUTTON_STATE_CHECKED;
     1486                                }
     1487                        }
     1488                        tool = FindTool(tool_id);
     1489                        tool->state |= wxAUI_BUTTON_STATE_CHECKED;
     1490                }
     1491                else
     1492                {
     1493                        if (state == true)
     1494                                tool->state |= wxAUI_BUTTON_STATE_CHECKED;
     1495                        else
     1496                                tool->state &= ~wxAUI_BUTTON_STATE_CHECKED;
     1497                }
    14721498    }
    14731499}
    14741500
     
    14781504
    14791505    if (tool)
    14801506    {
    1481         if (tool->kind != wxITEM_CHECK)
     1507        if ( (tool->kind != wxITEM_CHECK) && (tool->kind != wxITEM_RADIO) )
    14821508            return false;
    14831509
    14841510        return (tool->state & wxAUI_BUTTON_STATE_CHECKED) ? true : false;
     
    17441770
    17451771            case wxITEM_CHECK:
    17461772            case wxITEM_NORMAL:
     1773            case wxITEM_RADIO:
    17471774            {
    17481775                wxSize size = m_art->GetToolSize(dc, this, item);
    17491776                sizer_item = sizer->Add(size.x + (m_tool_border_padding*2),
     
    22022229            // draw a toggle button
    22032230            m_art->DrawButton(dc, this, item, item_rect);
    22042231        }
     2232        else if (item.kind == wxITEM_RADIO)
     2233        {
     2234            // draw a toggle button
     2235            m_art->DrawButton(dc, this, item, item_rect);
     2236        }
    22052237        else if (item.kind == wxITEM_CONTROL)
    22062238        {
    22072239            // draw the control's label
     
    23712403        {
    23722404            UnsetToolTip();
    23732405
    2374             if (hit_item->kind == wxITEM_CHECK)
     2406            if ( (hit_item->kind == wxITEM_CHECK) || (hit_item->kind == wxITEM_RADIO) )
    23752407            {
    23762408                bool toggle = false;
    23772409
     
    23802412                else
    23812413                    toggle = true;
    23822414
    2383                 ToggleTool(m_action_item->id, toggle);
     2415                                ToggleTool(m_action_item->id, toggle);
    23842416
    23852417                wxCommandEvent e(wxEVT_COMMAND_MENU_SELECTED, m_action_item->id);
    23862418                e.SetEventObject(this);