Index: xfa/fwl/basewidget/fwl_editimp.cpp |
diff --git a/xfa/fwl/basewidget/fwl_editimp.cpp b/xfa/fwl/basewidget/fwl_editimp.cpp |
index 73c7fa31e14b75ea7802887c32501e1270d5349d..237e461917a0169ef9a3708755f1010c8d8817b1 100644 |
--- a/xfa/fwl/basewidget/fwl_editimp.cpp |
+++ b/xfa/fwl/basewidget/fwl_editimp.cpp |
@@ -27,6 +27,8 @@ |
#include "xfa/fwl/core/fwl_widgetimp.h" |
#include "xfa/fwl/core/fwl_widgetmgrimp.h" |
#include "xfa/fwl/core/ifwl_themeprovider.h" |
+#include "xfa/fxfa/app/xfa_ffdoc.h" |
+#include "xfa/fxfa/app/xfa_ffwidget.h" |
#include "xfa/fxgraphics/cfx_path.h" |
// static |
@@ -1619,9 +1621,30 @@ void CFWL_EditImp::InitEngine() { |
} |
m_pEdtEngine = IFDE_TxtEdtEngine::Create(); |
} |
-extern FX_BOOL FWL_ShowCaret(IFWL_Widget* pWidget, |
- FX_BOOL bVisible, |
- const CFX_RectF* pRtAnchor); |
+ |
+FX_BOOL FWL_ShowCaret(IFWL_Widget* pWidget, |
+ FX_BOOL bVisible, |
+ const CFX_RectF* pRtAnchor) { |
+ CXFA_FFWidget* pXFAWidget = (CXFA_FFWidget*)pWidget->GetPrivateData(pWidget); |
+ if (!pXFAWidget) { |
+ return FALSE; |
+ } |
+ IXFA_DocProvider* pDocProvider = pXFAWidget->GetDoc()->GetDocProvider(); |
+ if (!pDocProvider) { |
+ return FALSE; |
+ } |
+ if (bVisible) { |
+ CFX_Matrix mt; |
+ pXFAWidget->GetRotateMatrix(mt); |
+ CFX_RectF rt(*pRtAnchor); |
+ mt.TransformRect(rt); |
+ pDocProvider->DisplayCaret(pXFAWidget, bVisible, &rt); |
+ return TRUE; |
+ } |
+ pDocProvider->DisplayCaret(pXFAWidget, bVisible, pRtAnchor); |
+ return TRUE; |
+} |
+ |
void CFWL_EditImp::ShowCaret(FX_BOOL bVisible, CFX_RectF* pRect) { |
if (m_pCaret) { |
m_pCaret->ShowCaret(bVisible); |