summaryrefslogtreecommitdiff
path: root/xfa/fwl/cfwl_comboedit.cpp
diff options
context:
space:
mode:
authordsinclair <dsinclair@chromium.org>2016-12-08 10:06:32 -0800
committerCommit bot <commit-bot@chromium.org>2016-12-08 10:06:33 -0800
commit447b1f3ffc7e0df233d15300bbf8a85ce2bc7278 (patch)
treeadbd5fa0a3b63a666575636b4c5af9462e2f9c0b /xfa/fwl/cfwl_comboedit.cpp
parent64f4e25304dfd93651ac5c9d5379ed2fffbb993f (diff)
downloadpdfium-447b1f3ffc7e0df233d15300bbf8a85ce2bc7278.tar.xz
Move xfa/fwl/core to xfa/fwl.
The core/ directory in FWL no-longer provides any context. This Cl moves all of the core/ files up to the fwl/ folder. As well, the CFWL_EvtFoo files are renamed CFWL_EventFoo and the CFWL_MsgFoo files are renamed CFWL_MessageFoo. The event and message preceed the type in order to keep the files sorted together and to make it clear that they're all related. Review-Url: https://codereview.chromium.org/2559173002
Diffstat (limited to 'xfa/fwl/cfwl_comboedit.cpp')
-rw-r--r--xfa/fwl/cfwl_comboedit.cpp75
1 files changed, 75 insertions, 0 deletions
diff --git a/xfa/fwl/cfwl_comboedit.cpp b/xfa/fwl/cfwl_comboedit.cpp
new file mode 100644
index 0000000000..5981fd79b4
--- /dev/null
+++ b/xfa/fwl/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/cfwl_comboedit.h"
+
+#include <memory>
+#include <utility>
+
+#include "xfa/fde/cfde_txtedtengine.h"
+#include "xfa/fwl/cfwl_combobox.h"
+#include "xfa/fwl/cfwl_messagemouse.h"
+
+CFWL_ComboEdit::CFWL_ComboEdit(
+ const CFWL_App* app,
+ std::unique_ptr<CFWL_WidgetProperties> properties,
+ CFWL_Widget* pOuter)
+ : CFWL_Edit(app, std::move(properties), pOuter) {
+ m_pOuter = static_cast<CFWL_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;
+ HideCaret(nullptr);
+}
+
+void CFWL_ComboEdit::OnProcessMessage(CFWL_Message* pMessage) {
+ if (!pMessage)
+ return;
+
+ bool backDefault = true;
+ switch (pMessage->GetType()) {
+ case CFWL_Message::Type::SetFocus: {
+ m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused;
+ backDefault = false;
+ break;
+ }
+ case CFWL_Message::Type::KillFocus: {
+ m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused;
+ backDefault = false;
+ break;
+ }
+ case CFWL_Message::Type::Mouse: {
+ CFWL_MessageMouse* pMsg = static_cast<CFWL_MessageMouse*>(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)
+ CFWL_Edit::OnProcessMessage(pMessage);
+}