| Index: xfa/fxfa/app/xfa_ffchoicelist.cpp
|
| diff --git a/xfa/fxfa/app/xfa_ffchoicelist.cpp b/xfa/fxfa/app/xfa_ffchoicelist.cpp
|
| index 3f8ea29a49639bdc4146ee93c547af3ae0525812..21f96eeb790cac7015a5adf5e043a07665ddf9a1 100644
|
| --- a/xfa/fxfa/app/xfa_ffchoicelist.cpp
|
| +++ b/xfa/fxfa/app/xfa_ffchoicelist.cpp
|
| @@ -62,44 +62,41 @@ FX_BOOL CXFA_FFListBox::LoadWidget() {
|
| m_pNormalWidget->UnlockUpdate();
|
| return CXFA_FFField::LoadWidget();
|
| }
|
| +
|
| FX_BOOL CXFA_FFListBox::OnKillFocus(CXFA_FFWidget* pNewFocus) {
|
| - FX_BOOL flag = ProcessCommittedData();
|
| - if (!flag) {
|
| + if (!ProcessCommittedData())
|
| UpdateFWLData();
|
| - }
|
| CXFA_FFField::OnKillFocus(pNewFocus);
|
| return TRUE;
|
| }
|
| +
|
| FX_BOOL CXFA_FFListBox::CommitData() {
|
| CFWL_ListBox* pListBox = static_cast<CFWL_ListBox*>(m_pNormalWidget);
|
| int32_t iSels = pListBox->CountSelItems();
|
| CFX_Int32Array iSelArray;
|
| - for (int32_t i = 0; i < iSels; i++) {
|
| + for (int32_t i = 0; i < iSels; ++i)
|
| iSelArray.Add(pListBox->GetSelIndex(i));
|
| - }
|
| - m_pDataAcc->SetSelectedItems(iSelArray, TRUE);
|
| + m_pDataAcc->SetSelectedItems(iSelArray, true, FALSE, TRUE);
|
| return TRUE;
|
| }
|
| +
|
| FX_BOOL CXFA_FFListBox::IsDataChanged() {
|
| CFX_Int32Array iSelArray;
|
| m_pDataAcc->GetSelectedItems(iSelArray);
|
| int32_t iOldSels = iSelArray.GetSize();
|
| CFWL_ListBox* pListBox = (CFWL_ListBox*)m_pNormalWidget;
|
| int32_t iSels = pListBox->CountSelItems();
|
| - if (iOldSels == iSels) {
|
| - int32_t iIndex = 0;
|
| - for (; iIndex < iSels; iIndex++) {
|
| - FWL_HLISTITEM hlistItem = pListBox->GetItem(iSelArray[iIndex]);
|
| - if (!(pListBox->GetItemStates(hlistItem) && FWL_ITEMSTATE_LTB_Selected)) {
|
| - break;
|
| - }
|
| - }
|
| - if (iIndex == iSels) {
|
| - return FALSE;
|
| - }
|
| + if (iOldSels != iSels)
|
| + return TRUE;
|
| +
|
| + for (int32_t i = 0; i < iSels; ++i) {
|
| + FWL_HLISTITEM hlistItem = pListBox->GetItem(iSelArray[i]);
|
| + if (!(pListBox->GetItemStates(hlistItem) && FWL_ITEMSTATE_LTB_Selected))
|
| + return TRUE;
|
| }
|
| - return TRUE;
|
| + return FALSE;
|
| }
|
| +
|
| uint32_t CXFA_FFListBox::GetAlignment() {
|
| uint32_t dwExtendedStyle = 0;
|
| if (CXFA_Para para = m_pDataAcc->GetPara()) {
|
|
|