FX_BOOL CFFL_ListBox::IsDataChanged(CPDFSDK_PageView* pPageView) { CPWL_ListBox* pListBox = (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE); if (!pListBox) return FALSE; if (m_pWidget->GetFieldFlags() & FIELDFLAG_MULTISELECT) { size_t nSelCount = 0; for (int32_t i = 0, sz = pListBox->GetCount(); i < sz; ++i) { if (pListBox->IsItemSelected(i)) { if (m_OriginSelections.count(i) == 0) return TRUE; ++nSelCount; } } return nSelCount != m_OriginSelections.size(); } return pListBox->GetCurSel() != m_pWidget->GetSelectedIndex(0); }
void CFFL_ListBox::SaveData(CPDFSDK_PageView* pPageView) { CPWL_ListBox* pListBox = static_cast<CPWL_ListBox*>(GetPDFWindow(pPageView, FALSE)); if (!pListBox) return; int32_t nNewTopIndex = pListBox->GetTopVisibleIndex(); m_pWidget->ClearSelection(FALSE); if (m_pWidget->GetFieldFlags() & FIELDFLAG_MULTISELECT) { for (int32_t i = 0, sz = pListBox->GetCount(); i < sz; i++) { if (pListBox->IsItemSelected(i)) m_pWidget->SetOptionSelection(i, TRUE, FALSE); } } else { m_pWidget->SetOptionSelection(pListBox->GetCurSel(), TRUE, FALSE); } m_pWidget->SetTopVisibleIndex(nNewTopIndex); m_pWidget->ResetFieldAppearance(TRUE); m_pWidget->UpdateField(); SetChangeMark(); }