| Index: xfa/fwl/core/ifwl_combobox.h
|
| diff --git a/xfa/fwl/basewidget/fwl_comboboximp.h b/xfa/fwl/core/ifwl_combobox.h
|
| similarity index 64%
|
| rename from xfa/fwl/basewidget/fwl_comboboximp.h
|
| rename to xfa/fwl/core/ifwl_combobox.h
|
| index 0ed5dbb1fa3a8880afee3cc9f612765a7c933283..106b7c0c08a55d53d018637d3f1a76036850e2e2 100644
|
| --- a/xfa/fwl/basewidget/fwl_comboboximp.h
|
| +++ b/xfa/fwl/core/ifwl_combobox.h
|
| @@ -4,93 +4,94 @@
|
|
|
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
|
|
| -#ifndef XFA_FWL_BASEWIDGET_FWL_COMBOBOXIMP_H_
|
| -#define XFA_FWL_BASEWIDGET_FWL_COMBOBOXIMP_H_
|
| +#ifndef XFA_FWL_CORE_IFWL_COMBOBOX_H_
|
| +#define XFA_FWL_CORE_IFWL_COMBOBOX_H_
|
|
|
| -#include <memory>
|
| +#include "xfa/fwl/core/ifwl_form.h"
|
| +#include "xfa/fwl/core/ifwl_listbox.h"
|
| +#include "xfa/fxgraphics/cfx_graphics.h"
|
|
|
| -#include "xfa/fwl/basewidget/fwl_editimp.h"
|
| -#include "xfa/fwl/basewidget/fwl_listboximp.h"
|
| -
|
| -class CFWL_WidgetImp;
|
| -class CFWL_WidgetImpProperties;
|
| -class CFWL_WidgetImpDelegate;
|
| -class CFWL_ListBoxImp;
|
| -class CFWL_ListBoxImpDelegate;
|
| -class CFWL_FormProxyImp;
|
| -class IFWL_Widget;
|
| -class CFWL_ComboEditImp;
|
| +class CFWL_ComboBoxImpDelegate;
|
| class CFWL_ComboEditImpDelegate;
|
| -class CFWL_ComboListImp;
|
| class CFWL_ComboListImpDelegate;
|
| -class CFWL_ComboBoxImp;
|
| -class CFWL_ComboBoxImpDelegate;
|
| class CFWL_ComboProxyImpDelegate;
|
| -class CFWL_ComboEditImp : public CFWL_EditImp {
|
| - public:
|
| - CFWL_ComboEditImp(const CFWL_WidgetImpProperties& properties,
|
| - IFWL_Widget* pOuter);
|
| -
|
| - void ClearSelected();
|
| - void SetSelected();
|
| - void EndCaret();
|
| - void FlagFocus(FX_BOOL bSet);
|
| +class CFWL_ListBoxImpDelegate;
|
| +class CFWL_WidgetImpProperties;
|
| +class CFWL_WidgetImpDelegate;
|
| +class IFWL_ComboBox;
|
| +class IFWL_ComboEdit;
|
| +class IFWL_ComboList;
|
| +class IFWL_FormProxy;
|
| +class IFWL_ListBox;
|
| +class IFWL_Widget;
|
|
|
| - protected:
|
| - void SetComboBoxFocus(FX_BOOL bSet);
|
| - CFWL_ComboBoxImp* m_pOuter;
|
| - friend class CFWL_ComboEditImpDelegate;
|
| -};
|
| -class CFWL_ComboEditImpDelegate : public CFWL_EditImpDelegate {
|
| +#define FWL_CLASS_ComboBox L"FWL_COMBOBOX"
|
| +#define FWL_STYLEEXT_CMB_DropList (0L << 0)
|
| +#define FWL_STYLEEXT_CMB_DropDown (1L << 0)
|
| +#define FWL_STYLEEXT_CMB_Sort (1L << 1)
|
| +#define FWL_STYLEEXT_CMB_ListDrag (1L << 2)
|
| +#define FWL_STYLEEXT_CMB_OwnerDraw (1L << 3)
|
| +#define FWL_STYLEEXT_CMB_EditHNear (0L << 4)
|
| +#define FWL_STYLEEXT_CMB_EditHCenter (1L << 4)
|
| +#define FWL_STYLEEXT_CMB_EditHFar (2L << 4)
|
| +#define FWL_STYLEEXT_CMB_EditVNear (0L << 6)
|
| +#define FWL_STYLEEXT_CMB_EditVCenter (1L << 6)
|
| +#define FWL_STYLEEXT_CMB_EditVFar (2L << 6)
|
| +#define FWL_STYLEEXT_CMB_EditJustified (1L << 8)
|
| +#define FWL_STYLEEXT_CMB_EditDistributed (2L << 8)
|
| +#define FWL_STYLEEXT_CMB_EditHAlignMask (3L << 4)
|
| +#define FWL_STYLEEXT_CMB_EditVAlignMask (3L << 6)
|
| +#define FWL_STYLEEXT_CMB_EditHAlignModeMask (3L << 8)
|
| +#define FWL_STYLEEXT_CMB_ListItemLeftAlign (0L << 10)
|
| +#define FWL_STYLEEXT_CMB_ListItemCenterAlign (1L << 10)
|
| +#define FWL_STYLEEXT_CMB_ListItemRightAlign (2L << 10)
|
| +#define FWL_STYLEEXT_CMB_ListItemAlignMask (3L << 10)
|
| +#define FWL_STYLEEXT_CMB_ListItemText (0L << 12)
|
| +#define FWL_STYLEEXT_CMB_ListItemIconText (1L << 12)
|
| +#define FWL_STYLEEXT_CMB_ReadOnly (1L << 13)
|
| +
|
| +FWL_EVENT_DEF(CFWL_EvtCmbPreDropDown, CFWL_EventType::PreDropDown)
|
| +
|
| +FWL_EVENT_DEF(CFWL_EvtCmbPostDropDown, CFWL_EventType::PostDropDown)
|
| +
|
| +FWL_EVENT_DEF(CFWL_EvtCmbCloseUp, CFWL_EventType::CloseUp)
|
| +
|
| +FWL_EVENT_DEF(CFWL_EvtCmbEditChanged,
|
| + CFWL_EventType::EditChanged,
|
| + int32_t nChangeType;
|
| + CFX_WideString wsInsert;
|
| + CFX_WideString wsDelete;)
|
| +
|
| +FWL_EVENT_DEF(CFWL_EvtCmbSelChanged,
|
| + CFWL_EventType::SelectChanged,
|
| + CFX_Int32Array iArraySels;
|
| + FX_BOOL bLButtonUp;)
|
| +
|
| +FWL_EVENT_DEF(CFWL_EvtCmbHoverChanged,
|
| + CFWL_EventType::HoverChanged,
|
| + int32_t m_iCurHover;)
|
| +
|
| +FWL_EVENT_DEF(CFWL_EvtCmbDrawItem,
|
| + CFWL_EventType::DrawItem,
|
| + CFX_Graphics* m_pGraphics;
|
| + CFX_Matrix m_matrix;
|
| + int32_t m_index;
|
| + CFX_RectF m_rtItem;)
|
| +
|
| +class IFWL_ComboBoxDP : public IFWL_ListBoxDP {
|
| public:
|
| - CFWL_ComboEditImpDelegate(CFWL_ComboEditImp* pOwner);
|
| - void OnProcessMessage(CFWL_Message* pMessage) override;
|
| -
|
| - protected:
|
| - CFWL_ComboEditImp* m_pOwner;
|
| + virtual FX_FLOAT GetListHeight(IFWL_Widget* pWidget) = 0;
|
| };
|
| -class CFWL_ComboListImp : public CFWL_ListBoxImp {
|
| - public:
|
| - CFWL_ComboListImp(const CFWL_WidgetImpProperties& properties,
|
| - IFWL_Widget* pOuter);
|
|
|
| - // CFWL_WidgetImp
|
| - FWL_Error Initialize() override;
|
| - FWL_Error Finalize() override;
|
| -
|
| - int32_t MatchItem(const CFX_WideString& wsMatch);
|
| - void ChangeSelected(int32_t iSel);
|
| - int32_t CountItems();
|
| - void GetItemRect(int32_t nIndex, CFX_RectF& rtItem);
|
| - void ClientToOuter(FX_FLOAT& fx, FX_FLOAT& fy);
|
| - void SetFocus(FX_BOOL bSet);
|
| -
|
| - FX_BOOL m_bNotifyOwner;
|
| -
|
| - friend class CFWL_ComboListImpDelegate;
|
| - friend class CFWL_ComboBoxImp;
|
| -};
|
| -class CFWL_ComboListImpDelegate : public CFWL_ListBoxImpDelegate {
|
| +class IFWL_ComboBox : public IFWL_Widget {
|
| public:
|
| - CFWL_ComboListImpDelegate(CFWL_ComboListImp* pOwner);
|
| - void OnProcessMessage(CFWL_Message* pMessage) override;
|
| + static IFWL_ComboBox* Create(const CFWL_WidgetImpProperties& properties);
|
|
|
| - protected:
|
| - void OnDropListFocusChanged(CFWL_Message* pMsg, FX_BOOL bSet = TRUE);
|
| - int32_t OnDropListMouseMove(CFWL_MsgMouse* pMsg);
|
| - int32_t OnDropListLButtonDown(CFWL_MsgMouse* pMsg);
|
| - int32_t OnDropListLButtonUp(CFWL_MsgMouse* pMsg);
|
| - int32_t OnDropListKey(CFWL_MsgKey* pKey);
|
| - void OnDropListKeyDown(CFWL_MsgKey* pKey);
|
| - CFWL_ComboListImp* m_pOwner;
|
| -};
|
| -class CFWL_ComboBoxImp : public CFWL_WidgetImp {
|
| - public:
|
| - CFWL_ComboBoxImp(const CFWL_WidgetImpProperties& properties,
|
| - IFWL_Widget* pOuter);
|
| - ~CFWL_ComboBoxImp() override;
|
| + IFWL_ComboBox(const CFWL_WidgetImpProperties& properties,
|
| + IFWL_Widget* pOuter);
|
| + ~IFWL_ComboBox() override;
|
|
|
| - // CFWL_WidgetImp
|
| + // IFWL_Widget
|
| FWL_Error GetClassName(CFX_WideString& wsClass) const override;
|
| FWL_Type GetClassID() const override;
|
| FWL_Error Initialize() override;
|
| @@ -140,12 +141,12 @@ class CFWL_ComboBoxImp : public CFWL_WidgetImp {
|
| uint32_t dwStylesExRemoved);
|
|
|
| protected:
|
| - friend class CFWL_ComboListImp;
|
| - friend class CFWL_ComboEditImp;
|
| + friend class CFWL_ComboBoxImpDelegate;
|
| friend class CFWL_ComboEditImpDelegate;
|
| friend class CFWL_ComboListImpDelegate;
|
| - friend class CFWL_ComboBoxImpDelegate;
|
| friend class CFWL_ComboProxyImpDelegate;
|
| + friend class IFWL_ComboEdit;
|
| + friend class IFWL_ComboList;
|
|
|
| void DrawStretchHandler(CFX_Graphics* pGraphics, const CFX_Matrix* pMatrix);
|
| FX_FLOAT GetListHeight();
|
| @@ -180,9 +181,9 @@ class CFWL_ComboBoxImp : public CFWL_WidgetImp {
|
| CFX_RectF m_rtList;
|
| CFX_RectF m_rtProxy;
|
| CFX_RectF m_rtHandler;
|
| - std::unique_ptr<IFWL_Edit> m_pEdit;
|
| - std::unique_ptr<IFWL_ListBox> m_pListBox;
|
| - IFWL_Form* m_pForm;
|
| + std::unique_ptr<IFWL_ComboEdit> m_pEdit;
|
| + std::unique_ptr<IFWL_ComboList> m_pListBox;
|
| + IFWL_FormProxy* m_pForm;
|
| FX_BOOL m_bLButtonDown;
|
| FX_BOOL m_bUpFormHandler;
|
| int32_t m_iCurSel;
|
| @@ -190,12 +191,12 @@ class CFWL_ComboBoxImp : public CFWL_WidgetImp {
|
| FX_FLOAT m_fComboFormHandler;
|
| FX_FLOAT m_fItemHeight;
|
| FX_BOOL m_bNeedShowList;
|
| - CFWL_FormProxyImp* m_pProxy;
|
| CFWL_ComboProxyImpDelegate* m_pListProxyDelegate;
|
| };
|
| +
|
| class CFWL_ComboBoxImpDelegate : public CFWL_WidgetImpDelegate {
|
| public:
|
| - CFWL_ComboBoxImpDelegate(CFWL_ComboBoxImp* pOwner);
|
| + CFWL_ComboBoxImpDelegate(IFWL_ComboBox* pOwner);
|
| void OnProcessMessage(CFWL_Message* pMessage) override;
|
| void OnProcessEvent(CFWL_Event* pEvent) override;
|
| void OnDrawWidget(CFX_Graphics* pGraphics,
|
| @@ -209,21 +210,19 @@ class CFWL_ComboBoxImpDelegate : public CFWL_WidgetImpDelegate {
|
| void OnMouseLeave(CFWL_MsgMouse* pMsg);
|
| void OnKey(CFWL_MsgKey* pMsg);
|
| void DoSubCtrlKey(CFWL_MsgKey* pMsg);
|
| -
|
| - protected:
|
| void DisForm_OnProcessMessage(CFWL_Message* pMessage);
|
| void DisForm_OnLButtonDown(CFWL_MsgMouse* pMsg);
|
| void DisForm_OnFocusChanged(CFWL_Message* pMsg, FX_BOOL bSet = TRUE);
|
| void DisForm_OnKey(CFWL_MsgKey* pMsg);
|
|
|
| - protected:
|
| - CFWL_ComboBoxImp* m_pOwner;
|
| + IFWL_ComboBox* m_pOwner;
|
| friend class CFWL_ComboEditImpDelegate;
|
| friend class CFWL_ComboListImpDelegate;
|
| };
|
| +
|
| class CFWL_ComboProxyImpDelegate : public CFWL_WidgetImpDelegate {
|
| public:
|
| - CFWL_ComboProxyImpDelegate(IFWL_Form* pForm, CFWL_ComboBoxImp* pComboBox);
|
| + CFWL_ComboProxyImpDelegate(IFWL_Form* pForm, IFWL_ComboBox* pComboBox);
|
| void OnProcessMessage(CFWL_Message* pMessage) override;
|
| void OnDrawWidget(CFX_Graphics* pGraphics,
|
| const CFX_Matrix* pMatrix = nullptr) override;
|
| @@ -239,7 +238,7 @@ class CFWL_ComboProxyImpDelegate : public CFWL_WidgetImpDelegate {
|
| FX_BOOL m_bLButtonUpSelf;
|
| FX_FLOAT m_fStartPos;
|
| IFWL_Form* m_pForm;
|
| - CFWL_ComboBoxImp* m_pComboBox;
|
| + IFWL_ComboBox* m_pComboBox;
|
| };
|
|
|
| -#endif // XFA_FWL_BASEWIDGET_FWL_COMBOBOXIMP_H_
|
| +#endif // XFA_FWL_CORE_IFWL_COMBOBOX_H_
|
|
|