From fb5055947efd78e0e7f8a2bfd5b754c63dbb6076 Mon Sep 17 00:00:00 2001 From: dsinclair Date: Thu, 20 Oct 2016 06:44:03 -0700 Subject: Merge the CFWL_*Imp classes into the IFWL_* classes. This Cl merges the implementation classes up into the IFWL classes as the intermediate classes were just acting as proxies. Review-Url: https://chromiumcodereview.appspot.com/2432423002 --- xfa/fwl/core/ifwl_comboedit.cpp | 86 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 xfa/fwl/core/ifwl_comboedit.cpp (limited to 'xfa/fwl/core/ifwl_comboedit.cpp') diff --git a/xfa/fwl/core/ifwl_comboedit.cpp b/xfa/fwl/core/ifwl_comboedit.cpp new file mode 100644 index 0000000000..f345090fca --- /dev/null +++ b/xfa/fwl/core/ifwl_comboedit.cpp @@ -0,0 +1,86 @@ +// 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/core/ifwl_comboedit.h" + +#include "xfa/fde/cfde_txtedtengine.h" +#include "xfa/fwl/core/ifwl_combobox.h" + +// static +IFWL_ComboEdit* IFWL_ComboEdit::Create( + const CFWL_WidgetImpProperties& properties, + IFWL_Widget* pOuter) { + return new IFWL_ComboEdit(properties, pOuter); +} + +IFWL_ComboEdit::IFWL_ComboEdit(const CFWL_WidgetImpProperties& properties, + IFWL_Widget* pOuter) + : IFWL_Edit(properties, pOuter) { + m_pOuter = static_cast(pOuter); +} + +void IFWL_ComboEdit::ClearSelected() { + ClearSelections(); + Repaint(&m_rtClient); +} + +void IFWL_ComboEdit::SetSelected() { + FlagFocus(TRUE); + EndCaret(); + AddSelRange(0); +} + +void IFWL_ComboEdit::EndCaret() { + m_pEdtEngine->MoveCaretPos(MC_End); +} + +void IFWL_ComboEdit::FlagFocus(FX_BOOL bSet) { + if (bSet) { + m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused; + } else { + m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused; + ShowCaret(FALSE); + } +} + +void IFWL_ComboEdit::SetComboBoxFocus(FX_BOOL bSet) { + m_pOuter->SetFocus(bSet); +} + +CFWL_ComboEditImpDelegate::CFWL_ComboEditImpDelegate(IFWL_ComboEdit* pOwner) + : CFWL_EditImpDelegate(pOwner), m_pOwner(pOwner) {} + +void CFWL_ComboEditImpDelegate::OnProcessMessage(CFWL_Message* pMessage) { + if (!pMessage) + return; + + FX_BOOL backDefault = TRUE; + switch (pMessage->GetClassID()) { + case CFWL_MessageType::SetFocus: { + m_pOwner->m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused; + backDefault = FALSE; + break; + } + case CFWL_MessageType::KillFocus: { + m_pOwner->m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused; + backDefault = FALSE; + break; + } + case CFWL_MessageType::Mouse: { + CFWL_MsgMouse* pMsg = static_cast(pMessage); + if ((pMsg->m_dwCmd == FWL_MouseCommand::LeftButtonDown) && + ((m_pOwner->m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) == 0)) { + m_pOwner->SetSelected(); + m_pOwner->SetComboBoxFocus(TRUE); + } + break; + } + default: + break; + } + if (backDefault) + CFWL_EditImpDelegate::OnProcessMessage(pMessage); +} -- cgit v1.2.3