| Index: fpdfsdk/javascript/Field.cpp
|
| diff --git a/fpdfsdk/javascript/Field.cpp b/fpdfsdk/javascript/Field.cpp
|
| index 1f4a18375adfe9ca2355375070c97d8c28cda630..bf20769be43b70353686ab1f2723235230d9436b 100644
|
| --- a/fpdfsdk/javascript/Field.cpp
|
| +++ b/fpdfsdk/javascript/Field.cpp
|
| @@ -26,6 +26,44 @@
|
| #include "fpdfsdk/javascript/cjs_runtime.h"
|
| #include "fpdfsdk/javascript/color.h"
|
|
|
| +static 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;
|
| +}
|
| +
|
| BEGIN_JS_STATIC_CONST(CJS_Field)
|
| END_JS_STATIC_CONST()
|
|
|
| @@ -1244,39 +1282,8 @@ void Field::SetDisplay(CPDFSDK_Document* pDocument,
|
| 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);
|
| + bSet = SetWidgetDisplayStatus(pWidget, number);
|
| }
|
|
|
| if (bSet)
|
| @@ -1284,41 +1291,14 @@ void Field::SetDisplay(CPDFSDK_Document* pDocument,
|
| } 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);
|
| }
|
| }
|
| }
|
|
|