diff options
author | dsinclair <dsinclair@chromium.org> | 2016-10-20 06:44:03 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-10-20 06:44:03 -0700 |
commit | fb5055947efd78e0e7f8a2bfd5b754c63dbb6076 (patch) | |
tree | 10511c1cb9b341e901a7f619a2bf6c2a74bb7f89 /xfa/fwl/core/ifwl_comboedit.cpp | |
parent | dadea5f87d35f8a692b659dbff54cc8780d48ef8 (diff) | |
download | pdfium-fb5055947efd78e0e7f8a2bfd5b754c63dbb6076.tar.xz |
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
Diffstat (limited to 'xfa/fwl/core/ifwl_comboedit.cpp')
-rw-r--r-- | xfa/fwl/core/ifwl_comboedit.cpp | 86 |
1 files changed, 86 insertions, 0 deletions
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<IFWL_ComboBox*>(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<CFWL_MsgMouse*>(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); +} |