1 // Copyright 2017 The PDFium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef XFA_FXFA_CXFA_FFTEXTEDIT_H_ 8 #define XFA_FXFA_CXFA_FFTEXTEDIT_H_ 9 10 #include "core/fxcrt/fx_coordinates.h" 11 #include "core/fxcrt/widestring.h" 12 #include "v8/include/cppgc/prefinalizer.h" 13 #include "xfa/fxfa/cxfa_fffield.h" 14 15 class CFX_Matrix; 16 class CXFA_FFWidget; 17 18 namespace pdfium { 19 class CFWL_EventTextWillChange; 20 class CFWL_Widget; 21 class IFWL_WidgetDelegate; 22 } // namespace pdfium 23 24 class CXFA_FFTextEdit : public CXFA_FFField { 25 CPPGC_USING_PRE_FINALIZER(CXFA_FFTextEdit, PreFinalize); 26 27 public: 28 CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED; 29 ~CXFA_FFTextEdit() override; 30 31 void PreFinalize(); 32 33 void Trace(cppgc::Visitor* visitor) const override; 34 35 // CXFA_FFField 36 bool LoadWidget() override; 37 void UpdateWidgetProperty() override; 38 bool AcceptsFocusOnButtonDown( 39 Mask<XFA_FWL_KeyFlag> dwFlags, 40 const CFX_PointF& point, 41 CFWL_MessageMouse::MouseCommand command) override; 42 bool OnLButtonDown(Mask<XFA_FWL_KeyFlag> dwFlags, 43 const CFX_PointF& point) override; 44 bool OnRButtonDown(Mask<XFA_FWL_KeyFlag> dwFlags, 45 const CFX_PointF& point) override; 46 bool OnRButtonUp(Mask<XFA_FWL_KeyFlag> dwFlags, 47 const CFX_PointF& point) override; 48 [[nodiscard]] bool OnSetFocus(CXFA_FFWidget* pOldWidget) override; 49 [[nodiscard]] bool OnKillFocus(CXFA_FFWidget* pNewWidget) override; 50 void OnProcessMessage(CFWL_Message* pMessage) override; 51 void OnProcessEvent(pdfium::CFWL_Event* pEvent) override; 52 void OnDrawWidget(CFGAS_GEGraphics* pGraphics, 53 const CFX_Matrix& matrix) override; 54 55 void OnTextWillChange(pdfium::CFWL_Widget* pWidget, 56 pdfium::CFWL_EventTextWillChange* change); 57 void OnTextFull(CFWL_Widget* pWidget); 58 59 // CXFA_FFWidget 60 bool CanUndo() override; 61 bool CanRedo() override; 62 bool CanCopy() override; 63 bool CanCut() override; 64 bool CanPaste() override; 65 bool CanSelectAll() override; 66 bool Undo() override; 67 bool Redo() override; 68 std::optional<WideString> Copy() override; 69 std::optional<WideString> Cut() override; 70 bool Paste(const WideString& wsPaste) override; 71 void SelectAll() override; 72 void Delete() override; 73 void DeSelect() override; 74 WideString GetText() override; 75 FormFieldType GetFormFieldType() override; 76 77 protected: 78 explicit CXFA_FFTextEdit(CXFA_Node* pNode); 79 uint32_t GetAlignment(); 80 81 cppgc::Member<IFWL_WidgetDelegate> m_pOldDelegate; 82 83 private: 84 bool CommitData() override; 85 bool UpdateFWLData() override; 86 bool IsDataChanged() override; 87 void ValidateNumberField(const WideString& wsText); 88 }; 89 90 #endif // XFA_FXFA_CXFA_FFTEXTEDIT_H_ 91