@@ -172,6 +172,10 @@ namespace DuiLib {
172172 pListItem->SetIndex (i);
173173 }
174174 }
175+ int idx = m_aSelItems.Find ((LPVOID)m_iCurSel);
176+ if (idx != -1 ) {
177+ m_aSelItems.SetAt (idx, (LPVOID*)(m_iCurSel + 1 ));
178+ }
175179 if (m_iCurSel >= iIndex) m_iCurSel += 1 ;
176180 return true ;
177181 }
@@ -198,6 +202,12 @@ namespace DuiLib {
198202 if (iIndex == m_iCurSel && m_iCurSel >= 0 ) {
199203 int iSel = m_iCurSel;
200204 m_iCurSel = -1 ;
205+
206+ int idx = m_aSelItems.Find ((LPVOID)iSel);
207+ if (idx != -1 ) {
208+ m_aSelItems.Remove (idx);
209+ }
210+
201211 SelectItem (FindSelectable (iSel, false ));
202212 }
203213 else if (iIndex < m_iCurSel) m_iCurSel -= 1 ;
@@ -217,6 +227,12 @@ namespace DuiLib {
217227 if (iIndex == m_iCurSel && m_iCurSel >= 0 ) {
218228 int iSel = m_iCurSel;
219229 m_iCurSel = -1 ;
230+
231+ int idx = m_aSelItems.Find ((LPVOID)iSel);
232+ if (idx != -1 ) {
233+ m_aSelItems.Remove (idx);
234+ }
235+
220236 SelectItem (FindSelectable (iSel, false ));
221237 }
222238 else if (iIndex < m_iCurSel) m_iCurSel -= 1 ;
@@ -440,7 +456,9 @@ namespace DuiLib {
440456 if (iIndex < 0 ) return false ;
441457 // 已经选择
442458 int aIndex = m_aSelItems.Find ((LPVOID)iIndex);
443- if (aIndex != -1 ) return true ;
459+ if (aIndex != -1 ) {
460+ return true ;
461+ }
444462 // 选择当前列表项
445463 CControlUI* pControl = GetItemAt (iIndex);
446464 if (pControl == NULL ) return false ;
0 commit comments