Index: fpdfsdk/javascript/Field.cpp |
diff --git a/fpdfsdk/javascript/Field.cpp b/fpdfsdk/javascript/Field.cpp |
index 1f4a18375adfe9ca2355375070c97d8c28cda630..a0fa2785b7b58da1d9db5172111b14733618ad71 100644 |
--- a/fpdfsdk/javascript/Field.cpp |
+++ b/fpdfsdk/javascript/Field.cpp |
@@ -26,6 +26,48 @@ |
#include "fpdfsdk/javascript/cjs_runtime.h" |
#include "fpdfsdk/javascript/color.h" |
+namespace { |
+ |
+bool SetWidgetDisplayStatus(CPDFSDK_Widget* pWidget, int value) { |
+ if (!pWidget) |
+ return false; |
+ |
+ uint32_t dwFlag = pWidget->GetFlags(); |
+ switch (value) { |
+ case 0: |
+ dwFlag &= ~ANNOTFLAG_INVISIBLE; |
+ dwFlag &= ~ANNOTFLAG_HIDDEN; |
+ dwFlag &= ~ANNOTFLAG_NOVIEW; |
+ dwFlag |= ANNOTFLAG_PRINT; |
+ break; |
+ case 1: |
+ dwFlag &= ~ANNOTFLAG_INVISIBLE; |
+ dwFlag &= ~ANNOTFLAG_NOVIEW; |
+ dwFlag |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT); |
+ break; |
+ case 2: |
+ dwFlag &= ~ANNOTFLAG_INVISIBLE; |
+ dwFlag &= ~ANNOTFLAG_PRINT; |
+ dwFlag &= ~ANNOTFLAG_HIDDEN; |
+ dwFlag &= ~ANNOTFLAG_NOVIEW; |
+ break; |
+ case 3: |
+ dwFlag |= ANNOTFLAG_NOVIEW; |
+ dwFlag |= ANNOTFLAG_PRINT; |
+ dwFlag &= ~ANNOTFLAG_HIDDEN; |
+ break; |
+ } |
+ |
+ if (dwFlag != pWidget->GetFlags()) { |
+ pWidget->SetFlags(dwFlag); |
+ return true; |
+ } |
+ |
+ return false; |
+} |
+ |
+} // namespace |
+ |
BEGIN_JS_STATIC_CONST(CJS_Field) |
END_JS_STATIC_CONST() |
@@ -1239,86 +1281,29 @@ void Field::SetDisplay(CPDFSDK_Document* pDocument, |
GetFormFields(pDocument, swFieldName); |
for (CPDF_FormField* pFormField : FieldArray) { |
if (nControlIndex < 0) { |
- FX_BOOL bSet = FALSE; |
+ bool bAnySet = false; |
for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) { |
CPDF_FormControl* pFormControl = pFormField->GetControl(i); |
ASSERT(pFormControl); |
- if (CPDFSDK_Widget* pWidget = |
- pInterForm->GetWidget(pFormControl, true)) { |
- uint32_t dwFlag = pWidget->GetFlags(); |
- switch (number) { |
- case 0: |
- dwFlag &= (~ANNOTFLAG_INVISIBLE); |
- dwFlag &= (~ANNOTFLAG_HIDDEN); |
- dwFlag &= (~ANNOTFLAG_NOVIEW); |
- dwFlag |= ANNOTFLAG_PRINT; |
- break; |
- case 1: |
- dwFlag &= (~ANNOTFLAG_INVISIBLE); |
- dwFlag &= (~ANNOTFLAG_NOVIEW); |
- dwFlag |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT); |
- break; |
- case 2: |
- dwFlag &= (~ANNOTFLAG_INVISIBLE); |
- dwFlag &= (~ANNOTFLAG_PRINT); |
- dwFlag &= (~ANNOTFLAG_HIDDEN); |
- dwFlag &= (~ANNOTFLAG_NOVIEW); |
- break; |
- case 3: |
- dwFlag |= ANNOTFLAG_NOVIEW; |
- dwFlag |= ANNOTFLAG_PRINT; |
- dwFlag &= (~ANNOTFLAG_HIDDEN); |
- break; |
- } |
- |
- if (dwFlag != pWidget->GetFlags()) { |
- pWidget->SetFlags(dwFlag); |
- bSet = TRUE; |
- } |
- } |
+ CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl, true); |
+ if (SetWidgetDisplayStatus(pWidget, number)) |
+ bAnySet = true; |
} |
- if (bSet) |
+ if (bAnySet) |
UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE); |
} else { |
if (nControlIndex >= pFormField->CountControls()) |
return; |
- if (CPDF_FormControl* pFormControl = |
- pFormField->GetControl(nControlIndex)) { |
- if (CPDFSDK_Widget* pWidget = |
- pInterForm->GetWidget(pFormControl, true)) { |
- uint32_t dwFlag = pWidget->GetFlags(); |
- switch (number) { |
- case 0: |
- dwFlag &= (~ANNOTFLAG_INVISIBLE); |
- dwFlag &= (~ANNOTFLAG_HIDDEN); |
- dwFlag &= (~ANNOTFLAG_NOVIEW); |
- dwFlag |= ANNOTFLAG_PRINT; |
- break; |
- case 1: |
- dwFlag &= (~ANNOTFLAG_INVISIBLE); |
- dwFlag &= (~ANNOTFLAG_NOVIEW); |
- dwFlag |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT); |
- break; |
- case 2: |
- dwFlag &= (~ANNOTFLAG_INVISIBLE); |
- dwFlag &= (~ANNOTFLAG_PRINT); |
- dwFlag &= (~ANNOTFLAG_HIDDEN); |
- dwFlag &= (~ANNOTFLAG_NOVIEW); |
- break; |
- case 3: |
- dwFlag |= ANNOTFLAG_NOVIEW; |
- dwFlag |= ANNOTFLAG_PRINT; |
- dwFlag &= (~ANNOTFLAG_HIDDEN); |
- break; |
- } |
- if (dwFlag != pWidget->GetFlags()) { |
- pWidget->SetFlags(dwFlag); |
- UpdateFormControl(pDocument, pFormControl, TRUE, FALSE, TRUE); |
- } |
- } |
- } |
+ |
+ CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex); |
+ if (!pFormControl) |
+ return; |
+ |
+ CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl, true); |
+ if (SetWidgetDisplayStatus(pWidget, number)) |
+ UpdateFormControl(pDocument, pFormControl, TRUE, FALSE, TRUE); |
} |
} |
} |