| // Copyright 2016 PDFium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 
 |  | 
 | #include "xfa/fwl/cfwl_comboedit.h" | 
 |  | 
 | #include "xfa/fde/cfde_texteditengine.h" | 
 | #include "xfa/fwl/cfwl_combobox.h" | 
 | #include "xfa/fwl/cfwl_messagemouse.h" | 
 |  | 
 | CFWL_ComboEdit::CFWL_ComboEdit(CFWL_App* app, | 
 |                                const Properties& properties, | 
 |                                CFWL_Widget* pOuter) | 
 |     : CFWL_Edit(app, properties, pOuter) {} | 
 |  | 
 | CFWL_ComboEdit::~CFWL_ComboEdit() = default; | 
 |  | 
 | void CFWL_ComboEdit::ClearSelected() { | 
 |   ClearSelection(); | 
 |   RepaintRect(GetRTClient()); | 
 | } | 
 |  | 
 | void CFWL_ComboEdit::SetSelected() { | 
 |   m_Properties.m_dwStates |= FWL_STATE_WGT_Focused; | 
 |   SelectAll(); | 
 | } | 
 |  | 
 | void CFWL_ComboEdit::OnProcessMessage(CFWL_Message* pMessage) { | 
 |   bool backDefault = true; | 
 |   switch (pMessage->GetType()) { | 
 |     case CFWL_Message::Type::kSetFocus: { | 
 |       m_Properties.m_dwStates |= FWL_STATE_WGT_Focused; | 
 |       backDefault = false; | 
 |       break; | 
 |     } | 
 |     case CFWL_Message::Type::kKillFocus: { | 
 |       m_Properties.m_dwStates &= ~FWL_STATE_WGT_Focused; | 
 |       backDefault = false; | 
 |       break; | 
 |     } | 
 |     case CFWL_Message::Type::kMouse: { | 
 |       CFWL_MessageMouse* pMsg = static_cast<CFWL_MessageMouse*>(pMessage); | 
 |       if ((pMsg->m_dwCmd == CFWL_MessageMouse::MouseCommand::kLeftButtonDown) && | 
 |           ((m_Properties.m_dwStates & FWL_STATE_WGT_Focused) == 0)) { | 
 |         SetSelected(); | 
 |       } | 
 |       break; | 
 |     } | 
 |     default: | 
 |       break; | 
 |   } | 
 |   if (backDefault) | 
 |     CFWL_Edit::OnProcessMessage(pMessage); | 
 | } |