bool CFFL_TextField::OnChar(CPDFSDK_Annot* pAnnot, uint32_t nChar, uint32_t nFlags) { switch (nChar) { case FWL_VKEY_Return: if (!(m_pWidget->GetFieldFlags() & FIELDFLAG_MULTILINE)) { CPDFSDK_PageView* pPageView = GetCurPageView(true); ASSERT(pPageView); m_bValid = !m_bValid; CFX_FloatRect rcAnnot = pAnnot->GetRect(); m_pFormFillEnv->Invalidate(pAnnot->GetUnderlyingPage(), rcAnnot.left, rcAnnot.top, rcAnnot.right, rcAnnot.bottom); if (m_bValid) { if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, true)) pWnd->SetFocus(); } else { if (CommitData(pPageView, nFlags)) { DestroyPDFWindow(pPageView); return true; } return false; } } break; case FWL_VKEY_Escape: { CPDFSDK_PageView* pPageView = GetCurPageView(true); ASSERT(pPageView); EscapeFiller(pPageView, true); return true; } } return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags); }
void CFFL_FormFiller::EscapeFiller(CPDFSDK_PageView* pPageView, FX_BOOL bDestroyPDFWindow) { m_bValid = FALSE; FX_RECT rcRect = GetViewBBox(pPageView, m_pWidget); InvalidateRect(rcRect.left, rcRect.top, rcRect.right, rcRect.bottom); if (bDestroyPDFWindow) DestroyPDFWindow(pPageView); }
CPWL_Wnd* CFFL_ListBox::ResetPDFWindow(CPDFSDK_PageView* pPageView, FX_BOOL bRestoreValue) { if (bRestoreValue) SaveState(pPageView); DestroyPDFWindow(pPageView); CPWL_Wnd* pRet = NULL; if (bRestoreValue) { RestoreState(pPageView); pRet = GetPDFWindow(pPageView, FALSE); } else pRet = GetPDFWindow(pPageView, TRUE); m_pWidget->UpdateField(); return pRet; }
FX_BOOL CFFL_TextField::OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags) { switch (nChar) { case FWL_VKEY_Return: if (!(m_pWidget->GetFieldFlags() & FIELDFLAG_MULTILINE)) { CPDFSDK_PageView* pPageView = this->GetCurPageView(); ASSERT(pPageView != NULL); m_bValid = !m_bValid; CPDF_Rect rcAnnot = pAnnot->GetRect(); m_pApp->FFI_Invalidate(pAnnot->GetPDFPage(), rcAnnot.left, rcAnnot.top, rcAnnot.right, rcAnnot.bottom); if (m_bValid) { if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, TRUE)) pWnd->SetFocus(); } else { if (CommitData(pPageView, nFlags)) { DestroyPDFWindow(pPageView); return TRUE; } else { return FALSE; } } } break; case FWL_VKEY_Escape: { CPDFSDK_PageView* pPageView = this->GetCurPageView(); ASSERT(pPageView != NULL); EscapeFiller(pPageView,TRUE); return TRUE; } } return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags); }
CPWL_Wnd* CFFL_TextField::ResetPDFWindow(CPDFSDK_PageView* pPageView, bool bRestoreValue) { if (bRestoreValue) SaveState(pPageView); DestroyPDFWindow(pPageView); CPWL_Wnd* pRet = nullptr; if (bRestoreValue) { RestoreState(pPageView); pRet = GetPDFWindow(pPageView, false); } else { pRet = GetPDFWindow(pPageView, true); } m_pWidget->UpdateField(); return pRet; }
void CFFL_ListBox::OnKeyStroke(FX_BOOL bKeyDown, FX_DWORD nFlag) { ASSERT(m_pWidget != NULL); int nFlags = m_pWidget->GetFieldFlags(); if (nFlags & FIELDFLAG_COMMITONSELCHANGE) { if (m_bValid) { CPDFSDK_PageView* pPageView = GetCurPageView(); ASSERT(pPageView != NULL); if (CommitData(pPageView, nFlag)) { DestroyPDFWindow(pPageView); m_bValid = FALSE; } } } }