void IFWL_ComboList::ChangeSelected(int32_t iSel) { if (!m_pProperties->m_pDataProvider) return; IFWL_ListBoxDP* pData = static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); CFWL_ListItem* hItem = pData->GetItem(this, iSel); CFX_RectF rtInvalidate; rtInvalidate.Reset(); CFWL_ListItem* hOld = GetSelItem(0); int32_t iOld = pData->GetItemIndex(this, hOld); if (iOld == iSel) return; if (iOld > -1) { GetItemRect(iOld, rtInvalidate); SetSelItem(hOld, false); } if (hItem) { CFX_RectF rect; GetItemRect(iSel, rect); rtInvalidate.Union(rect); CFWL_ListItem* hSel = pData->GetItem(this, iSel); SetSelItem(hSel, true); } if (!rtInvalidate.IsEmpty()) Repaint(&rtInvalidate); }
void CFWL_ComboList::ChangeSelected(int32_t iSel) { CFWL_ListItem* hItem = GetItem(this, iSel); CFWL_ListItem* hOld = GetSelItem(0); int32_t iOld = GetItemIndex(this, hOld); if (iOld == iSel) return; CFX_RectF rtInvalidate; if (iOld > -1) { if (CFWL_ListItem* hOldItem = GetItem(this, iOld)) rtInvalidate = hOldItem->GetRect(); SetSelItem(hOld, false); } if (hItem) { if (CFWL_ListItem* hOldItem = GetItem(this, iSel)) rtInvalidate.Union(hOldItem->GetRect()); CFWL_ListItem* hSel = GetItem(this, iSel); SetSelItem(hSel, true); } if (!rtInvalidate.IsEmpty()) RepaintRect(rtInvalidate); }