| Index: xfa/fwl/core/ifwl_datetimepicker.cpp
|
| diff --git a/xfa/fwl/core/ifwl_datetimepicker.cpp b/xfa/fwl/core/ifwl_datetimepicker.cpp
|
| index 844eb9ebe677fcba88ea30873b8fdceece94f561..90f85a08a70fb68fba5605e96a127750a5d8f360 100644
|
| --- a/xfa/fwl/core/ifwl_datetimepicker.cpp
|
| +++ b/xfa/fwl/core/ifwl_datetimepicker.cpp
|
| @@ -35,8 +35,6 @@ IFWL_DateTimePicker::IFWL_DateTimePicker(
|
| m_bLBtnDown(FALSE) {
|
| m_rtBtn.Set(0, 0, 0, 0);
|
|
|
| - SetDelegate(pdfium::MakeUnique<CFWL_DateTimePickerImpDelegate>(this));
|
| -
|
| m_pProperties->m_dwStyleExes = FWL_STYLEEXT_DTP_ShortDateFormat;
|
| CFWL_WidgetImpProperties propMonth;
|
| propMonth.m_dwStyles = FWL_WGTSTYLE_Popup | FWL_WGTSTYLE_Border;
|
| @@ -520,7 +518,7 @@ void IFWL_DateTimePicker::DisForm_ShowMonthCalendar(FX_BOOL bActivate) {
|
| CFWL_MsgSetFocus msg;
|
| msg.m_pDstTarget = m_pMonthCal.get();
|
| msg.m_pSrcTarget = m_pEdit.get();
|
| - m_pEdit->GetCurrentDelegate()->OnProcessMessage(&msg);
|
| + m_pEdit->GetDelegate()->OnProcessMessage(&msg);
|
| }
|
| CFX_RectF rtInvalidate, rtCal;
|
| rtInvalidate.Set(0, 0, m_pProperties->m_rtWidget.width,
|
| @@ -643,50 +641,40 @@ FWL_Error IFWL_DateTimePicker::DisForm_DrawWidget(CFX_Graphics* pGraphics,
|
| return FWL_Error::Succeeded;
|
| }
|
|
|
| -CFWL_DateTimePickerImpDelegate::CFWL_DateTimePickerImpDelegate(
|
| - IFWL_DateTimePicker* pOwner)
|
| - : m_pOwner(pOwner) {}
|
| -
|
| -void CFWL_DateTimePickerImpDelegate::OnProcessMessage(CFWL_Message* pMessage) {
|
| +void IFWL_DateTimePicker::OnProcessMessage(CFWL_Message* pMessage) {
|
| if (!pMessage)
|
| return;
|
|
|
| switch (pMessage->GetClassID()) {
|
| - case CFWL_MessageType::SetFocus: {
|
| + case CFWL_MessageType::SetFocus:
|
| OnFocusChanged(pMessage, TRUE);
|
| break;
|
| - }
|
| - case CFWL_MessageType::KillFocus: {
|
| + case CFWL_MessageType::KillFocus:
|
| OnFocusChanged(pMessage, FALSE);
|
| break;
|
| - }
|
| case CFWL_MessageType::Mouse: {
|
| CFWL_MsgMouse* pMouse = static_cast<CFWL_MsgMouse*>(pMessage);
|
| switch (pMouse->m_dwCmd) {
|
| - case FWL_MouseCommand::LeftButtonDown: {
|
| + case FWL_MouseCommand::LeftButtonDown:
|
| OnLButtonDown(pMouse);
|
| break;
|
| - }
|
| - case FWL_MouseCommand::LeftButtonUp: {
|
| + case FWL_MouseCommand::LeftButtonUp:
|
| OnLButtonUp(pMouse);
|
| break;
|
| - }
|
| - case FWL_MouseCommand::Move: {
|
| + case FWL_MouseCommand::Move:
|
| OnMouseMove(pMouse);
|
| break;
|
| - }
|
| - case FWL_MouseCommand::Leave: {
|
| + case FWL_MouseCommand::Leave:
|
| OnMouseLeave(pMouse);
|
| break;
|
| - }
|
| default:
|
| break;
|
| }
|
| break;
|
| }
|
| case CFWL_MessageType::Key: {
|
| - if (m_pOwner->m_pEdit->GetStates() & FWL_WGTSTATE_Focused) {
|
| - m_pOwner->m_pEdit->GetCurrentDelegate()->OnProcessMessage(pMessage);
|
| + if (m_pEdit->GetStates() & FWL_WGTSTATE_Focused) {
|
| + m_pEdit->GetDelegate()->OnProcessMessage(pMessage);
|
| return;
|
| }
|
| break;
|
| @@ -695,114 +683,105 @@ void CFWL_DateTimePickerImpDelegate::OnProcessMessage(CFWL_Message* pMessage) {
|
| break;
|
| }
|
|
|
| - CFWL_WidgetImpDelegate::OnProcessMessage(pMessage);
|
| + IFWL_Widget::OnProcessMessage(pMessage);
|
| }
|
|
|
| -void CFWL_DateTimePickerImpDelegate::OnDrawWidget(CFX_Graphics* pGraphics,
|
| - const CFX_Matrix* pMatrix) {
|
| - m_pOwner->DrawWidget(pGraphics, pMatrix);
|
| +void IFWL_DateTimePicker::OnDrawWidget(CFX_Graphics* pGraphics,
|
| + const CFX_Matrix* pMatrix) {
|
| + DrawWidget(pGraphics, pMatrix);
|
| }
|
|
|
| -void CFWL_DateTimePickerImpDelegate::OnFocusChanged(CFWL_Message* pMsg,
|
| - FX_BOOL bSet) {
|
| +void IFWL_DateTimePicker::OnFocusChanged(CFWL_Message* pMsg, FX_BOOL bSet) {
|
| if (!pMsg)
|
| return;
|
| - if (m_pOwner->m_pWidgetMgr->IsFormDisabled()) {
|
| + if (m_pWidgetMgr->IsFormDisabled())
|
| return DisForm_OnFocusChanged(pMsg, bSet);
|
| - }
|
| +
|
| if (bSet) {
|
| - m_pOwner->m_pProperties->m_dwStates |= (FWL_WGTSTATE_Focused);
|
| - m_pOwner->Repaint(&m_pOwner->m_rtClient);
|
| + m_pProperties->m_dwStates |= (FWL_WGTSTATE_Focused);
|
| + Repaint(&m_rtClient);
|
| } else {
|
| - m_pOwner->m_pProperties->m_dwStates &= ~(FWL_WGTSTATE_Focused);
|
| - m_pOwner->Repaint(&m_pOwner->m_rtClient);
|
| + m_pProperties->m_dwStates &= ~(FWL_WGTSTATE_Focused);
|
| + Repaint(&m_rtClient);
|
| }
|
| - if (pMsg->m_pSrcTarget == m_pOwner->m_pMonthCal.get() &&
|
| - m_pOwner->IsMonthCalendarShowed()) {
|
| - m_pOwner->ShowMonthCalendar(FALSE);
|
| + if (pMsg->m_pSrcTarget == m_pMonthCal.get() && IsMonthCalendarShowed()) {
|
| + ShowMonthCalendar(FALSE);
|
| }
|
| - m_pOwner->Repaint(&m_pOwner->m_rtClient);
|
| + Repaint(&m_rtClient);
|
| }
|
|
|
| -void CFWL_DateTimePickerImpDelegate::OnLButtonDown(CFWL_MsgMouse* pMsg) {
|
| +void IFWL_DateTimePicker::OnLButtonDown(CFWL_MsgMouse* pMsg) {
|
| if (!pMsg)
|
| return;
|
| - if ((m_pOwner->m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) == 0) {
|
| - m_pOwner->SetFocus(TRUE);
|
| - }
|
| - if (m_pOwner->m_rtBtn.Contains(pMsg->m_fx, pMsg->m_fy)) {
|
| - if (m_pOwner->IsMonthCalendarShowed()) {
|
| - m_pOwner->ShowMonthCalendar(FALSE);
|
| + if ((m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) == 0)
|
| + SetFocus(TRUE);
|
| + if (m_rtBtn.Contains(pMsg->m_fx, pMsg->m_fy)) {
|
| + if (IsMonthCalendarShowed()) {
|
| + ShowMonthCalendar(FALSE);
|
| CFWL_Event_DtpCloseUp ev;
|
| - m_pOwner->DispatchEvent(&ev);
|
| + DispatchEvent(&ev);
|
| } else {
|
| - if (!(m_pOwner->m_pProperties->m_dwStyleExes &
|
| - FWL_STYLEEXT_DTP_TimeFormat)) {
|
| - m_pOwner->ShowMonthCalendar(TRUE);
|
| + if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_DTP_TimeFormat)) {
|
| + ShowMonthCalendar(TRUE);
|
| CFWL_Event_DtpDropDown ev;
|
| - m_pOwner->DispatchEvent(&ev);
|
| - } else {
|
| + DispatchEvent(&ev);
|
| }
|
| - m_pOwner->m_bLBtnDown = TRUE;
|
| - m_pOwner->Repaint(&m_pOwner->m_rtClient);
|
| + m_bLBtnDown = TRUE;
|
| + Repaint(&m_rtClient);
|
| }
|
| }
|
| }
|
|
|
| -void CFWL_DateTimePickerImpDelegate::OnLButtonUp(CFWL_MsgMouse* pMsg) {
|
| +void IFWL_DateTimePicker::OnLButtonUp(CFWL_MsgMouse* pMsg) {
|
| if (!pMsg)
|
| return;
|
| - m_pOwner->m_bLBtnDown = FALSE;
|
| - if (m_pOwner->m_rtBtn.Contains(pMsg->m_fx, pMsg->m_fy)) {
|
| - m_pOwner->m_iBtnState = CFWL_PartState_Hovered;
|
| - } else {
|
| - m_pOwner->m_iBtnState = CFWL_PartState_Normal;
|
| - }
|
| - m_pOwner->Repaint(&m_pOwner->m_rtBtn);
|
| +
|
| + m_bLBtnDown = FALSE;
|
| + if (m_rtBtn.Contains(pMsg->m_fx, pMsg->m_fy))
|
| + m_iBtnState = CFWL_PartState_Hovered;
|
| + else
|
| + m_iBtnState = CFWL_PartState_Normal;
|
| + Repaint(&m_rtBtn);
|
| }
|
|
|
| -void CFWL_DateTimePickerImpDelegate::OnMouseMove(CFWL_MsgMouse* pMsg) {
|
| - if (m_pOwner->m_rtBtn.Contains(pMsg->m_fx, pMsg->m_fy)) {
|
| - } else {
|
| - m_pOwner->m_iBtnState = CFWL_PartState_Normal;
|
| - }
|
| - m_pOwner->Repaint(&m_pOwner->m_rtBtn);
|
| +void IFWL_DateTimePicker::OnMouseMove(CFWL_MsgMouse* pMsg) {
|
| + if (!m_rtBtn.Contains(pMsg->m_fx, pMsg->m_fy))
|
| + m_iBtnState = CFWL_PartState_Normal;
|
| +
|
| + Repaint(&m_rtBtn);
|
| }
|
|
|
| -void CFWL_DateTimePickerImpDelegate::OnMouseLeave(CFWL_MsgMouse* pMsg) {
|
| +void IFWL_DateTimePicker::OnMouseLeave(CFWL_MsgMouse* pMsg) {
|
| if (!pMsg)
|
| return;
|
| - m_pOwner->m_iBtnState = CFWL_PartState_Normal;
|
| - m_pOwner->Repaint(&m_pOwner->m_rtBtn);
|
| + m_iBtnState = CFWL_PartState_Normal;
|
| + Repaint(&m_rtBtn);
|
| }
|
|
|
| -void CFWL_DateTimePickerImpDelegate::DisForm_OnFocusChanged(CFWL_Message* pMsg,
|
| - FX_BOOL bSet) {
|
| - CFX_RectF rtInvalidate(m_pOwner->m_rtBtn);
|
| +void IFWL_DateTimePicker::DisForm_OnFocusChanged(CFWL_Message* pMsg,
|
| + FX_BOOL bSet) {
|
| + CFX_RectF rtInvalidate(m_rtBtn);
|
| if (bSet) {
|
| - m_pOwner->m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused;
|
| - if (m_pOwner->m_pEdit &&
|
| - !(m_pOwner->m_pEdit->GetStylesEx() & FWL_STYLEEXT_EDT_ReadOnly)) {
|
| - m_pOwner->m_rtBtn.Set(m_pOwner->m_pProperties->m_rtWidget.width, 0,
|
| - m_pOwner->m_fBtn,
|
| - m_pOwner->m_pProperties->m_rtWidget.height - 1);
|
| + m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused;
|
| + if (m_pEdit && !(m_pEdit->GetStylesEx() & FWL_STYLEEXT_EDT_ReadOnly)) {
|
| + m_rtBtn.Set(m_pProperties->m_rtWidget.width, 0, m_fBtn,
|
| + m_pProperties->m_rtWidget.height - 1);
|
| }
|
| - rtInvalidate = m_pOwner->m_rtBtn;
|
| - pMsg->m_pDstTarget = m_pOwner->m_pEdit.get();
|
| - m_pOwner->m_pEdit->GetCurrentDelegate()->OnProcessMessage(pMsg);
|
| + rtInvalidate = m_rtBtn;
|
| + pMsg->m_pDstTarget = m_pEdit.get();
|
| + m_pEdit->GetDelegate()->OnProcessMessage(pMsg);
|
| } else {
|
| - m_pOwner->m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused;
|
| - m_pOwner->m_rtBtn.Set(0, 0, 0, 0);
|
| - if (m_pOwner->DisForm_IsMonthCalendarShowed()) {
|
| - m_pOwner->ShowMonthCalendar(FALSE);
|
| - }
|
| - if (m_pOwner->m_pEdit->GetStates() & FWL_WGTSTATE_Focused) {
|
| - pMsg->m_pSrcTarget = m_pOwner->m_pEdit.get();
|
| - m_pOwner->m_pEdit->GetCurrentDelegate()->OnProcessMessage(pMsg);
|
| + m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused;
|
| + m_rtBtn.Set(0, 0, 0, 0);
|
| + if (DisForm_IsMonthCalendarShowed())
|
| + ShowMonthCalendar(FALSE);
|
| + if (m_pEdit->GetStates() & FWL_WGTSTATE_Focused) {
|
| + pMsg->m_pSrcTarget = m_pEdit.get();
|
| + m_pEdit->GetDelegate()->OnProcessMessage(pMsg);
|
| }
|
| }
|
| rtInvalidate.Inflate(2, 2);
|
| - m_pOwner->Repaint(&rtInvalidate);
|
| + Repaint(&rtInvalidate);
|
| }
|
|
|
| IFWL_DateTimePicker::CFWL_MonthCalendarImpDP::CFWL_MonthCalendarImpDP() {
|
|
|