14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file. 44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/cxfa_ffwidgethandler.h" 84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <vector> 104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxjs/xfa/cjx_object.h" 12d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/cxfa_ffdoc.h" 13d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/cxfa_ffdocview.h" 14d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/cxfa_fffield.h" 15d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/cxfa_ffwidget.h" 16d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/cxfa_fwladapterwidgetmgr.h" 17d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/cxfa_calculate.h" 18d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/cxfa_checkbutton.h" 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_layoutprocessor.h" 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_measurement.h" 21d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/cxfa_node.h" 22d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/cxfa_ui.h" 23d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/cxfa_validate.h" 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_FFWidgetHandler::CXFA_FFWidgetHandler(CXFA_FFDocView* pDocView) 264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : m_pDocView(pDocView) {} 274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_FFWidgetHandler::~CXFA_FFWidgetHandler() {} 294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_FFWidgetHandler::OnMouseEnter(CXFA_FFWidget* hWidget) { 314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->LockUpdate(); 324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bRet = hWidget->OnMouseEnter(); 334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->UnlockUpdate(); 344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->UpdateDocView(); 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return bRet; 364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_FFWidgetHandler::OnMouseExit(CXFA_FFWidget* hWidget) { 394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->LockUpdate(); 404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bRet = hWidget->OnMouseExit(); 414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->UnlockUpdate(); 424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->UpdateDocView(); 434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return bRet; 444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_FFWidgetHandler::OnLButtonDown(CXFA_FFWidget* hWidget, 474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlags, 4833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann const CFX_PointF& point) { 494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->LockUpdate(); 5033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann bool bRet = hWidget->OnLButtonDown(dwFlags, hWidget->Rotate2Normal(point)); 514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bRet && m_pDocView->SetFocus(hWidget)) { 524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->GetDoc()->GetDocEnvironment()->SetFocusWidget( 534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->GetDoc(), hWidget); 544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->UnlockUpdate(); 564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->UpdateDocView(); 574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return bRet; 584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_FFWidgetHandler::OnLButtonUp(CXFA_FFWidget* hWidget, 614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlags, 6233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann const CFX_PointF& point) { 634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->LockUpdate(); 644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->m_bLayoutEvent = true; 6533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann bool bRet = hWidget->OnLButtonUp(dwFlags, hWidget->Rotate2Normal(point)); 664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->UnlockUpdate(); 674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->UpdateDocView(); 684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return bRet; 694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_FFWidgetHandler::OnLButtonDblClk(CXFA_FFWidget* hWidget, 724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlags, 7333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann const CFX_PointF& point) { 7433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann bool bRet = hWidget->OnLButtonDblClk(dwFlags, hWidget->Rotate2Normal(point)); 754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->RunInvalidate(); 764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return bRet; 774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_FFWidgetHandler::OnMouseMove(CXFA_FFWidget* hWidget, 804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlags, 8133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann const CFX_PointF& point) { 8233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann bool bRet = hWidget->OnMouseMove(dwFlags, hWidget->Rotate2Normal(point)); 834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->RunInvalidate(); 844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return bRet; 854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_FFWidgetHandler::OnMouseWheel(CXFA_FFWidget* hWidget, 884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlags, 894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int16_t zDelta, 9033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann const CFX_PointF& point) { 9133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann bool bRet = 9233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann hWidget->OnMouseWheel(dwFlags, zDelta, hWidget->Rotate2Normal(point)); 934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->RunInvalidate(); 944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return bRet; 954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_FFWidgetHandler::OnRButtonDown(CXFA_FFWidget* hWidget, 984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlags, 9933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann const CFX_PointF& point) { 10033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann bool bRet = hWidget->OnRButtonDown(dwFlags, hWidget->Rotate2Normal(point)); 1014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bRet && m_pDocView->SetFocus(hWidget)) { 1024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->GetDoc()->GetDocEnvironment()->SetFocusWidget( 1034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->GetDoc(), hWidget); 1044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->RunInvalidate(); 1064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return bRet; 1074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_FFWidgetHandler::OnRButtonUp(CXFA_FFWidget* hWidget, 1104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlags, 11133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann const CFX_PointF& point) { 11233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann bool bRet = hWidget->OnRButtonUp(dwFlags, hWidget->Rotate2Normal(point)); 1134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->RunInvalidate(); 1144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return bRet; 1154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_FFWidgetHandler::OnRButtonDblClk(CXFA_FFWidget* hWidget, 1184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlags, 11933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann const CFX_PointF& point) { 12033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann bool bRet = hWidget->OnRButtonDblClk(dwFlags, hWidget->Rotate2Normal(point)); 1214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->RunInvalidate(); 1224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return bRet; 1234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_FFWidgetHandler::OnKeyDown(CXFA_FFWidget* hWidget, 1264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwKeyCode, 1274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlags) { 1284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bRet = hWidget->OnKeyDown(dwKeyCode, dwFlags); 1294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->RunInvalidate(); 1304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->UpdateDocView(); 1314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return bRet; 1324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_FFWidgetHandler::OnKeyUp(CXFA_FFWidget* hWidget, 1354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwKeyCode, 1364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlags) { 1374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bRet = hWidget->OnKeyUp(dwKeyCode, dwFlags); 1384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->RunInvalidate(); 1394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return bRet; 1404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_FFWidgetHandler::OnChar(CXFA_FFWidget* hWidget, 1434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwChar, 1444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlags) { 1454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bRet = hWidget->OnChar(dwChar, dwFlags); 1464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->RunInvalidate(); 1474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return bRet; 1484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 150d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannWideString CXFA_FFWidgetHandler::GetSelectedText(CXFA_FFWidget* widget) { 151d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!widget->CanCopy()) 152d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return WideString(); 153d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 154d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return widget->Copy().value_or(WideString()); 155d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 156d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 157d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CXFA_FFWidgetHandler::PasteText(CXFA_FFWidget* widget, 158d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const WideString& text) { 159d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!widget->CanPaste()) 160d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 161d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 162d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann widget->Paste(text); 163d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 164d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 1654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannFWL_WidgetHit CXFA_FFWidgetHandler::OnHitTest(CXFA_FFWidget* hWidget, 16633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann const CFX_PointF& point) { 1674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!(hWidget->GetStatus() & XFA_WidgetStatus_Visible)) 1684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return FWL_WidgetHit::Unknown; 16933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return hWidget->OnHitTest(hWidget->Rotate2Normal(point)); 1704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_FFWidgetHandler::OnSetCursor(CXFA_FFWidget* hWidget, 17333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann const CFX_PointF& point) { 17433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return hWidget->OnSetCursor(hWidget->Rotate2Normal(point)); 1754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CXFA_FFWidgetHandler::RenderWidget(CXFA_FFWidget* hWidget, 178d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Graphics* pGS, 179d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const CFX_Matrix& matrix, 1804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bHighlight) { 181d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann hWidget->RenderWidget(pGS, matrix, 1824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bHighlight ? XFA_WidgetStatus_Highlight : 0); 1834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CXFA_FFWidgetHandler::HasEvent(CXFA_WidgetAcc* pWidgetAcc, 1864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_EVENTTYPE eEventType) { 187d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (eEventType == XFA_EVENT_Unknown) 1884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 189d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pWidgetAcc) 190d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return false; 191d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 192d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* node = pWidgetAcc->GetNode(); 193d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!node || node->GetElementType() == XFA_Element::Draw) 1944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 1954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (eEventType) { 1974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_EVENT_Calculate: { 198d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Calculate* calc = node->GetCalculateIfExists(); 199d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return calc && calc->GetScriptIfExists(); 2004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_EVENT_Validate: { 202d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Validate* validate = node->GetValidateIfExists(); 203d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return validate && validate->GetScriptIfExists(); 2044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 2064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 208d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return !pWidgetAcc->GetEventByActivity(gs_EventActivity[eEventType], false) 209d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann .empty(); 2104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CXFA_FFWidgetHandler::ProcessEvent(CXFA_WidgetAcc* pWidgetAcc, 2134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_EventParam* pParam) { 2144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pParam || pParam->m_eType == XFA_EVENT_Unknown) 2154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_EVENTERROR_NotExist; 216d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pWidgetAcc) 217d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return XFA_EVENTERROR_NotExist; 218d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 219d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* node = pWidgetAcc->GetNode(); 220d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!node || node->GetElementType() == XFA_Element::Draw) 2214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_EVENTERROR_NotExist; 2224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (pParam->m_eType) { 2244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_EVENT_Calculate: 225d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return node->ProcessCalculate(m_pDocView); 2264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_EVENT_Validate: 2274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_pDocView->GetDoc()->GetDocEnvironment()->IsValidationsEnabled( 2284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->GetDoc())) { 229d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return node->ProcessValidate(m_pDocView, 0); 2304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_EVENTERROR_Disabled; 2324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_EVENT_InitCalculate: { 233d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Calculate* calc = node->GetCalculateIfExists(); 2344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!calc) 2354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_EVENTERROR_NotExist; 236d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (node->IsUserInteractive()) 2374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return XFA_EVENTERROR_Disabled; 238d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return node->ExecuteScript(m_pDocView, calc->GetScriptIfExists(), pParam); 2394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 2414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iRet = 244d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann node->ProcessEvent(m_pDocView, gs_EventActivity[pParam->m_eType], pParam); 2454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return iRet; 2464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_FFWidget* CXFA_FFWidgetHandler::CreateWidget(CXFA_FFWidget* hParent, 2494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_WIDGETTYPE eType, 2504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFWidget* hBefore) { 251d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* pParentFormItem = hParent ? hParent->GetNode() : nullptr; 252d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* pBeforeFormItem = hBefore ? hBefore->GetNode() : nullptr; 2534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNewFormItem = 2544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CreateWidgetFormItem(eType, pParentFormItem, pBeforeFormItem); 2554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNewFormItem) 2564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 2574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 258d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* templateNode = pNewFormItem->GetTemplateNodeIfExists(); 259d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!templateNode) 260d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return nullptr; 261d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 262d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann templateNode->SetFlag(XFA_NodeFlag_Initialized, true); 2634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNewFormItem->SetFlag(XFA_NodeFlag_Initialized, true); 2644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->RunLayout(); 2654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_LayoutItem* pLayout = 2664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocView->GetXFALayout()->GetLayoutItem(pNewFormItem); 2674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return static_cast<CXFA_FFWidget*>(pLayout); 2684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateWidgetFormItem( 2714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_WIDGETTYPE eType, 2724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParent, 2734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 2744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (eType) { 2754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_Barcode: 2764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 2774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_PushButton: 2784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreatePushButton(pParent, pBefore); 2794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_CheckButton: 2804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateCheckButton(pParent, pBefore); 2814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_ExcludeGroup: 2824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateExclGroup(pParent, pBefore); 2834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_RadioButton: 2844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateRadioButton(pParent, pBefore); 2854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_Arc: 2864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateArc(pParent, pBefore); 2874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_Rectangle: 2884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateRectangle(pParent, pBefore); 2894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_Image: 2904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateImage(pParent, pBefore); 2914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_Line: 2924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateLine(pParent, pBefore); 2934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_Text: 2944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateText(pParent, pBefore); 2954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_DatetimeEdit: 2964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateDatetimeEdit(pParent, pBefore); 2974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_DecimalField: 2984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateDecimalField(pParent, pBefore); 2994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_NumericField: 3004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateNumericField(pParent, pBefore); 3014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_Signature: 3024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateSignature(pParent, pBefore); 3034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_TextEdit: 3044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateTextEdit(pParent, pBefore); 3054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_DropdownList: 3064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateDropdownList(pParent, pBefore); 3074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_ListBox: 3084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateListBox(pParent, pBefore); 3094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_ImageField: 3104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateImageField(pParent, pBefore); 3114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_PasswordEdit: 3124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreatePasswordEdit(pParent, pBefore); 3134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case XFA_WIDGETTYPE_Subform: 3144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateSubform(pParent, pBefore); 3154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann default: 3164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 3174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreatePushButton(CXFA_Node* pParent, 3214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 3224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pField = CreateField(XFA_Element::Button, pParent, pBefore); 3234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pCaption = CreateCopyNode(XFA_Element::Caption, pField); 3244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pValue = CreateCopyNode(XFA_Element::Value, pCaption); 3254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pText = CreateCopyNode(XFA_Element::Text, pValue); 326d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pText->JSObject()->SetContent(L"Button", L"Button", false, false, true); 3274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pPara = CreateCopyNode(XFA_Element::Para, pCaption); 329d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pPara->JSObject()->SetEnum(XFA_Attribute::VAlign, XFA_AttributeEnum::Middle, 330d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann false); 331d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pPara->JSObject()->SetEnum(XFA_Attribute::HAlign, XFA_AttributeEnum::Center, 332d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann false); 3334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CreateFontNode(pCaption); 3344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBorder = CreateCopyNode(XFA_Element::Border, pField); 336d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pBorder->JSObject()->SetEnum(XFA_Attribute::Hand, XFA_AttributeEnum::Right, 337d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann false); 3384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pEdge = CreateCopyNode(XFA_Element::Edge, pBorder); 340d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pEdge->JSObject()->SetEnum(XFA_Attribute::Stroke, XFA_AttributeEnum::Raised, 341d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann false); 3424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pFill = CreateCopyNode(XFA_Element::Fill, pBorder); 3444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pColor = CreateCopyNode(XFA_Element::Color, pFill); 345d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pColor->JSObject()->SetCData(XFA_Attribute::Value, L"212, 208, 200", false, 346d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann false); 3474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBind = CreateCopyNode(XFA_Element::Bind, pField); 349d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pBind->JSObject()->SetEnum(XFA_Attribute::Match, XFA_AttributeEnum::None, 350d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann false); 3514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pField; 3534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateCheckButton(CXFA_Node* pParent, 3564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 3574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateField(XFA_Element::CheckButton, pParent, pBefore); 3584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateExclGroup(CXFA_Node* pParent, 3614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 3624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateFormItem(XFA_Element::ExclGroup, pParent, pBefore); 3634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateRadioButton(CXFA_Node* pParent, 3664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 3674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pField = CreateField(XFA_Element::CheckButton, pParent, pBefore); 368d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Ui* pUi = pField->GetFirstChildByClass<CXFA_Ui>(XFA_Element::Ui); 369d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_CheckButton* pWidget = 370d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pUi->GetFirstChildByClass<CXFA_CheckButton>(XFA_Element::CheckButton); 371d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pWidget->JSObject()->SetEnum(XFA_Attribute::Shape, XFA_AttributeEnum::Round, 372d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann false); 3734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pField; 3744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateDatetimeEdit(CXFA_Node* pParent, 3774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 3784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pField = CreateField(XFA_Element::DateTimeEdit, pParent, pBefore); 3794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CreateValueNode(XFA_Element::Date, pField); 3804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pField; 3814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateDecimalField(CXFA_Node* pParent, 3844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 3854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pField = CreateNumericField(pParent, pBefore); 3864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CreateValueNode(XFA_Element::Decimal, pField); 3874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pField; 3884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateNumericField(CXFA_Node* pParent, 3914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 3924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateField(XFA_Element::NumericEdit, pParent, pBefore); 3934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateSignature(CXFA_Node* pParent, 3964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 3974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateField(XFA_Element::Signature, pParent, pBefore); 3984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateTextEdit(CXFA_Node* pParent, 4014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 4024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateField(XFA_Element::TextEdit, pParent, pBefore); 4034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateDropdownList(CXFA_Node* pParent, 4064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 4074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateField(XFA_Element::ChoiceList, pParent, pBefore); 4084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateListBox(CXFA_Node* pParent, 4114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 4124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pField = CreateDropdownList(pParent, pBefore); 413d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* pUi = pField->GetFirstChild(); 414d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* pListBox = pUi->GetFirstChild(); 415d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pListBox->JSObject()->SetEnum(XFA_Attribute::Open, XFA_AttributeEnum::Always, 416d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann false); 417d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pListBox->JSObject()->SetEnum(XFA_Attribute::CommitOn, 418d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_AttributeEnum::Exit, false); 4194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pField; 4204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateImageField(CXFA_Node* pParent, 4234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 4244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateField(XFA_Element::ImageEdit, pParent, pBefore); 4254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreatePasswordEdit(CXFA_Node* pParent, 4284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 4294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pField = CreateField(XFA_Element::PasswordEdit, pParent, pBefore); 4304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBind = CreateCopyNode(XFA_Element::Bind, pField); 431d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pBind->JSObject()->SetEnum(XFA_Attribute::Match, XFA_AttributeEnum::None, 432d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann false); 4334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pField; 4344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateField(XFA_Element eElement, 4374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParent, 4384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 4394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pField = CreateFormItem(XFA_Element::Field, pParent, pBefore); 4404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CreateCopyNode(eElement, CreateCopyNode(XFA_Element::Ui, pField)); 4414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CreateFontNode(pField); 4424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pField; 4434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateArc(CXFA_Node* pParent, 4464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 4474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateDraw(XFA_Element::Arc, pParent, pBefore); 4484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateRectangle(CXFA_Node* pParent, 4514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 4524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateDraw(XFA_Element::Rectangle, pParent, pBefore); 4534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateImage(CXFA_Node* pParent, 4564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 4574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pField = CreateDraw(XFA_Element::Image, pParent, pBefore); 4584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CreateCopyNode(XFA_Element::ImageEdit, 4594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CreateCopyNode(XFA_Element::Ui, pField)); 4604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pField; 4614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateLine(CXFA_Node* pParent, 4644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 4654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateDraw(XFA_Element::Line, pParent, pBefore); 4664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateText(CXFA_Node* pParent, 4694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 4704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pField = CreateDraw(XFA_Element::Text, pParent, pBefore); 4714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CreateCopyNode(XFA_Element::TextEdit, 4724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CreateCopyNode(XFA_Element::Ui, pField)); 4734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CreateFontNode(pField); 4744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pField; 4754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateDraw(XFA_Element eElement, 4784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParent, 4794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 4804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pDraw = CreateFormItem(XFA_Element::Draw, pParent, pBefore); 4814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CreateValueNode(eElement, pDraw); 4824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pDraw; 4834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateSubform(CXFA_Node* pParent, 4864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 4874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return CreateFormItem(XFA_Element::Subform, pParent, pBefore); 4884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateFormItem(XFA_Element eElement, 4914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParent, 4924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 493d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pParent) 494d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return nullptr; 495d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 496d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* pTemplateParent = pParent->GetTemplateNodeIfExists(); 497d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pTemplateParent) 498d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return nullptr; 499d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 5004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNewFormItem = pTemplateParent->CloneTemplateToForm(false); 5014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pParent) 5024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParent->InsertChild(pNewFormItem, pBefore); 5034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pNewFormItem; 5044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateCopyNode(XFA_Element eElement, 5074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParent, 5084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 509d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pParent) 510d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return nullptr; 511d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 512d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* pTemplateParent = pParent->GetTemplateNodeIfExists(); 5134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNewNode = 5144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CreateTemplateNode(eElement, pTemplateParent, 515d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pBefore ? pBefore->GetTemplateNodeIfExists() : nullptr) 5164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ->Clone(false); 5174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pParent) 5184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParent->InsertChild(pNewNode, pBefore); 5194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pNewNode; 5204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateTemplateNode(XFA_Element eElement, 5234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParent, 5244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pBefore) const { 5254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Document* pXFADoc = GetXFADoc(); 5264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNewTemplateNode = 527d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pXFADoc->CreateNode(XFA_PacketType::Template, eElement); 5284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pParent) 5294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParent->InsertChild(pNewTemplateNode, pBefore); 5304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pNewTemplateNode; 5314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateFontNode(CXFA_Node* pParent) const { 5344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pFont = CreateCopyNode(XFA_Element::Font, pParent); 535d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pFont->JSObject()->SetCData(XFA_Attribute::Typeface, L"Myriad Pro", false, 536d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann false); 5374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pFont; 5384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateMarginNode(CXFA_Node* pParent, 5414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlags, 542d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann float fInsets[4]) const { 5434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pMargin = CreateCopyNode(XFA_Element::Margin, pParent); 5444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (dwFlags & 0x01) 545d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pMargin->JSObject()->SetMeasure(XFA_Attribute::LeftInset, 546d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Measurement(fInsets[0], XFA_Unit::Pt), 547d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann false); 5484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (dwFlags & 0x02) 549d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pMargin->JSObject()->SetMeasure(XFA_Attribute::TopInset, 550d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Measurement(fInsets[1], XFA_Unit::Pt), 551d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann false); 5524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (dwFlags & 0x04) 553d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pMargin->JSObject()->SetMeasure(XFA_Attribute::RightInset, 554d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Measurement(fInsets[2], XFA_Unit::Pt), 555d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann false); 5564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (dwFlags & 0x08) 557d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pMargin->JSObject()->SetMeasure(XFA_Attribute::BottomInset, 558d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Measurement(fInsets[3], XFA_Unit::Pt), 559d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann false); 5604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pMargin; 5614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* CXFA_FFWidgetHandler::CreateValueNode(XFA_Element eValue, 5644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pParent) const { 5654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pValue = CreateCopyNode(XFA_Element::Value, pParent); 5664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CreateCopyNode(eValue, pValue); 5674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return pValue; 5684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Document* CXFA_FFWidgetHandler::GetObjFactory() const { 5714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return GetXFADoc(); 5724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Document* CXFA_FFWidgetHandler::GetXFADoc() const { 5754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_pDocView->GetDoc()->GetXFADoc(); 5764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 577