Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(876)

Unified Diff: xfa/fwl/core/ifwl_monthcalendar.cpp

Issue 2491443003: Fold IFWL_DateTimeCalendar into IFWL_MonthCalendar (Closed)
Patch Set: Rebase to master Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « xfa/fwl/core/ifwl_monthcalendar.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: xfa/fwl/core/ifwl_monthcalendar.cpp
diff --git a/xfa/fwl/core/ifwl_monthcalendar.cpp b/xfa/fwl/core/ifwl_monthcalendar.cpp
index 7351e7e29a7a0d0b191f3103f6a38b23e9e70e01..dcc66fe677af3d774762a87560e84b13c78b4f9f 100644
--- a/xfa/fwl/core/ifwl_monthcalendar.cpp
+++ b/xfa/fwl/core/ifwl_monthcalendar.cpp
@@ -14,6 +14,8 @@
#include "xfa/fwl/core/cfwl_themebackground.h"
#include "xfa/fwl/core/cfwl_themetext.h"
#include "xfa/fwl/core/fwl_noteimp.h"
+#include "xfa/fwl/core/ifwl_datetimepicker.h"
+#include "xfa/fwl/core/ifwl_formproxy.h"
#include "xfa/fwl/core/ifwl_monthcalendar.h"
#include "xfa/fwl/core/ifwl_themeprovider.h"
@@ -133,7 +135,8 @@ IFWL_MonthCalendar::IFWL_MonthCalendar(
m_iHovered(-1),
m_iLBtnPartStates(CFWL_PartState_Normal),
m_iRBtnPartStates(CFWL_PartState_Normal),
- m_iMaxSel(1) {
+ m_iMaxSel(1),
+ m_bFlag(false) {
m_rtHead.Reset();
m_rtWeek.Reset();
m_rtLBtn.Reset();
@@ -1016,10 +1019,8 @@ void IFWL_MonthCalendar::OnProcessMessage(CFWL_Message* pMessage) {
CFWL_MessageType dwMsgCode = pMessage->GetClassID();
switch (dwMsgCode) {
case CFWL_MessageType::SetFocus:
- OnFocusChanged(pMessage, true);
- break;
case CFWL_MessageType::KillFocus:
- OnFocusChanged(pMessage, false);
+ GetOuter()->GetDelegate()->OnProcessMessage(pMessage);
break;
case CFWL_MessageType::Key:
break;
@@ -1054,15 +1055,6 @@ void IFWL_MonthCalendar::OnDrawWidget(CFX_Graphics* pGraphics,
DrawWidget(pGraphics, pMatrix);
}
-void IFWL_MonthCalendar::OnFocusChanged(CFWL_Message* pMsg, bool bSet) {
- if (bSet)
- m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused;
- else
- m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused;
-
- Repaint(&m_rtClient);
-}
-
void IFWL_MonthCalendar::OnLButtonDown(CFWL_MsgMouse* pMsg) {
if (m_rtLBtn.Contains(pMsg->m_fx, pMsg->m_fy)) {
m_iLBtnPartStates = CFWL_PartState_Pressed;
@@ -1078,49 +1070,88 @@ void IFWL_MonthCalendar::OnLButtonDown(CFWL_MsgMouse* pMsg) {
Repaint(&m_rtClient);
}
} else {
- if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_MCD_MultiSelect)) {
- int32_t iOldSel = 0;
- if (m_arrSelDays.GetSize() <= 0)
- return;
- iOldSel = m_arrSelDays[0];
-
- int32_t iCurSel = GetDayAtPoint(pMsg->m_fx, pMsg->m_fy);
- bool bSelChanged = iCurSel > 0 && iCurSel != iOldSel;
- if (bSelChanged) {
- FWL_DATEINFO* lpDatesInfo = m_arrDates.GetAt(iCurSel - 1);
- CFX_RectF rtInvalidate(lpDatesInfo->rect);
- if (iOldSel > 0) {
- lpDatesInfo = m_arrDates.GetAt(iOldSel - 1);
- rtInvalidate.Union(lpDatesInfo->rect);
- }
- AddSelDay(iCurSel);
- CFWL_EvtClick wmClick;
- wmClick.m_pSrcTarget = this;
- DispatchEvent(&wmClick);
- CFWL_EventMcdDateChanged wmDateSelected;
- wmDateSelected.m_iStartDay = iCurSel;
- wmDateSelected.m_iEndDay = iCurSel;
- wmDateSelected.m_iOldMonth = m_iCurMonth;
- wmDateSelected.m_iOldYear = m_iCurYear;
- wmDateSelected.m_pSrcTarget = this;
- DispatchEvent(&wmDateSelected);
- Repaint(&rtInvalidate);
- }
- }
+ IFWL_DateTimePicker* pIPicker = static_cast<IFWL_DateTimePicker*>(m_pOuter);
+ if (pIPicker->IsMonthCalendarShowed())
+ m_bFlag = 1;
}
}
void IFWL_MonthCalendar::OnLButtonUp(CFWL_MsgMouse* pMsg) {
+ if (m_pWidgetMgr->IsFormDisabled())
+ return DisForm_OnLButtonUp(pMsg);
+
if (m_rtLBtn.Contains(pMsg->m_fx, pMsg->m_fy)) {
m_iLBtnPartStates = 0;
Repaint(&m_rtLBtn);
- } else if (m_rtRBtn.Contains(pMsg->m_fx, pMsg->m_fy)) {
+ return;
+ }
+ if (m_rtRBtn.Contains(pMsg->m_fx, pMsg->m_fy)) {
m_iRBtnPartStates = 0;
Repaint(&m_rtRBtn);
- } else if (m_rtDates.Contains(pMsg->m_fx, pMsg->m_fy)) {
- int32_t iDay = GetDayAtPoint(pMsg->m_fx, pMsg->m_fy);
- if (iDay != -1)
- AddSelDay(iDay);
+ return;
+ }
+ if (m_rtToday.Contains(pMsg->m_fx, pMsg->m_fy))
+ return;
+
+ int32_t iOldSel = 0;
+ if (m_arrSelDays.GetSize() > 0)
+ iOldSel = m_arrSelDays[0];
+
+ int32_t iCurSel = GetDayAtPoint(pMsg->m_fx, pMsg->m_fy);
+ CFX_RectF rt;
+ IFWL_DateTimePicker* pIPicker = static_cast<IFWL_DateTimePicker*>(m_pOuter);
+ pIPicker->GetFormProxy()->GetWidgetRect(rt);
+ rt.Set(0, 0, rt.width, rt.height);
+ if (iCurSel > 0) {
+ FWL_DATEINFO* lpDatesInfo = m_arrDates.GetAt(iCurSel - 1);
+ CFX_RectF rtInvalidate(lpDatesInfo->rect);
+ if (iOldSel > 0 && iOldSel <= m_arrDates.GetSize()) {
+ lpDatesInfo = m_arrDates.GetAt(iOldSel - 1);
+ rtInvalidate.Union(lpDatesInfo->rect);
+ }
+ AddSelDay(iCurSel);
+ if (!m_pOuter)
+ return;
+
+ pIPicker->ProcessSelChanged(m_iCurYear, m_iCurMonth, iCurSel);
+ pIPicker->ShowMonthCalendar(false);
+ } else if (m_bFlag && (!rt.Contains(pMsg->m_fx, pMsg->m_fy))) {
+ pIPicker->ShowMonthCalendar(false);
+ }
+ m_bFlag = 0;
+}
+
+void IFWL_MonthCalendar::DisForm_OnLButtonUp(CFWL_MsgMouse* pMsg) {
+ if (m_rtLBtn.Contains(pMsg->m_fx, pMsg->m_fy)) {
+ m_iLBtnPartStates = 0;
+ Repaint(&(m_rtLBtn));
+ return;
+ }
+ if (m_rtRBtn.Contains(pMsg->m_fx, pMsg->m_fy)) {
+ m_iRBtnPartStates = 0;
+ Repaint(&(m_rtRBtn));
+ return;
+ }
+ if (m_rtToday.Contains(pMsg->m_fx, pMsg->m_fy))
+ return;
+
+ int32_t iOldSel = 0;
+ if (m_arrSelDays.GetSize() > 0)
+ iOldSel = m_arrSelDays[0];
+
+ int32_t iCurSel = GetDayAtPoint(pMsg->m_fx, pMsg->m_fy);
+ if (iCurSel > 0) {
+ FWL_DATEINFO* lpDatesInfo = m_arrDates.GetAt(iCurSel - 1);
+ CFX_RectF rtInvalidate(lpDatesInfo->rect);
+ if (iOldSel > 0 && iOldSel <= m_arrDates.GetSize()) {
+ lpDatesInfo = m_arrDates.GetAt(iOldSel - 1);
+ rtInvalidate.Union(lpDatesInfo->rect);
+ }
+ AddSelDay(iCurSel);
+ IFWL_DateTimePicker* pDateTime =
+ static_cast<IFWL_DateTimePicker*>(m_pOuter);
+ pDateTime->ProcessSelChanged(m_iCurYear, m_iCurMonth, iCurSel);
+ pDateTime->ShowMonthCalendar(false);
}
}
« no previous file with comments | « xfa/fwl/core/ifwl_monthcalendar.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698