Skip to content

Commit 55bb959

Browse files
committed
修复List删除列表项后,导致当前选择项计算错误的问题
1 parent bfa997c commit 55bb959

File tree

4 files changed

+19
-4474
lines changed

4 files changed

+19
-4474
lines changed

Demos/duidemo/Res/duidemo.zip

-3.8 MB
Binary file not shown.

DuiLib/Control/UIList.cpp

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)