IFWL_Widget* CFWL_WidgetMgr::GetWidgetAtPoint(IFWL_Widget* parent, FX_FLOAT x, FX_FLOAT y) { if (!parent) return nullptr; FX_FLOAT x1; FX_FLOAT y1; IFWL_Widget* child = GetLastChildWidget(parent); while (child) { if ((child->GetStates() & FWL_WGTSTATE_Invisible) == 0) { x1 = x; y1 = y; CFX_Matrix matrixOnParent; child->GetMatrix(matrixOnParent); CFX_Matrix m; m.SetIdentity(); m.SetReverse(matrixOnParent); m.TransformPoint(x1, y1); CFX_RectF bounds; child->GetWidgetRect(bounds); if (bounds.Contains(x1, y1)) { x1 -= bounds.left; y1 -= bounds.top; return GetWidgetAtPoint(child, x1, y1); } } child = GetPriorSiblingWidget(child); } return parent; }
void CFWL_WidgetMgrDelegate::OnProcessMessageToForm(CFWL_Message* pMessage) { if (!pMessage) return; if (!pMessage->m_pDstTarget) return; IFWL_Widget* pDstWidget = pMessage->m_pDstTarget; IFWL_App* pApp = pDstWidget->GetOwnerApp(); if (!pApp) return; CFWL_NoteDriver* pNoteDriver = static_cast<CFWL_NoteDriver*>(pApp->GetNoteDriver()); if (!pNoteDriver) return; if (m_pWidgetMgr->IsThreadEnabled()) pMessage = static_cast<CFWL_Message*>(pMessage->Clone()); if (m_pWidgetMgr->IsFormDisabled()) pNoteDriver->ProcessMessage(pMessage); else pNoteDriver->QueueMessage(pMessage); #if (_FX_OS_ == _FX_MACOSX_) CFWL_NoteLoop* pTopLoop = pNoteDriver->GetTopLoop(); if (pTopLoop) pNoteDriver->UnqueueMessage(pTopLoop); #endif if (m_pWidgetMgr->IsThreadEnabled()) pMessage->Release(); return; }
FX_BOOL CFWL_NoteDriver::DoDeactivate(CFWL_MsgDeactivate* pMsg, IFWL_Widget* pMessageForm) { if (m_bFullScreen) { return FALSE; } int32_t iTrackLoop = m_noteLoopQueue.GetSize(); if (iTrackLoop <= 0) return FALSE; if (iTrackLoop == 1) { if (pMessageForm->IsInstance(FX_WSTRC(L"FWL_FORMPROXY"))) { return FALSE; } if (pMsg->m_pSrcTarget && pMsg->m_pSrcTarget->IsInstance(FX_WSTRC(L"FWL_FORMPROXY"))) { return FALSE; } if (pMsg->m_pSrcTarget && pMsg->m_pSrcTarget->GetClassID() == 1111984755) { return FALSE; } return TRUE; } IFWL_Widget* pDst = pMsg->m_pDstTarget; if (!pDst) return FALSE; #if (_FX_OS_ == _FX_MACOSX_) if (pDst == pMessageForm && pDst->IsInstance(L"FWL_FORMPROXY")) { return TRUE; } #endif return pDst != pMessageForm && !pDst->IsInstance(FX_WSTRC(L"FWL_FORMPROXY")) && !pMessageForm->IsInstance(FX_WSTRC(L"FWL_FORMPROXY")); }
bool CXFA_FFDateTimeEdit::LoadWidget() { CFWL_DateTimePicker* pWidget = new CFWL_DateTimePicker(GetFWLApp()); pWidget->Initialize(); m_pNormalWidget = pWidget; m_pNormalWidget->SetLayoutItem(this); IFWL_Widget* pIWidget = m_pNormalWidget->GetWidget(); CFWL_NoteDriver* pNoteDriver = pIWidget->GetOwnerApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(pIWidget, pIWidget); m_pOldDelegate = m_pNormalWidget->GetDelegate(); m_pNormalWidget->SetDelegate(this); m_pNormalWidget->LockUpdate(); CFX_WideString wsText; m_pDataAcc->GetValue(wsText, XFA_VALUEPICTURE_Display); pWidget->SetEditText(wsText); if (CXFA_Value value = m_pDataAcc->GetFormValue()) { switch (value.GetChildValueClassID()) { case XFA_Element::Date: { if (!wsText.IsEmpty()) { CXFA_LocaleValue lcValue = XFA_GetLocaleValue(m_pDataAcc); CFX_Unitime date = lcValue.GetDate(); if ((FX_UNITIME)date != 0) { pWidget->SetCurSel(date.GetYear(), date.GetMonth(), date.GetDay()); } } } break; default: break; } } UpdateWidgetProperty(); m_pNormalWidget->UnlockUpdate(); return CXFA_FFField::LoadWidget(); }
bool CXFA_FFComboBox::LoadWidget() { CFWL_ComboBox* pComboBox = new CFWL_ComboBox(GetFWLApp()); pComboBox->Initialize(); m_pNormalWidget = (CFWL_Widget*)pComboBox; m_pNormalWidget->SetLayoutItem(this); IFWL_Widget* pWidget = m_pNormalWidget->GetWidget(); CFWL_NoteDriver* pNoteDriver = pWidget->GetOwnerApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(pWidget, pWidget); m_pOldDelegate = m_pNormalWidget->GetDelegate(); m_pNormalWidget->SetDelegate(this); m_pNormalWidget->LockUpdate(); CFX_WideStringArray wsLabelArray; m_pDataAcc->GetChoiceListItems(wsLabelArray, false); int32_t iItems = wsLabelArray.GetSize(); for (int32_t i = 0; i < iItems; i++) { pComboBox->AddString(wsLabelArray[i].AsStringC()); } CFX_Int32Array iSelArray; m_pDataAcc->GetSelectedItems(iSelArray); int32_t iSelCount = iSelArray.GetSize(); if (iSelCount > 0) { pComboBox->SetCurSel(iSelArray[0]); } else { CFX_WideString wsText; m_pDataAcc->GetValue(wsText, XFA_VALUEPICTURE_Raw); pComboBox->SetEditText(wsText); } UpdateWidgetProperty(); m_pNormalWidget->UnlockUpdate(); return CXFA_FFField::LoadWidget(); }
void IFWL_Widget::GetMatrix(CFX_Matrix& matrix, bool bGlobal) { if (!m_pProperties) return; if (!bGlobal) { matrix.SetIdentity(); return; } IFWL_Widget* parent = GetParent(); CFX_ArrayTemplate<IFWL_Widget*> parents; while (parent) { parents.Add(parent); parent = parent->GetParent(); } matrix.SetIdentity(); CFX_Matrix ctmOnParent; CFX_RectF rect; int32_t count = parents.GetSize(); for (int32_t i = count - 2; i >= 0; i--) { parent = parents.GetAt(i); parent->GetMatrix(ctmOnParent, false); parent->GetWidgetRect(rect); matrix.Concat(ctmOnParent, true); matrix.Translate(rect.left, rect.top, true); } CFX_Matrix m; m.SetIdentity(); matrix.Concat(m, true); parents.RemoveAll(); }
FX_BOOL CFWL_NoteDriver::DoMouseEx(CFWL_MsgMouse* pMsg, IFWL_Widget* pMessageForm) { CFWL_WidgetMgr* pWidgetMgr = static_cast<CFWL_WidgetMgr*>(FWL_GetWidgetMgr()); if (!pWidgetMgr) return FALSE; IFWL_Widget* pTarget = NULL; if (m_pGrab) pTarget = m_pGrab; if (!pTarget) { pTarget = pWidgetMgr->GetWidgetAtPoint(pMessageForm, pMsg->m_fx, pMsg->m_fy); while (pTarget && pTarget->GetClassID() == FWL_CLASSHASH_Grid) { pTarget = pTarget->GetParent(); } } if (pTarget) { if (pMessageForm != pTarget) { pMessageForm->TransformTo(pTarget, pMsg->m_fx, pMsg->m_fy); } } if (!pTarget) return FALSE; pMsg->m_pDstTarget = pTarget; return TRUE; }
FWL_Error CFWL_WidgetMgr::RepaintWidget(IFWL_Widget* pWidget, const CFX_RectF* pRect) { if (!m_pAdapter) return FWL_Error::Indefinite; IFWL_Widget* pNative = pWidget; CFX_RectF rect(*pRect); if (IsFormDisabled()) { IFWL_Widget* pOuter = pWidget->GetOuter(); while (pOuter) { CFX_RectF rtTemp; pNative->GetWidgetRect(rtTemp); rect.left += rtTemp.left; rect.top += rtTemp.top; pNative = pOuter; pOuter = pOuter->GetOuter(); } } else if (!IsAbleNative(pWidget)) { pNative = GetSystemFormWidget(pWidget); if (!pNative) return FWL_Error::Indefinite; pWidget->TransformTo(pNative, rect.left, rect.top); } AddRedrawCounts(pNative); return m_pAdapter->RepaintWidget(pNative, &rect); }
void IFWL_ComboList::ClientToOuter(FX_FLOAT& fx, FX_FLOAT& fy) { fx += m_pProperties->m_rtWidget.left, fy += m_pProperties->m_rtWidget.top; IFWL_Widget* pOwner = GetOwner(); if (!pOwner) return; pOwner->TransformTo(m_pOuter, fx, fy); }
void CFWL_NoteDriver::MouseSecondary(CFWL_MsgMouse* pMsg) { IFWL_Widget* pTarget = pMsg->m_pDstTarget; if (pTarget == m_pHover) { return; } if (m_pHover) { CFWL_MsgMouse msLeave; msLeave.m_pDstTarget = m_pHover; msLeave.m_fx = pMsg->m_fx; msLeave.m_fy = pMsg->m_fy; pTarget->TransformTo(m_pHover, msLeave.m_fx, msLeave.m_fy); msLeave.m_dwFlags = 0; msLeave.m_dwCmd = FWL_MSGMOUSECMD_MouseLeave; DispatchMessage(&msLeave, NULL); } if (pTarget->GetClassID() == FWL_CLASSHASH_Form) { m_pHover = NULL; return; } m_pHover = pTarget; CFWL_MsgMouse msHover; msHover.m_pDstTarget = pTarget; msHover.m_fx = pMsg->m_fx; msHover.m_fy = pMsg->m_fy; msHover.m_dwFlags = 0; msHover.m_dwCmd = FWL_MSGMOUSECMD_MouseHover; DispatchMessage(&msHover, NULL); }
CXFA_FFListBox::~CXFA_FFListBox() { if (m_pNormalWidget) { IFWL_Widget* pWidget = m_pNormalWidget->GetWidget(); CFWL_NoteDriver* pNoteDriver = pWidget->GetOwnerApp()->GetNoteDriver(); pNoteDriver->UnregisterEventTarget(pWidget); } }
CXFA_FFWidget* XFA_ThemeGetOuterWidget(IFWL_Widget* pWidget) { IFWL_Widget* pOuter = pWidget; while (pOuter && pOuter->GetOuter()) pOuter = pOuter->GetOuter(); return pOuter ? static_cast<CXFA_FFWidget*>(pOuter->GetLayoutItem()) : nullptr; }
bool IFWL_Widget::IsParent(IFWL_Widget* pParent) { IFWL_Widget* pUpWidget = GetParent(); while (pUpWidget) { if (pUpWidget == pParent) return true; pUpWidget = pUpWidget->GetParent(); } return false; }
IFWL_Widget* IFWL_Widget::GetRootOuter() { IFWL_Widget* pRet = m_pOuter; if (!pRet) return nullptr; while (IFWL_Widget* pOuter = pRet->GetOuter()) pRet = pOuter; return pRet; }
static void FWL_SetChildThemeID(IFWL_Widget* pParent, uint32_t dwThemeID) { CFWL_WidgetMgr* pWidgetMgr = CFWL_WidgetMgr::GetInstance(); IFWL_Widget* pChild = pWidgetMgr->GetFirstChildWidget(pParent); while (pChild) { IFWL_ThemeProvider* pTheme = pChild->GetThemeProvider(); if (pTheme) { pTheme->SetThemeID(pChild, dwThemeID, FALSE); } FWL_SetChildThemeID(pChild, dwThemeID); pChild = pWidgetMgr->GetNextSiblingWidget(pChild); } }
void CFWL_WidgetMgrDelegate::DrawChild(IFWL_Widget* parent, const CFX_RectF& rtClip, CFX_Graphics* pGraphics, const CFX_Matrix* pMatrix) { if (!parent) return; FX_BOOL bFormDisable = m_pWidgetMgr->IsFormDisabled(); IFWL_Widget* pNextChild = m_pWidgetMgr->GetFirstChildWidget(parent); while (pNextChild) { IFWL_Widget* child = pNextChild; pNextChild = m_pWidgetMgr->GetNextSiblingWidget(child); if (child->GetStates() & FWL_WGTSTATE_Invisible) continue; CFX_RectF rtWidget; child->GetWidgetRect(rtWidget); if (rtWidget.IsEmpty()) continue; CFX_Matrix widgetMatrix; CFX_RectF clipBounds(rtWidget); if (!bFormDisable) child->GetMatrix(widgetMatrix, TRUE); if (pMatrix) widgetMatrix.Concat(*pMatrix); if (!bFormDisable) { widgetMatrix.TransformPoint(clipBounds.left, clipBounds.top); clipBounds.Intersect(rtClip); if (clipBounds.IsEmpty()) continue; pGraphics->SaveGraphState(); pGraphics->SetClipRect(clipBounds); } widgetMatrix.Translate(rtWidget.left, rtWidget.top, TRUE); IFWL_WidgetDelegate* pDelegate = child->SetDelegate(nullptr); if (pDelegate) { if (m_pWidgetMgr->IsFormDisabled() || IsNeedRepaint(child, &widgetMatrix, rtClip)) { pDelegate->OnDrawWidget(pGraphics, &widgetMatrix); } } if (!bFormDisable) pGraphics->RestoreGraphState(); DrawChild(child, clipBounds, pGraphics, bFormDisable ? &widgetMatrix : pMatrix); child = m_pWidgetMgr->GetNextSiblingWidget(child); } }
static void FWL_SetChildThemeID(IFWL_Widget* pParent, FX_DWORD dwThemeID) { IFWL_WidgetMgr* pWidgetMgr = FWL_GetWidgetMgr(); IFWL_Widget* pChild = pWidgetMgr->GetWidget(pParent, FWL_WGTRELATION_FirstChild); while (pChild) { IFWL_ThemeProvider* pTheme = pChild->GetThemeProvider(); if (pTheme) { pTheme->SetThemeID(pChild, dwThemeID, FALSE); } FWL_SetChildThemeID(pChild, dwThemeID); pChild = pWidgetMgr->GetWidget(pChild, FWL_WGTRELATION_NextSibling); } }
int32_t CFWL_DateTimeEditImpDelegate::OnProcessMessage(CFWL_Message* pMessage) { if (m_pOwner->m_pWidgetMgr->IsFormDisabled()) { return DisForm_OnProcessMessage(pMessage); } FX_DWORD dwHashCode = pMessage->GetClassID(); if (dwHashCode == FWL_MSGHASH_SetFocus || dwHashCode == FWL_MSGHASH_KillFocus) { IFWL_Widget* pOuter = m_pOwner->GetOuter(); IFWL_WidgetDelegate* pDelegate = pOuter->SetDelegate(NULL); pDelegate->OnProcessMessage(pMessage); } return 1; }
FX_BOOL CFWL_NoteDriver::DoWheel(CFWL_MsgMouseWheel* pMsg, IFWL_Widget* pMessageForm) { CFWL_WidgetMgr* pWidgetMgr = static_cast<CFWL_WidgetMgr*>(FWL_GetWidgetMgr()); if (!pWidgetMgr) return FALSE; IFWL_Widget* pDst = pWidgetMgr->GetWidgetAtPoint(pMessageForm, pMsg->m_fx, pMsg->m_fy); if (!pDst) return FALSE; while (pDst && pDst->GetClassID() == FWL_CLASSHASH_Grid) { pDst = pDst->GetParent(); } pMessageForm->TransformTo(pDst, pMsg->m_fx, pMsg->m_fy); pMsg->m_pDstTarget = pDst; return TRUE; }
IFWL_Widget* CFWL_WidgetMgr::GetRadioButtonGroupHeader( IFWL_Widget* pRadioButton) { IFWL_Widget* pNext = pRadioButton; while (pNext) { if (pNext->GetStyles() & FWL_WGTSTYLE_Group) return pNext; pNext = GetSiblingRadioButton(pNext, FALSE); } pNext = GetLastSiblingWidget(pRadioButton); while ((pNext = GetSiblingRadioButton(pNext, FALSE)) != nullptr && pNext != pRadioButton) { if (pNext->GetStyles() & FWL_WGTSTYLE_Group) return pNext; } pNext = GetFirstSiblingWidget(pRadioButton); return GetSiblingRadioButton(pNext, TRUE); }
IFWL_ThemeProvider* IFWL_Widget::GetAvailableTheme() { if (m_pProperties->m_pThemeProvider) return m_pProperties->m_pThemeProvider; IFWL_Widget* pUp = this; do { pUp = (pUp->GetStyles() & FWL_WGTSTYLE_Popup) ? m_pWidgetMgr->GetOwnerWidget(pUp) : m_pWidgetMgr->GetParentWidget(pUp); if (pUp) { IFWL_ThemeProvider* pRet = pUp->GetThemeProvider(); if (pRet) return pRet; } } while (pUp); return nullptr; }
int32_t CFWL_DateTimeCalendarImpDelegate::OnProcessMessage( CFWL_Message* pMessage) { FX_DWORD dwCode = pMessage->GetClassID(); if (dwCode == FWL_MSGHASH_SetFocus || dwCode == FWL_MSGHASH_KillFocus) { IFWL_Widget* pOuter = m_pOwner->GetOuter(); IFWL_WidgetDelegate* pDelegate = pOuter->SetDelegate(NULL); return pDelegate->OnProcessMessage(pMessage); } else if (dwCode == FWL_MSGHASH_Mouse) { CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage); if (pMsg->m_dwCmd == FWL_MSGMOUSECMD_LButtonDown) { OnLButtonDownEx(pMsg); return 1; } else if (pMsg->m_dwCmd == FWL_MSGMOUSECMD_LButtonUp) { OnLButtonUpEx(pMsg); return 1; } } return CFWL_MonthCalendarImpDelegate::OnProcessMessage(pMessage); }
bool CXFA_FFPushButton::LoadWidget() { ASSERT(!m_pNormalWidget); CFWL_PushButton* pPushButton = new CFWL_PushButton(GetFWLApp()); pPushButton->Initialize(); m_pOldDelegate = pPushButton->GetDelegate(); pPushButton->SetDelegate(this); m_pNormalWidget = pPushButton; m_pNormalWidget->SetLayoutItem(this); IFWL_Widget* pWidget = m_pNormalWidget->GetWidget(); CFWL_NoteDriver* pNoteDriver = pWidget->GetOwnerApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(pWidget, pWidget); m_pNormalWidget->LockUpdate(); UpdateWidgetProperty(); LoadHighlightCaption(); m_pNormalWidget->UnlockUpdate(); return CXFA_FFField::LoadWidget(); }
FX_BOOL CFWL_ScrollBarTP::DrawBackground(CFWL_ThemeBackground* pParams) { if (!pParams) return FALSE; IFWL_Widget* pWidget = pParams->m_pWidget; FWLTHEME_STATE eState = FWLTHEME_STATE_Normal; if (pParams->m_dwStates & CFWL_PartState_Hovered) eState = FWLTHEME_STATE_Hover; else if (pParams->m_dwStates & CFWL_PartState_Pressed) eState = FWLTHEME_STATE_Pressed; else if (pParams->m_dwStates & CFWL_PartState_Disabled) eState = FWLTHEME_STATE_Disabale; CFX_Graphics* pGraphics = pParams->m_pGraphics; CFX_RectF* pRect = &pParams->m_rtPart; FX_BOOL bVert = pWidget->GetStylesEx(); switch (pParams->m_iPart) { case CFWL_Part::ForeArrow: { DrawMaxMinBtn(pGraphics, pRect, bVert ? FWLTHEME_DIRECTION_Up : FWLTHEME_DIRECTION_Left, eState, &pParams->m_matrix); break; } case CFWL_Part::BackArrow: { DrawMaxMinBtn(pGraphics, pRect, bVert ? FWLTHEME_DIRECTION_Down : FWLTHEME_DIRECTION_Right, eState, &pParams->m_matrix); break; } case CFWL_Part::Thumb: { DrawThumbBtn(pGraphics, pRect, bVert, eState, TRUE, &pParams->m_matrix); break; } case CFWL_Part::LowerTrack: { DrawTrack(pGraphics, pRect, bVert, eState, TRUE, &pParams->m_matrix); break; } case CFWL_Part::UpperTrack: { DrawTrack(pGraphics, pRect, bVert, eState, FALSE, &pParams->m_matrix); break; } default: {} } return TRUE; }
CFX_SizeF IFWL_Widget::GetOffsetFromParent(IFWL_Widget* pParent) { if (pParent == this) return CFX_SizeF(); CFWL_WidgetMgr* pWidgetMgr = GetOwnerApp()->GetWidgetMgr(); if (!pWidgetMgr) return CFX_SizeF(); CFX_SizeF szRet(m_pProperties->m_rtWidget.left, m_pProperties->m_rtWidget.top); IFWL_Widget* pDstWidget = GetParent(); while (pDstWidget && pDstWidget != pParent) { CFX_RectF rtDst; pDstWidget->GetWidgetRect(rtDst); szRet += CFX_SizeF(rtDst.left, rtDst.top); pDstWidget = pWidgetMgr->GetParentWidget(pDstWidget); } return szRet; }
IFWL_Widget* CFWL_WidgetMgr::GetDefaultButton(IFWL_Widget* pParent) { if ((pParent->GetClassID() == FWL_Type::PushButton) && (pParent->GetStates() & (1 << (FWL_WGTSTATE_MAX + 2)))) { return pParent; } IFWL_Widget* child = CFWL_WidgetMgr::GetInstance()->GetFirstChildWidget(pParent); while (child) { if ((child->GetClassID() == FWL_Type::PushButton) && (child->GetStates() & (1 << (FWL_WGTSTATE_MAX + 2)))) { return child; } IFWL_Widget* find = GetDefaultButton(child); if (find) { return find; } child = CFWL_WidgetMgr::GetInstance()->GetNextSiblingWidget(child); } return nullptr; }
IFWL_Widget* CFWL_WidgetMgr::nextTab(IFWL_Widget* parent, IFWL_Widget* focus, FX_BOOL& bFind) { CFWL_WidgetMgr* pMgr = CFWL_WidgetMgr::GetInstance(); IFWL_Widget* child = pMgr->GetFirstChildWidget(parent); while (child) { if (focus == child) bFind = TRUE; if ((child->GetStyles() & FWL_WGTSTYLE_TabStop) && (!focus || (focus != child && bFind))) { return child; } IFWL_Widget* bRet = nextTab(child, focus, bFind); if (bRet) return bRet; child = pMgr->GetNextSiblingWidget(child); } return nullptr; }
bool CXFA_FFPasswordEdit::LoadWidget() { CFWL_Edit* pWidget = new CFWL_Edit(GetFWLApp()); pWidget->Initialize(); m_pNormalWidget = pWidget; m_pNormalWidget->SetLayoutItem(this); IFWL_Widget* pIWidget = m_pNormalWidget->GetWidget(); CFWL_NoteDriver* pNoteDriver = pIWidget->GetOwnerApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(pIWidget, pIWidget); m_pOldDelegate = m_pNormalWidget->GetDelegate(); m_pNormalWidget->SetDelegate(this); m_pNormalWidget->LockUpdate(); CFX_WideString wsText; m_pDataAcc->GetValue(wsText, XFA_VALUEPICTURE_Display); pWidget->SetText(wsText); UpdateWidgetProperty(); m_pNormalWidget->UnlockUpdate(); return CXFA_FFField::LoadWidget(); }
FX_BOOL CFWL_NoteDriver::SetFocus(IFWL_Widget* pFocus, FX_BOOL bNotify) { if (m_pFocus == pFocus) { return TRUE; } IFWL_Widget* pPrev = m_pFocus; m_pFocus = pFocus; if (pPrev) { CFWL_MsgKillFocus ms; ms.m_pDstTarget = pPrev; ms.m_pSrcTarget = pPrev; if (bNotify) { ms.m_dwExtend = 1; } IFWL_WidgetDelegate* pDelegate = pPrev->SetDelegate(NULL); if (pDelegate) { pDelegate->OnProcessMessage(&ms); } } if (pFocus) { IFWL_Widget* pWidget = FWL_GetWidgetMgr()->GetWidget(pFocus, FWL_WGTRELATION_SystemForm); CFWL_FormImp* pForm = pWidget ? static_cast<CFWL_FormImp*>(pWidget->GetImpl()) : nullptr; if (pForm) { CFWL_WidgetImp* pNewFocus = static_cast<CFWL_WidgetImp*>(pFocus->GetImpl()); pForm->SetSubFocus(pNewFocus); } CFWL_MsgSetFocus ms; ms.m_pDstTarget = pFocus; if (bNotify) { ms.m_dwExtend = 1; } IFWL_WidgetDelegate* pDelegate = pFocus->SetDelegate(NULL); if (pDelegate) { pDelegate->OnProcessMessage(&ms); } } return TRUE; }
bool CXFA_FFCheckButton::LoadWidget() { CFWL_CheckBox* pCheckBox = new CFWL_CheckBox(GetFWLApp()); pCheckBox->Initialize(); m_pNormalWidget = pCheckBox; m_pNormalWidget->SetLayoutItem(this); IFWL_Widget* pWidget = m_pNormalWidget->GetWidget(); CFWL_NoteDriver* pNoteDriver = pWidget->GetOwnerApp()->GetNoteDriver(); pNoteDriver->RegisterEventTarget(pWidget, pWidget); m_pOldDelegate = m_pNormalWidget->GetDelegate(); m_pNormalWidget->SetDelegate(this); if (m_pDataAcc->IsRadioButton()) pCheckBox->ModifyStylesEx(FWL_STYLEEXT_CKB_RadioButton, 0xFFFFFFFF); m_pNormalWidget->LockUpdate(); UpdateWidgetProperty(); SetFWLCheckState(m_pDataAcc->GetCheckState()); m_pNormalWidget->UnlockUpdate(); return CXFA_FFField::LoadWidget(); }