Index: core/fpdfdoc/doc_formfield.cpp |
diff --git a/core/fpdfdoc/doc_formfield.cpp b/core/fpdfdoc/doc_formfield.cpp |
index cc34a9d297393f8df970f52c574dbfc374434d5f..4ebf2d3020b1bd410e66d57619e2fb82ce3573b9 100644 |
--- a/core/fpdfdoc/doc_formfield.cpp |
+++ b/core/fpdfdoc/doc_formfield.cpp |
@@ -458,11 +458,9 @@ int CPDF_FormField::GetSelectedIndex(int index) { |
return iOptIndex; |
} |
} |
- int nOpts = CountOptions(); |
- for (int i = 0; i < nOpts; i++) { |
- if (sel_value == GetOptionValue(i)) { |
+ for (int i = 0; i < CountOptions(); i++) { |
+ if (sel_value == GetOptionValue(i)) |
return i; |
- } |
} |
return -1; |
} |
@@ -500,6 +498,7 @@ FX_BOOL CPDF_FormField::ClearSelection(FX_BOOL bNotify) { |
m_pForm->m_bUpdated = TRUE; |
return TRUE; |
} |
+ |
FX_BOOL CPDF_FormField::IsItemSelected(int index) { |
ASSERT(GetType() == ComboBox || GetType() == ListBox); |
if (index < 0 || index >= CountOptions()) { |
@@ -544,6 +543,7 @@ FX_BOOL CPDF_FormField::IsItemSelected(int index) { |
} |
return FALSE; |
} |
+ |
FX_BOOL CPDF_FormField::SetItemSelection(int index, |
FX_BOOL bSelected, |
FX_BOOL bNotify) { |
@@ -575,20 +575,16 @@ FX_BOOL CPDF_FormField::SetItemSelection(int index, |
} |
} else if (pValue->IsArray()) { |
CPDF_Array* pArray = new CPDF_Array; |
- int iCount = CountOptions(); |
- for (int i = 0; i < iCount; i++) { |
- if (i != index) { |
- if (IsItemSelected(i)) { |
- opt_value = GetOptionValue(i); |
- pArray->AddString(PDF_EncodeText(opt_value)); |
- } |
+ for (int i = 0; i < CountOptions(); i++) { |
+ if (i != index && IsItemSelected(i)) { |
+ opt_value = GetOptionValue(i); |
+ pArray->AddString(PDF_EncodeText(opt_value)); |
} |
} |
- if (pArray->GetCount() < 1) { |
+ if (pArray->GetCount() < 1) |
pArray->Release(); |
- } else { |
+ else |
m_pDict->SetAt("V", pArray); |
- } |
} |
} else if (m_Type == ComboBox) { |
m_pDict->RemoveAt("V"); |
@@ -602,15 +598,8 @@ FX_BOOL CPDF_FormField::SetItemSelection(int index, |
m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); |
} else { |
CPDF_Array* pArray = new CPDF_Array; |
- int iCount = CountOptions(); |
- for (int i = 0; i < iCount; i++) { |
- FX_BOOL bSelected; |
- if (i != index) { |
- bSelected = IsItemSelected(i); |
- } else { |
- bSelected = TRUE; |
- } |
- if (bSelected) { |
+ for (int i = 0; i < CountOptions(); i++) { |
+ if (i == index || IsItemSelected(i)) { |
opt_value = GetOptionValue(i); |
pArray->AddString(PDF_EncodeText(opt_value)); |
} |
@@ -638,54 +627,46 @@ FX_BOOL CPDF_FormField::SetItemSelection(int index, |
m_pForm->m_bUpdated = TRUE; |
return TRUE; |
} |
+ |
FX_BOOL CPDF_FormField::IsItemDefaultSelected(int index) { |
ASSERT(GetType() == ComboBox || GetType() == ListBox); |
- if (index < 0 || index >= CountOptions()) { |
+ if (index < 0 || index >= CountOptions()) |
return FALSE; |
- } |
int iDVIndex = GetDefaultSelectedItem(); |
- if (iDVIndex < 0) { |
- return FALSE; |
- } |
- return (iDVIndex == index); |
+ return iDVIndex >= 0 && iDVIndex == index; |
} |
+ |
int CPDF_FormField::GetDefaultSelectedItem() { |
ASSERT(GetType() == ComboBox || GetType() == ListBox); |
CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "DV"); |
- if (!pValue) { |
+ if (!pValue) |
return -1; |
- } |
CFX_WideString csDV = pValue->GetUnicodeText(); |
- if (csDV.IsEmpty()) { |
+ if (csDV.IsEmpty()) |
return -1; |
- } |
- int iCount = CountOptions(); |
- for (int i = 0; i < iCount; i++) { |
- if (csDV == GetOptionValue(i)) { |
+ for (int i = 0; i < CountOptions(); i++) { |
+ if (csDV == GetOptionValue(i)) |
return i; |
- } |
} |
return -1; |
} |
+ |
void CPDF_FormField::UpdateAP(CPDF_FormControl* pControl) { |
- if (m_Type == PushButton) { |
- return; |
- } |
- if (m_Type == RadioButton || m_Type == CheckBox) { |
+ if (m_Type == PushButton || m_Type == RadioButton || m_Type == CheckBox) |
return; |
- } |
- if (!m_pForm->m_bGenerateAP) { |
+ if (!m_pForm->m_bGenerateAP) |
return; |
- } |
for (int i = 0; i < CountControls(); i++) { |
CPDF_FormControl* pControl = GetControl(i); |
FPDF_GenerateAP(m_pForm->m_pDocument, pControl->m_pWidgetDict); |
} |
} |
+ |
int CPDF_FormField::CountOptions() { |
CPDF_Array* pArray = ToArray(FPDF_GetFieldAttr(m_pDict, "Opt")); |
return pArray ? pArray->GetCount() : 0; |
} |
+ |
CFX_WideString CPDF_FormField::GetOptionText(int index, int sub_index) { |
CPDF_Array* pArray = ToArray(FPDF_GetFieldAttr(m_pDict, "Opt")); |
if (!pArray) |
@@ -706,30 +687,23 @@ CFX_WideString CPDF_FormField::GetOptionLabel(int index) { |
CFX_WideString CPDF_FormField::GetOptionValue(int index) { |
return GetOptionText(index, 0); |
} |
+ |
int CPDF_FormField::FindOption(CFX_WideString csOptLabel) { |
- int iCount = CountOptions(); |
- for (int i = 0; i < iCount; i++) { |
- CFX_WideString csValue = GetOptionValue(i); |
- if (csValue == csOptLabel) { |
+ for (int i = 0; i < CountOptions(); i++) { |
+ if (GetOptionValue(i) == csOptLabel) |
return i; |
- } |
} |
return -1; |
} |
-int CPDF_FormField::FindOptionValue(const CFX_WideString& csOptValue, |
- int iStartIndex) { |
- if (iStartIndex < 0) { |
- iStartIndex = 0; |
- } |
- int iCount = CountOptions(); |
- for (; iStartIndex < iCount; iStartIndex++) { |
- CFX_WideString csValue = GetOptionValue(iStartIndex); |
- if (csValue == csOptValue) { |
- return iStartIndex; |
- } |
+ |
+int CPDF_FormField::FindOptionValue(const CFX_WideString& csOptValue) { |
+ for (int i = 0; i < CountOptions(); i++) { |
+ if (GetOptionValue(i) == csOptValue) |
+ return i; |
} |
return -1; |
} |
+ |
#ifdef PDF_ENABLE_XFA |
int CPDF_FormField::InsertOption(CFX_WideString csOptLabel, |
int index, |