xref: /aosp_15_r20/external/pdfium/xfa/fwl/cfwl_datetimeedit.cpp (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1 // Copyright 2014 The PDFium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #include "xfa/fwl/cfwl_datetimeedit.h"
8 
9 #include "xfa/fwl/cfwl_datetimepicker.h"
10 #include "xfa/fwl/cfwl_messagemouse.h"
11 #include "xfa/fwl/cfwl_widgetmgr.h"
12 
CFWL_DateTimeEdit(CFWL_App * app,const Properties & properties,CFWL_Widget * pOuter)13 CFWL_DateTimeEdit::CFWL_DateTimeEdit(CFWL_App* app,
14                                      const Properties& properties,
15                                      CFWL_Widget* pOuter)
16     : CFWL_Edit(app, properties, pOuter) {}
17 
18 CFWL_DateTimeEdit::~CFWL_DateTimeEdit() = default;
19 
OnProcessMessage(CFWL_Message * pMessage)20 void CFWL_DateTimeEdit::OnProcessMessage(CFWL_Message* pMessage) {
21   if (pMessage->GetType() != CFWL_Message::Type::kMouse) {
22     CFWL_Edit::OnProcessMessage(pMessage);
23     return;
24   }
25 
26   CFWL_MessageMouse* pMouse = static_cast<CFWL_MessageMouse*>(pMessage);
27   if (pMouse->m_dwCmd == CFWL_MessageMouse::MouseCommand::kLeftButtonDown ||
28       pMouse->m_dwCmd == CFWL_MessageMouse::MouseCommand::kRightButtonDown) {
29     if ((m_Properties.m_dwStates & FWL_STATE_WGT_Focused) == 0)
30       m_Properties.m_dwStates |= FWL_STATE_WGT_Focused;
31 
32     CFWL_DateTimePicker* pDateTime =
33         static_cast<CFWL_DateTimePicker*>(GetOuter());
34     if (pDateTime->IsMonthCalendarVisible()) {
35       CFX_RectF rtInvalidate = pDateTime->GetWidgetRect();
36       pDateTime->HideMonthCalendar();
37       rtInvalidate.Offset(-rtInvalidate.left, -rtInvalidate.top);
38       pDateTime->RepaintRect(rtInvalidate);
39     }
40   }
41   CFWL_Edit::OnProcessMessage(pMessage);
42 }
43