void IFWL_DateTimePicker::DisForm_OnFocusChanged(CFWL_Message* pMsg, bool bSet) { CFX_RectF rtInvalidate(m_rtBtn); if (bSet) { 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_rtBtn; pMsg->m_pDstTarget = m_pEdit.get(); m_pEdit->GetDelegate()->OnProcessMessage(pMsg); } else { m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused; m_rtBtn.Set(0, 0, 0, 0); if (DisForm_IsMonthCalendarVisible()) ShowMonthCalendar(false); if (m_pEdit->GetStates() & FWL_WGTSTATE_Focused) { pMsg->m_pSrcTarget = m_pEdit.get(); m_pEdit->GetDelegate()->OnProcessMessage(pMsg); } } rtInvalidate.Inflate(2, 2); Repaint(&rtInvalidate); }
void CFWL_DateTimePickerImpDelegate::DisForm_OnFocusChanged(CFWL_Message* pMsg, FX_BOOL bSet) { CFX_RectF rtInvalidate(m_pOwner->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); } rtInvalidate = m_pOwner->m_rtBtn; pMsg->m_pDstTarget = m_pOwner->m_pEdit.get(); IFWL_WidgetDelegate* pDelegate = m_pOwner->m_pEdit->SetDelegate(NULL); pDelegate->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(); IFWL_WidgetDelegate* pDelegate = m_pOwner->m_pEdit->SetDelegate(NULL); pDelegate->OnProcessMessage(pMsg); } } rtInvalidate.Inflate(2, 2); m_pOwner->Repaint(&rtInvalidate); }
void CFWL_DateTimeCalendarImpDelegate::OnLButtonUpEx(CFWL_MsgMouse* pMsg) { if (m_pOwner->m_pWidgetMgr->IsFormDisabled()) { return DisForm_OnLButtonUpEx(pMsg); } if (m_pOwner->m_rtLBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { m_pOwner->m_iLBtnPartStates = 0; m_pOwner->Repaint(&m_pOwner->m_rtLBtn); return; } if (m_pOwner->m_rtRBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { m_pOwner->m_iRBtnPartStates = 0; m_pOwner->Repaint(&m_pOwner->m_rtRBtn); return; } if (m_pOwner->m_rtToday.Contains(pMsg->m_fx, pMsg->m_fy)) { return; } int32_t iOldSel = 0; if (m_pOwner->m_arrSelDays.GetSize() > 0) { iOldSel = m_pOwner->m_arrSelDays[0]; } int32_t iCurSel = m_pOwner->GetDayAtPoint(pMsg->m_fx, pMsg->m_fy); CFX_RectF rt; IFWL_DateTimePicker* pIPicker = static_cast<IFWL_DateTimePicker*>(m_pOwner->m_pOuter); CFWL_DateTimePickerImp* pPicker = static_cast<CFWL_DateTimePickerImp*>(pIPicker->GetImpl()); pPicker->m_pForm->GetWidgetRect(rt); rt.Set(0, 0, rt.width, rt.height); if (iCurSel > 0) { LPDATEINFO lpDatesInfo = (LPDATEINFO)m_pOwner->m_arrDates.GetAt(iCurSel - 1); CFX_RectF rtInvalidate(lpDatesInfo->rect); if (iOldSel > 0 && iOldSel <= m_pOwner->m_arrDates.GetSize()) { lpDatesInfo = (LPDATEINFO)m_pOwner->m_arrDates.GetAt(iOldSel - 1); rtInvalidate.Union(lpDatesInfo->rect); } m_pOwner->AddSelDay(iCurSel); if (!m_pOwner->m_pOuter) return; pPicker->ProcessSelChanged(m_pOwner->m_iCurYear, m_pOwner->m_iCurMonth, iCurSel); pPicker->ShowMonthCalendar(FALSE); } else if (m_bFlag && (!rt.Contains(pMsg->m_fx, pMsg->m_fy))) { IFWL_DateTimePicker* pIPicker = static_cast<IFWL_DateTimePicker*>(m_pOwner->m_pOuter); CFWL_DateTimePickerImp* pPicker = static_cast<CFWL_DateTimePickerImp*>(pIPicker->GetImpl()); pPicker->ShowMonthCalendar(FALSE); } m_bFlag = 0; }
void CFWL_DateTimeCalendarImpDelegate::DisForm_OnLButtonUpEx( CFWL_MsgMouse* pMsg) { if (m_pOwner->m_rtLBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { m_pOwner->m_iLBtnPartStates = 0; m_pOwner->Repaint(&(m_pOwner->m_rtLBtn)); return; } if (m_pOwner->m_rtRBtn.Contains(pMsg->m_fx, pMsg->m_fy)) { m_pOwner->m_iRBtnPartStates = 0; m_pOwner->Repaint(&(m_pOwner->m_rtRBtn)); return; } if (m_pOwner->m_rtToday.Contains(pMsg->m_fx, pMsg->m_fy)) { return; } int32_t iOldSel = 0; if (m_pOwner->m_arrSelDays.GetSize() > 0) { iOldSel = m_pOwner->m_arrSelDays[0]; } int32_t iCurSel = m_pOwner->GetDayAtPoint(pMsg->m_fx, pMsg->m_fy); if (iCurSel > 0) { LPDATEINFO lpDatesInfo = (LPDATEINFO)m_pOwner->m_arrDates.GetAt(iCurSel - 1); CFX_RectF rtInvalidate(lpDatesInfo->rect); if (iOldSel > 0 && iOldSel <= m_pOwner->m_arrDates.GetSize()) { lpDatesInfo = (LPDATEINFO)m_pOwner->m_arrDates.GetAt(iOldSel - 1); rtInvalidate.Union(lpDatesInfo->rect); } m_pOwner->AddSelDay(iCurSel); CFWL_DateTimePickerImp* pDateTime = static_cast<CFWL_DateTimePickerImp*>(m_pOwner->m_pOuter->GetImpl()); pDateTime->ProcessSelChanged(m_pOwner->m_iCurYear, m_pOwner->m_iCurMonth, iCurSel); pDateTime->ShowMonthCalendar(FALSE); } }
void CFWL_ComboList::OnDropListKeyDown(CFWL_MessageKey* pKey) { uint32_t dwKeyCode = pKey->m_dwKeyCode; switch (dwKeyCode) { case FWL_VKEY_Up: case FWL_VKEY_Down: case FWL_VKEY_Home: case FWL_VKEY_End: { CFWL_ComboBox* pOuter = static_cast<CFWL_ComboBox*>(m_pOuter); CFWL_ListItem* hItem = GetItem(this, pOuter->GetCurrentSelection()); hItem = GetListItem(hItem, dwKeyCode); if (!hItem) break; SetSelection(hItem, hItem, true); ScrollToVisible(hItem); CFX_RectF rtInvalidate(0, 0, m_pProperties->m_rtWidget.width, m_pProperties->m_rtWidget.height); RepaintRect(rtInvalidate); break; } default: break; } }