diff options
author | dsinclair <dsinclair@chromium.org> | 2016-11-23 16:03:10 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-11-23 16:03:10 -0800 |
commit | 0ce11eef157b791c661d7e82e1c5641605b9f03d (patch) | |
tree | e5166163947824e52c417b4a65c2c7d965c00dad /xfa/fwl/core/cfwl_comboedit.cpp | |
parent | 2430b30088c3e3396ccf26a10d360d0553404bb0 (diff) | |
download | pdfium-0ce11eef157b791c661d7e82e1c5641605b9f03d.tar.xz |
Rename IFWL classes which do not have CFWL equivalents
This CL moves the IFWL classes that do not have CFWL class buddies to have the
CFWL name. This CL leaves the tree in a weird state of having CFWL be two
hierarchies, one of which is intertwined with the IFWL hierarchy. This should
be commited just before the CL to move the rest of IFWL to CFWL.
Review-Url: https://codereview.chromium.org/2525083002
Diffstat (limited to 'xfa/fwl/core/cfwl_comboedit.cpp')
-rw-r--r-- | xfa/fwl/core/cfwl_comboedit.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/xfa/fwl/core/cfwl_comboedit.cpp b/xfa/fwl/core/cfwl_comboedit.cpp new file mode 100644 index 0000000000..2051daa786 --- /dev/null +++ b/xfa/fwl/core/cfwl_comboedit.cpp @@ -0,0 +1,75 @@ +// 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/cfwl_comboedit.h" + +#include <memory> +#include <utility> + +#include "xfa/fde/cfde_txtedtengine.h" +#include "xfa/fwl/core/cfwl_msgmouse.h" +#include "xfa/fwl/core/ifwl_combobox.h" + +CFWL_ComboEdit::CFWL_ComboEdit( + const CFWL_App* app, + std::unique_ptr<CFWL_WidgetProperties> properties, + IFWL_Widget* pOuter) + : IFWL_Edit(app, std::move(properties), pOuter) { + m_pOuter = static_cast<IFWL_ComboBox*>(pOuter); +} + +void CFWL_ComboEdit::ClearSelected() { + ClearSelections(); + Repaint(&GetRTClient()); +} + +void CFWL_ComboEdit::SetSelected() { + FlagFocus(true); + GetTxtEdtEngine()->MoveCaretPos(MC_End); + AddSelRange(0); +} + +void CFWL_ComboEdit::FlagFocus(bool bSet) { + if (bSet) { + m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused; + return; + } + + m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused; + ShowCaret(false); +} + +void CFWL_ComboEdit::OnProcessMessage(CFWL_Message* pMessage) { + if (!pMessage) + return; + + bool backDefault = true; + switch (pMessage->GetClassID()) { + case CFWL_MessageType::SetFocus: { + m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused; + backDefault = false; + break; + } + case CFWL_MessageType::KillFocus: { + 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_pProperties->m_dwStates & FWL_WGTSTATE_Focused) == 0)) { + SetSelected(); + m_pOuter->SetFocus(true); + } + break; + } + default: + break; + } + if (backDefault) + IFWL_Edit::OnProcessMessage(pMessage); +} |