Ticket #9591: resetbroken.patch

File resetbroken.patch, 2.4 KB (added by malcompl, 10 years ago)
  • samples/treectrl/treetest.cpp

     
    680680
    681681    m_treeCtrl->SetAlternateStates(!alternateStates);
    682682    m_treeCtrl->CreateStateImageList();
     683
     684    // normal states < alternate states
     685    // so we must reset broken states
     686    if ( alternateStates )
     687        m_treeCtrl->ResetBrokenStateImages();
    683688}
    684689
    685690void MyFrame::OnToggleButtons(wxCommandEvent& WXUNUSED(event))
     
    11521157    }
    11531158}
    11541159
     1160void MyTreeCtrl::DoResetBrokenStateImages(const wxTreeItemId& idParent,
     1161                                          wxTreeItemIdValue cookie, int state)
     1162{
     1163    wxTreeItemId id;
     1164
     1165    if ( !cookie )
     1166        id = GetFirstChild(idParent, cookie);
     1167    else
     1168        id = GetNextChild(idParent, cookie);
     1169
     1170    if ( !id.IsOk() )
     1171        return;
     1172
     1173    int curState = GetItemState(id);
     1174    if ( curState != wxTREE_ITEMSTATE_NONE && curState > state )
     1175        SetItemState(id, state);
     1176
     1177    if (ItemHasChildren(id))
     1178        DoResetBrokenStateImages(id, 0, state);
     1179
     1180    DoResetBrokenStateImages(idParent, cookie, state);
     1181}
     1182
    11551183void MyTreeCtrl::LogEvent(const wxChar *name, const wxTreeEvent& event)
    11561184{
    11571185    wxTreeItemId item = event.GetItem();
  • samples/treectrl/treetest.h

     
    123123    void SetAlternateStates(bool show) { m_alternateStates = show; }
    124124    bool AlternateStates() const { return m_alternateStates; }
    125125
     126    void ResetBrokenStateImages()
     127    {
     128        const size_t count = GetStateImageList()->GetImageCount();
     129        int state = count > 0 ? count - 1 : wxTREE_ITEMSTATE_NONE;
     130        DoResetBrokenStateImages(GetRootItem(), 0, state);
     131    }
     132
    126133protected:
    127134    virtual int OnCompareItems(const wxTreeItemId& i1, const wxTreeItemId& i2);
    128135
     
    139146                             size_t depth,
    140147                             size_t folder);
    141148
     149    void DoResetBrokenStateImages(const wxTreeItemId& idParent,
     150                                  wxTreeItemIdValue cookie, int state);
     151
    142152    void LogEvent(const wxChar *name, const wxTreeEvent& event);
    143153
    144154    int          m_imageSize;               // current size of images