bool CPWL_ComboBox::OnChar(uint16_t nChar, uint32_t nFlag) { if (!m_pList) return false; if (!m_pEdit) return false; m_nSelectItem = -1; if (HasFlag(PCBS_ALLOWCUSTOMTEXT)) return m_pEdit->OnChar(nChar, nFlag); bool bExit = false; #ifdef PDF_ENABLE_XFA if (m_pFillerNotify) { m_pFillerNotify->OnPopupPreOpen(GetAttachedData(), bExit, nFlag); if (bExit) return false; m_pFillerNotify->OnPopupPostOpen(GetAttachedData(), bExit, nFlag); if (bExit) return false; } #endif // PDF_ENABLE_XFA return m_pList->OnCharWithExit(nChar, bExit, nFlag) ? bExit : false; }
bool CPWL_ComboBox::OnKeyDown(uint16_t nChar, uint32_t nFlag) { if (!m_pList) return false; if (!m_pEdit) return false; m_nSelectItem = -1; switch (nChar) { case FWL_VKEY_Up: if (m_pList->GetCurSel() > 0) { bool bExit = false; #ifdef PDF_ENABLE_XFA if (m_pFillerNotify) { m_pFillerNotify->OnPopupPreOpen(GetAttachedData(), bExit, nFlag); if (bExit) return false; bExit = false; m_pFillerNotify->OnPopupPostOpen(GetAttachedData(), bExit, nFlag); if (bExit) return false; } #endif // PDF_ENABLE_XFA if (m_pList->OnKeyDownWithExit(nChar, bExit, nFlag)) { if (bExit) return false; SetSelectText(); } } return true; case FWL_VKEY_Down: if (m_pList->GetCurSel() < m_pList->GetCount() - 1) { bool bExit = false; #ifdef PDF_ENABLE_XFA if (m_pFillerNotify) { m_pFillerNotify->OnPopupPreOpen(GetAttachedData(), bExit, nFlag); if (bExit) return false; bExit = false; m_pFillerNotify->OnPopupPostOpen(GetAttachedData(), bExit, nFlag); if (bExit) return false; } #endif // PDF_ENABLE_XFA if (m_pList->OnKeyDownWithExit(nChar, bExit, nFlag)) { if (bExit) return false; SetSelectText(); } } return true; } if (HasFlag(PCBS_ALLOWCUSTOMTEXT)) return m_pEdit->OnKeyDown(nChar, nFlag); return false; }
void CPWL_ComboBox::SetPopup(bool bPopup) { if (!m_pList) return; if (bPopup == m_bPopup) return; FX_FLOAT fListHeight = m_pList->GetContentRect().Height(); if (!IsFloatBigger(fListHeight, 0.0f)) return; if (bPopup) { if (m_pFillerNotify) { #ifdef PDF_ENABLE_XFA bool bExit = false; m_pFillerNotify->OnPopupPreOpen(GetAttachedData(), bExit, 0); if (bExit) return; #endif // PDF_ENABLE_XFA int32_t nWhere = 0; FX_FLOAT fPopupRet = 0.0f; FX_FLOAT fPopupMin = 0.0f; if (m_pList->GetCount() > 3) fPopupMin = m_pList->GetFirstHeight() * 3 + m_pList->GetBorderWidth() * 2; FX_FLOAT fPopupMax = fListHeight + m_pList->GetBorderWidth() * 2; m_pFillerNotify->QueryWherePopup(GetAttachedData(), fPopupMin, fPopupMax, nWhere, fPopupRet); if (IsFloatBigger(fPopupRet, 0.0f)) { m_bPopup = bPopup; CFX_FloatRect rcWindow = CPWL_Wnd::GetWindowRect(); m_rcOldWindow = rcWindow; switch (nWhere) { default: case 0: rcWindow.bottom -= fPopupRet; break; case 1: rcWindow.top += fPopupRet; break; } m_nPopupWhere = nWhere; Move(rcWindow, true, true); #ifdef PDF_ENABLE_XFA bExit = false; m_pFillerNotify->OnPopupPostOpen(GetAttachedData(), bExit, 0); if (bExit) return; #endif // PDF_ENABLE_XFA } } } else { m_bPopup = bPopup; Move(m_rcOldWindow, true, true); } }
FX_BOOL CPWL_Edit::OnKeyDown(FX_WORD nChar, FX_DWORD nFlag) { if (m_bMouseDown) return TRUE; if (nChar == FWL_VKEY_Delete) { if (m_pFillerNotify) { FX_BOOL bRC = TRUE; FX_BOOL bExit = FALSE; CFX_WideString strChange; CFX_WideString strChangeEx; int nSelStart = 0; int nSelEnd = 0; GetSel(nSelStart, nSelEnd); if (nSelStart == nSelEnd) nSelEnd = nSelStart + 1; m_pFillerNotify->OnBeforeKeyStroke(GetAttachedData(), strChange, strChangeEx, nSelStart, nSelEnd, TRUE, bRC, bExit, nFlag); if (!bRC) return FALSE; if (bExit) return FALSE; } } FX_BOOL bRet = CPWL_EditCtrl::OnKeyDown(nChar, nFlag); // In case of implementation swallow the OnKeyDown event. if (IsProceedtoOnChar(nChar, nFlag)) return TRUE; return bRet; }
void CPWL_Edit::PasteText() { if (!CanPaste()) return; CFX_WideString swClipboard; if (IFX_SystemHandler* pSH = GetSystemHandler()) swClipboard = pSH->GetClipboardText(GetAttachedHWnd()); if (m_pFillerNotify) { FX_BOOL bRC = TRUE; FX_BOOL bExit = FALSE; CFX_WideString strChangeEx; int nSelStart = 0; int nSelEnd = 0; GetSel(nSelStart, nSelEnd); m_pFillerNotify->OnBeforeKeyStroke(GetAttachedData(), swClipboard, strChangeEx, nSelStart, nSelEnd, TRUE, bRC, bExit, 0); if (!bRC) return; if (bExit) return; } if (swClipboard.GetLength() > 0) { Clear(); InsertText(swClipboard.c_str()); } }
bool CPWL_Edit::OnKeyDown(uint16_t nChar, uint32_t nFlag) { if (m_bMouseDown) return true; if (nChar == FWL_VKEY_Delete) { if (m_pFillerNotify) { bool bRC = true; bool bExit = false; CFX_WideString strChange; CFX_WideString strChangeEx; int nSelStart = 0; int nSelEnd = 0; GetSel(nSelStart, nSelEnd); if (nSelStart == nSelEnd) nSelEnd = nSelStart + 1; m_pFillerNotify->OnBeforeKeyStroke(GetAttachedData(), strChange, strChangeEx, nSelStart, nSelEnd, true, bRC, bExit, nFlag); if (!bRC) return false; if (bExit) return false; } } bool bRet = CPWL_EditCtrl::OnKeyDown(nChar, nFlag); // In case of implementation swallow the OnKeyDown event. if (IsProceedtoOnChar(nChar, nFlag)) return true; return bRet; }
CFX_Matrix CPWL_Wnd::GetWindowMatrix() const { CFX_Matrix mt = GetChildToRoot(); if (IPWL_Provider* pProvider = GetProvider()) { mt.Concat(pProvider->GetWindowMatrix(GetAttachedData())); return mt; } return mt; }
bool CPWL_Edit::OnChar(uint16_t nChar, uint32_t nFlag) { if (m_bMouseDown) return true; bool bRC = true; bool bExit = false; if (!IsCTRLpressed(nFlag)) { if (m_pFillerNotify) { CFX_WideString swChange; int nSelStart = 0; int nSelEnd = 0; GetSel(nSelStart, nSelEnd); switch (nChar) { case FWL_VKEY_Back: if (nSelStart == nSelEnd) nSelStart = nSelEnd - 1; break; case FWL_VKEY_Return: break; default: swChange += nChar; break; } CFX_WideString strChangeEx; m_pFillerNotify->OnBeforeKeyStroke(GetAttachedData(), swChange, strChangeEx, nSelStart, nSelEnd, true, bRC, bExit, nFlag); } } if (!bRC) return true; if (bExit) return false; if (IPVT_FontMap* pFontMap = GetFontMap()) { int32_t nOldCharSet = GetCharSet(); int32_t nNewCharSet = pFontMap->CharSetFromUnicode(nChar, FXFONT_DEFAULT_CHARSET); if (nOldCharSet != nNewCharSet) { SetCharSet(nNewCharSet); } } return CPWL_EditCtrl::OnChar(nChar, nFlag); }
FX_BOOL CPWL_Edit::OnChar(FX_WORD nChar, FX_DWORD nFlag) { if (m_bMouseDown) return TRUE; FX_BOOL bRC = TRUE; FX_BOOL bExit = FALSE; if (!IsCTRLpressed(nFlag)) { if (m_pFillerNotify) { CFX_WideString swChange; int nSelStart = 0; int nSelEnd = 0; GetSel(nSelStart, nSelEnd); switch (nChar) { case FWL_VKEY_Back: if (nSelStart == nSelEnd) nSelStart = nSelEnd - 1; break; case FWL_VKEY_Return: break; default: swChange += nChar; break; } CFX_WideString strChangeEx; m_pFillerNotify->OnBeforeKeyStroke(GetAttachedData(), swChange, strChangeEx, nSelStart, nSelEnd, TRUE, bRC, bExit, nFlag); } } if (!bRC) return TRUE; if (bExit) return FALSE; if (IFX_Edit_FontMap* pFontMap = GetFontMap()) { int32_t nOldCharSet = GetCharSet(); int32_t nNewCharSet = pFontMap->CharSetFromUnicode(nChar, DEFAULT_CHARSET); if (nOldCharSet != nNewCharSet) { SetCharSet(nNewCharSet); } } return CPWL_EditCtrl::OnChar(nChar, nFlag); }
void CPWL_ListBox::OnNotifySelChanged(bool bKeyDown, bool& bExit, uint32_t nFlag) { if (!m_pFillerNotify) return; bool bRC = true; CFX_WideString swChange = GetText(); CFX_WideString strChangeEx; int nSelStart = 0; int nSelEnd = swChange.GetLength(); m_pFillerNotify->OnBeforeKeyStroke(GetAttachedData(), swChange, strChangeEx, nSelStart, nSelEnd, bKeyDown, bRC, bExit, nFlag); }
void CPWL_ComboBox::SetPopup(FX_BOOL bPopup) { if (!m_pList) return; if (bPopup == m_bPopup) return; FX_FLOAT fListHeight = m_pList->GetContentRect().Height(); if (!IsFloatBigger(fListHeight,0.0f)) return; if (bPopup) { if (m_pFillerNotify) { FX_INT32 nWhere = 0; FX_FLOAT fPopupRet = 0.0f; FX_FLOAT fPopupMin = 0.0f; if (m_pList->GetCount() > 3) fPopupMin = m_pList->GetFirstHeight() * 3 + m_pList->GetBorderWidth() * 2; FX_FLOAT fPopupMax = fListHeight + m_pList->GetBorderWidth() * 2; m_pFillerNotify->QueryWherePopup(GetAttachedData(), fPopupMin,fPopupMax,nWhere,fPopupRet); if (IsFloatBigger(fPopupRet,0.0f)) { m_bPopup = bPopup; CPDF_Rect rcWindow = CPWL_Wnd::GetWindowRect(); m_rcOldWindow = rcWindow; switch (nWhere) { default: case 0: rcWindow.bottom -= fPopupRet; break; case 1: rcWindow.top += fPopupRet; break; } m_nPopupWhere = nWhere; Move(rcWindow, TRUE, TRUE); } } } else { m_bPopup = bPopup; Move(m_rcOldWindow, TRUE, TRUE); } }
bool CPWL_ListBox::OnNotifySelectionChanged(bool bKeyDown, uint32_t nFlag) { if (!m_pFillerNotify) return false; CPWL_Wnd::ObservedPtr thisObserved(this); WideString swChange = GetText(); WideString strChangeEx; int nSelStart = 0; int nSelEnd = swChange.GetLength(); bool bRC; bool bExit; std::tie(bRC, bExit) = m_pFillerNotify->OnBeforeKeyStroke( GetAttachedData(), swChange, strChangeEx, nSelStart, nSelEnd, bKeyDown, nFlag); if (!thisObserved) return false; return bExit; }