summaryrefslogtreecommitdiff
path: root/xfa/fwl/core/cfwl_widgetmgr.h
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fwl/core/cfwl_widgetmgr.h')
-rw-r--r--xfa/fwl/core/cfwl_widgetmgr.h110
1 files changed, 57 insertions, 53 deletions
diff --git a/xfa/fwl/core/cfwl_widgetmgr.h b/xfa/fwl/core/cfwl_widgetmgr.h
index 25c5735a98..10176c2598 100644
--- a/xfa/fwl/core/cfwl_widgetmgr.h
+++ b/xfa/fwl/core/cfwl_widgetmgr.h
@@ -18,7 +18,6 @@
#define FWL_WGTMGR_DisableForm 0x00000002
class CFWL_Message;
-class CFWL_WidgetMgrDelegate;
class CXFA_FFApp;
class CXFA_FWLAdapterWidgetMgr;
class CFX_Graphics;
@@ -44,86 +43,84 @@ class CFWL_WidgetMgrItem {
#endif
};
-class CFWL_WidgetMgr {
+class IFWL_WidgetMgrDelegate {
+ public:
+ virtual void OnSetCapability(
+ uint32_t dwCapability = FWL_WGTMGR_DisableThread) = 0;
+ virtual void OnProcessMessageToForm(CFWL_Message* pMessage) = 0;
+ virtual void OnDrawWidget(IFWL_Widget* pWidget,
+ CFX_Graphics* pGraphics,
+ const CFX_Matrix* pMatrix) = 0;
+};
+
+class CFWL_WidgetMgr : public IFWL_WidgetMgrDelegate {
public:
explicit CFWL_WidgetMgr(CXFA_FFApp* pAdapterNative);
~CFWL_WidgetMgr();
+ // IFWL_WidgetMgrDelegate
+ void OnSetCapability(
+ uint32_t dwCapability = FWL_WGTMGR_DisableThread) override;
+ void OnProcessMessageToForm(CFWL_Message* pMessage) override;
+ void OnDrawWidget(IFWL_Widget* pWidget,
+ CFX_Graphics* pGraphics,
+ const CFX_Matrix* pMatrix) override;
+
IFWL_Widget* GetParentWidget(IFWL_Widget* pWidget) const;
IFWL_Widget* GetOwnerWidget(IFWL_Widget* pWidget) const;
- IFWL_Widget* GetFirstSiblingWidget(IFWL_Widget* pWidget) const;
- IFWL_Widget* GetPriorSiblingWidget(IFWL_Widget* pWidget) const;
IFWL_Widget* GetNextSiblingWidget(IFWL_Widget* pWidget) const;
- IFWL_Widget* GetLastSiblingWidget(IFWL_Widget* pWidget) const;
IFWL_Widget* GetFirstChildWidget(IFWL_Widget* pWidget) const;
- IFWL_Widget* GetLastChildWidget(IFWL_Widget* pWidget) const;
IFWL_Widget* GetSystemFormWidget(IFWL_Widget* pWidget) const;
- bool SetWidgetIndex(IFWL_Widget* pWidget, int32_t nIndex);
- FWL_Error RepaintWidget(IFWL_Widget* pWidget,
- const CFX_RectF* pRect = nullptr);
+ void RepaintWidget(IFWL_Widget* pWidget, const CFX_RectF* pRect = nullptr);
- void AddWidget(IFWL_Widget* pWidget);
void InsertWidget(IFWL_Widget* pParent,
IFWL_Widget* pChild,
int32_t nIndex = -1);
void RemoveWidget(IFWL_Widget* pWidget);
void SetOwner(IFWL_Widget* pOwner, IFWL_Widget* pOwned);
void SetParent(IFWL_Widget* pParent, IFWL_Widget* pChild);
- bool IsChild(IFWL_Widget* pChild, IFWL_Widget* pParent);
- FWL_Error SetWidgetRect_Native(IFWL_Widget* pWidget, const CFX_RectF& rect);
+
+ void SetWidgetRect_Native(IFWL_Widget* pWidget, const CFX_RectF& rect);
+
IFWL_Widget* GetWidgetAtPoint(IFWL_Widget* pParent, FX_FLOAT fx, FX_FLOAT fy);
+
void NotifySizeChanged(IFWL_Widget* pForm, FX_FLOAT fx, FX_FLOAT fy);
- IFWL_Widget* nextTab(IFWL_Widget* parent, IFWL_Widget* focus, bool& bFind);
- int32_t CountRadioButtonGroup(IFWL_Widget* pFirst);
- IFWL_Widget* GetSiblingRadioButton(IFWL_Widget* pWidget, bool bNext);
- IFWL_Widget* GetRadioButtonGroupHeader(IFWL_Widget* pRadioButton);
+
+ IFWL_Widget* NextTab(IFWL_Widget* parent, IFWL_Widget* focus, bool& bFind);
+
void GetSameGroupRadioButton(IFWL_Widget* pRadioButton,
- CFX_ArrayTemplate<IFWL_Widget*>& group);
- IFWL_Widget* GetDefaultButton(IFWL_Widget* pParent);
+ CFX_ArrayTemplate<IFWL_Widget*>& group) const;
+ IFWL_Widget* GetDefaultButton(IFWL_Widget* pParent) const;
void AddRedrawCounts(IFWL_Widget* pWidget);
- void ResetRedrawCounts(IFWL_Widget* pWidget);
- CXFA_FWLAdapterWidgetMgr* GetAdapterWidgetMgr() const { return m_pAdapter; }
- CFWL_WidgetMgrDelegate* GetDelegate() const { return m_pDelegate.get(); }
- CFWL_WidgetMgrItem* GetWidgetMgrItem(IFWL_Widget* pWidget) const;
- bool IsThreadEnabled();
- bool IsFormDisabled();
- bool GetAdapterPopupPos(IFWL_Widget* pWidget,
+
+ bool IsFormDisabled() const {
+ return !!(m_dwCapability & FWL_WGTMGR_DisableForm);
+ }
+
+ void GetAdapterPopupPos(IFWL_Widget* pWidget,
FX_FLOAT fMinHeight,
FX_FLOAT fMaxHeight,
const CFX_RectF& rtAnchor,
- CFX_RectF& rtPopup);
+ CFX_RectF& rtPopup) const;
- protected:
- friend class CFWL_WidgetMgrDelegate;
+ private:
+ IFWL_Widget* GetFirstSiblingWidget(IFWL_Widget* pWidget) const;
+ IFWL_Widget* GetPriorSiblingWidget(IFWL_Widget* pWidget) const;
+ IFWL_Widget* GetLastChildWidget(IFWL_Widget* pWidget) const;
+ CFWL_WidgetMgrItem* GetWidgetMgrItem(IFWL_Widget* pWidget) const;
- int32_t TravelWidgetMgr(CFWL_WidgetMgrItem* pParent,
- int32_t* pIndex,
- CFWL_WidgetMgrItem* pItem,
- IFWL_Widget** pWidget = nullptr);
- bool IsAbleNative(IFWL_Widget* pWidget) const;
+ void SetWidgetIndex(IFWL_Widget* pWidget, int32_t nIndex);
- uint32_t m_dwCapability;
- std::unique_ptr<CFWL_WidgetMgrDelegate> m_pDelegate;
- std::map<IFWL_Widget*, std::unique_ptr<CFWL_WidgetMgrItem>> m_mapWidgetItem;
- CXFA_FWLAdapterWidgetMgr* const m_pAdapter;
-#if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_)
- CFX_RectF m_rtScreen;
-#endif
-};
+ int32_t CountRadioButtonGroup(IFWL_Widget* pFirst) const;
+ IFWL_Widget* GetRadioButtonGroupHeader(IFWL_Widget* pRadioButton) const;
-class CFWL_WidgetMgrDelegate {
- public:
- explicit CFWL_WidgetMgrDelegate(CFWL_WidgetMgr* pWidgetMgr);
- ~CFWL_WidgetMgrDelegate() {}
+ void ResetRedrawCounts(IFWL_Widget* pWidget);
- FWL_Error OnSetCapability(uint32_t dwCapability = FWL_WGTMGR_DisableThread);
- void OnProcessMessageToForm(CFWL_Message* pMessage);
- void OnDrawWidget(IFWL_Widget* pWidget,
- CFX_Graphics* pGraphics,
- const CFX_Matrix* pMatrix);
+ bool IsThreadEnabled() const {
+ return !(m_dwCapability & FWL_WGTMGR_DisableThread);
+ }
- protected:
void DrawChild(IFWL_Widget* pParent,
const CFX_RectF& rtClip,
CFX_Graphics* pGraphics,
@@ -138,9 +135,16 @@ class CFWL_WidgetMgrDelegate {
bool IsNeedRepaint(IFWL_Widget* pWidget,
CFX_Matrix* pMatrix,
const CFX_RectF& rtDirty);
- bool bUseOffscreenDirect(IFWL_Widget* pWidget);
+ bool UseOffscreenDirect(IFWL_Widget* pWidget) const;
- CFWL_WidgetMgr* m_pWidgetMgr;
+ bool IsAbleNative(IFWL_Widget* pWidget) const;
+
+ uint32_t m_dwCapability;
+ std::map<IFWL_Widget*, std::unique_ptr<CFWL_WidgetMgrItem>> m_mapWidgetItem;
+ CXFA_FWLAdapterWidgetMgr* const m_pAdapter;
+#if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_)
+ CFX_RectF m_rtScreen;
+#endif
};
#endif // XFA_FWL_CORE_CFWL_WIDGETMGR_H_