20 #include <config_wasm_strip.h>
23 #include <com/sun/star/accessibility/AccessibleRole.hpp>
24 #include <com/sun/star/accessibility/AccessibleStateType.hpp>
25 #include <com/sun/star/accessibility/XAccessible.hpp>
26 #include <com/sun/star/accessibility/XAccessibleComponent.hpp>
27 #include <com/sun/star/accessibility/XAccessibleContext.hpp>
28 #include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
29 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
30 #include <com/sun/star/lang/XServiceInfo.hpp>
41 #include <osl/diagnose.h>
82 pEditView->DeleteSelected();
104 : m_bAcceptsTab(
false)
125 pItemPool->SetPoolDefaultItem(
127 pItemPool->SetPoolDefaultItem(
129 pItemPool->SetPoolDefaultItem(
144 pEditView->ShowCursor();
147 = pEditView->GetEditEngine()->GetTextHeight() - aOutputSize.Height();
149 if (aVisArea.Top() > nMaxVisAreaStart)
151 aVisArea.
SetTop(std::max<tools::Long>(nMaxVisAreaStart, 0));
152 aVisArea.SetSize(aOutputSize);
153 pEditView->SetVisArea(aVisArea);
154 pEditView->ShowCursor();
169 pEditView->SetBackgroundColor(aBgColor);
171 DoPaint(rRenderContext, rRect);
179 std::vector<tools::Rectangle> aLogicRects;
183 pEditView->Paint(rRect, &rRenderContext);
187 pEditView->ShowCursor(
false);
193 pEditView->GetSelectionRectangles(aLogicRects);
196 if (!aLogicRects.empty())
198 std::vector<basegfx::B2DRange> aLogicRanges;
199 aLogicRanges.reserve(aLogicRects.size());
202 for (
const auto& aRect : aLogicRects)
204 nMinX = std::min(nMinX, aRect.Left());
205 nMinY = std::min(nMinY, aRect.Top());
206 nMaxX = std::max(nMaxX, aRect.Right());
207 nMaxY = std::max(nMaxY, aRect.Bottom());
211 for (
const auto& aRect : aLogicRects)
217 auto nTop = aRect.Top();
219 nTop -= aLogicPixel.
Height();
220 auto nBottom = aRect.Bottom();
222 nBottom += aLogicPixel.Height();
223 auto nLeft = aRect.Left();
225 nLeft -= aLogicPixel.Width();
226 auto nRight = aRect.Right();
228 nRight += aLogicPixel.Width();
230 aLogicRanges.emplace_back(nLeft, nTop, nRight, nBottom);
237 aHighlight, std::move(aLogicRanges),
true);
243 std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D>
xProcessor(
245 aViewInformation2D));
250 rRenderContext.
Pop();
256 return pEditView && pEditView->
MouseMove(rMEvt);
299 sal_Int32 nLen = pEditEngine->
GetTextLen(nPar - 1);
317 return pEditView->
Command(rCEvt);
333 WeldViewForwarder(
const WeldViewForwarder&) =
delete;
334 WeldViewForwarder& operator=(
const WeldViewForwarder&) =
delete;
342 virtual bool IsValid()
const override;
352 class WeldEditSource;
358 WeldEditSource& m_rEditSource;
362 WeldTextForwarder(
const WeldTextForwarder&) =
delete;
363 WeldTextForwarder& operator=(
const WeldTextForwarder&) =
delete;
367 virtual ~WeldTextForwarder()
override;
370 virtual sal_Int32
GetTextLen(sal_Int32 nParagraph)
const override;
373 = EditEngineAttribs::All)
const override;
377 virtual void GetPortions(sal_Int32 nPara, std::vector<sal_Int32>& rList)
const override;
390 std::optional<Color>& rpTxtColor,
391 std::optional<Color>& rpFldColor)
override;
393 virtual bool IsValid()
const override;
396 virtual sal_Int32
GetFieldCount(sal_Int32 nPara)
const override;
403 virtual bool GetIndexAtPoint(
const Point&, sal_Int32& nPara, sal_Int32& nIndex)
const override;
404 virtual bool GetWordIndices(sal_Int32 nPara, sal_Int32 nIndex, sal_Int32& nStart,
405 sal_Int32& nEnd)
const override;
406 virtual bool GetAttributeRun(sal_Int32& nStartIndex, sal_Int32& nEndIndex, sal_Int32 nPara,
407 sal_Int32 nIndex,
bool bInCell =
false)
const override;
408 virtual sal_Int32
GetLineCount(sal_Int32 nPara)
const override;
409 virtual sal_Int32
GetLineLen(sal_Int32 nPara, sal_Int32 nLine)
const override;
411 sal_Int32 nParagraph, sal_Int32 nLine)
const override;
417 virtual sal_Int16
GetDepth(sal_Int32 nPara)
const override;
418 virtual bool SetDepth(sal_Int32 nPara, sal_Int16 nNewDepth)
override;
434 WeldEditViewForwarder(
const WeldEditViewForwarder&) =
delete;
435 WeldEditViewForwarder& operator=(
const WeldEditViewForwarder&) =
delete;
440 virtual bool IsValid()
const override;
447 virtual bool Copy()
override;
448 virtual bool Cut()
override;
449 virtual bool Paste()
override;
455 WeldViewForwarder m_aViewFwd;
456 WeldTextForwarder m_aTextFwd;
457 WeldEditViewForwarder m_aEditViewFwd;
460 WeldEditSource(
const WeldEditSource& rSrc)
462 , m_aViewFwd(rSrc.m_rEditAcc)
463 , m_aTextFwd(rSrc.m_rEditAcc, *this)
464 , m_aEditViewFwd(rSrc.m_rEditAcc)
465 , m_rEditAcc(rSrc.m_rEditAcc)
469 WeldEditSource&
operator=(
const WeldEditSource&) =
delete;
474 , m_aTextFwd(rAcc, *this)
475 , m_aEditViewFwd(rAcc)
480 virtual std::unique_ptr<SvxEditSource>
Clone()
const override
482 return std::unique_ptr<SvxEditSource>(
new WeldEditSource(*
this));
491 return &m_aEditViewFwd;
501 return const_cast<WeldEditSource*
>(
this)->m_aBroadCaster;
506 typedef cppu::WeakImplHelper<css::lang::XServiceInfo, css::accessibility::XAccessible,
507 css::accessibility::XAccessibleComponent,
508 css::accessibility::XAccessibleContext,
509 css::accessibility::XAccessibleEventBroadcaster>
521 : m_pController(pController)
522 , m_pEditEngine(nullptr)
523 , m_pEditView(nullptr)
531 m_pEditEngine = pEditEngine;
532 m_pEditView = pEditView;
534 new ::accessibility::AccessibleTextHelper(std::make_unique<WeldEditSource>(*
this)));
535 m_xTextHelper->SetEventSource(
this);
547 m_pEditEngine =
nullptr;
548 m_pEditView =
nullptr;
549 m_pController =
nullptr;
552 m_xTextHelper->SetEditSource(::std::unique_ptr<SvxEditSource>());
556 m_xTextHelper->Dispose();
557 m_xTextHelper.reset();
561 virtual css::uno::Reference<css::accessibility::XAccessibleContext>
574 throw css::uno::RuntimeException();
577 return rPoint.X >= 0 && rPoint.Y >= 0 && rPoint.X < aSz.
Width() && rPoint.Y < aSz.Height();
580 virtual css::uno::Reference<css::accessibility::XAccessible>
585 throw css::uno::RuntimeException();
587 return m_xTextHelper->GetAt(rPoint);
590 virtual css::awt::Rectangle SAL_CALL
getBounds()
override
594 throw css::uno::RuntimeException();
598 css::awt::Rectangle aRet;
600 aRet.X = aOutPos.X();
601 aRet.Y = aOutPos.Y();
602 aRet.
Width = aOutSize.Width();
603 aRet.Height = aOutSize.Height();
612 throw css::uno::RuntimeException();
614 const css::awt::Rectangle aRect(
getBounds());
615 css::awt::Point aRet;
627 throw css::uno::RuntimeException();
629 css::awt::Point aScreenLoc(0, 0);
633 Point aPos = pDrawingArea->get_accessible_location_on_screen();
634 aScreenLoc.X = aPos.X();
635 aScreenLoc.Y = aPos.Y();
641 virtual css::awt::Size SAL_CALL
getSize()
override
645 throw css::uno::RuntimeException();
648 return css::awt::Size(aSz.Width(), aSz.Height());
657 throw css::uno::RuntimeException();
660 return static_cast<sal_Int32
>(nCol);
667 throw css::uno::RuntimeException();
670 return static_cast<sal_Int32
>(nCol);
677 return m_xTextHelper->GetChildCount();
681 virtual css::uno::Reference<css::accessibility::XAccessible>
685 return m_xTextHelper->GetChild(i);
686 throw css::lang::IndexOutOfBoundsException();
689 virtual css::uno::Reference<css::accessibility::XAccessible>
694 throw css::uno::RuntimeException();
703 throw css::uno::RuntimeException();
714 css::uno::Reference<css::accessibility::XAccessibleContext> xParentContext(
715 xParent->getAccessibleContext());
718 if (xParentContext.is())
720 sal_Int32 nChildCount = xParentContext->getAccessibleChildCount();
721 for (sal_Int32 nChild = 0; (nChild < nChildCount) && (-1 == nRet); ++nChild)
723 css::uno::Reference<css::accessibility::XAccessible> xChild(
724 xParentContext->getAccessibleChild(nChild));
725 if (xChild.get() ==
this)
730 catch (
const css::uno::Exception&)
740 return css::accessibility::AccessibleRole::TEXT_FRAME;
771 virtual css::uno::Reference<css::accessibility::XAccessibleRelationSet>
776 throw css::uno::RuntimeException();
781 virtual css::uno::Reference<css::accessibility::XAccessibleStateSet>
786 = new ::utl::AccessibleStateSetHelper;
788 if (!m_pController || !m_xTextHelper)
789 pStateSet->AddState(css::accessibility::AccessibleStateType::DEFUNC);
792 pStateSet->AddState(css::accessibility::AccessibleStateType::MULTI_LINE);
793 pStateSet->AddState(css::accessibility::AccessibleStateType::ENABLED);
794 pStateSet->AddState(css::accessibility::AccessibleStateType::EDITABLE);
795 pStateSet->AddState(css::accessibility::AccessibleStateType::FOCUSABLE);
796 pStateSet->AddState(css::accessibility::AccessibleStateType::SELECTABLE);
798 pStateSet->AddState(css::accessibility::AccessibleStateType::FOCUSED);
800 pStateSet->AddState(css::accessibility::AccessibleStateType::ACTIVE);
802 pStateSet->AddState(css::accessibility::AccessibleStateType::SHOWING);
804 pStateSet->AddState(css::accessibility::AccessibleStateType::VISIBLE);
806 pStateSet->AddState(css::accessibility::AccessibleStateType::OPAQUE);
820 const css::uno::Reference<css::accessibility::XAccessibleEventListener>& rListener)
override
824 m_xTextHelper->AddEventListener(rListener);
828 const css::uno::Reference<css::accessibility::XAccessibleEventListener>& rListener)
override
832 m_xTextHelper->RemoveEventListener(rListener);
844 return {
"css::accessibility::Accessible",
"css::accessibility::AccessibleComponent",
845 "css::accessibility::AccessibleContext" };
851 #if !ENABLE_WASM_STRIP_ACCESSIBILITY
860 #if !ENABLE_WASM_STRIP_ACCESSIBILITY
869 bool WeldViewForwarder::IsValid()
const {
return m_rEditAcc.GetEditView() !=
nullptr; }
871 Point WeldViewForwarder::LogicToPixel(
const Point& rPoint,
const MapMode& rMapMode)
const
873 EditView* pEditView = m_rEditAcc.GetEditView();
879 aMapMode.SetOrigin(
Point());
883 Point WeldViewForwarder::PixelToLogic(
const Point& rPoint,
const MapMode& rMapMode)
const
885 EditView* pEditView = m_rEditAcc.GetEditView();
890 aMapMode.SetOrigin(
Point());
895 WeldTextForwarder::WeldTextForwarder(
WeldEditAccessible& rAcc, WeldEditSource& rSource)
897 , m_rEditSource(rSource)
899 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
904 WeldTextForwarder::~WeldTextForwarder()
906 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
913 if (
EditEngine* pEditEngine = m_rEditAcc.GetEditEngine())
928 m_rEditSource.GetBroadcaster().Broadcast(*aHint);
931 sal_Int32 WeldTextForwarder::GetParagraphCount()
const
933 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
937 sal_Int32 WeldTextForwarder::GetTextLen(sal_Int32 nParagraph)
const
939 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
940 return pEditEngine ? pEditEngine->
GetTextLen(nParagraph) : 0;
943 OUString WeldTextForwarder::GetText(
const ESelection& rSel)
const
945 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
948 aRet = pEditEngine->
GetText(rSel);
955 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
956 assert(pEditEngine &&
"EditEngine missing");
960 switch (nOnlyHardAttrib)
962 case EditEngineAttribs::All:
963 nFlags = GetAttribsFlags::ALL;
965 case EditEngineAttribs::OnlyHard:
966 nFlags = GetAttribsFlags::CHARATTRIBS;
969 SAL_WARN(
"svx",
"unknown flags for WeldTextForwarder::GetAttribs");
976 return pEditEngine->
GetAttribs(rSel, nOnlyHardAttrib);
980 SfxItemSet WeldTextForwarder::GetParaAttribs(sal_Int32 nPara)
const
982 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
983 assert(pEditEngine &&
"EditEngine missing");
988 while (nWhich <= EE_PARA_END)
990 if (aSet.GetItemState(nWhich) != SfxItemState::SET)
1001 void WeldTextForwarder::SetParaAttribs(sal_Int32 nPara,
const SfxItemSet& rSet)
1003 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1010 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1014 void WeldTextForwarder::RemoveAttribs(
const ESelection& rSelection)
1016 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1021 void WeldTextForwarder::GetPortions(sal_Int32 nPara, std::vector<sal_Int32>& rList)
const
1023 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1028 void WeldTextForwarder::QuickInsertText(
const OUString& rText,
const ESelection& rSel)
1030 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1035 void WeldTextForwarder::QuickInsertLineBreak(
const ESelection& rSel)
1037 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1044 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1051 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1056 bool WeldTextForwarder::IsValid()
const
1058 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1064 OUString WeldTextForwarder::CalcFieldValue(
const SvxFieldItem& rField, sal_Int32 nPara,
1065 sal_Int32 nPos, std::optional<Color>& rpTxtColor,
1066 std::optional<Color>& rpFldColor)
1068 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1069 return pEditEngine ? pEditEngine->
CalcFieldValue(rField, nPara, nPos, rpTxtColor, rpFldColor)
1073 void WeldTextForwarder::FieldClicked(
const SvxFieldItem&) {}
1078 std::vector<EECharAttrib> aAttribs;
1094 sal_Int32 nEndPos = rSel.
nEndPos;
1103 sal_Int32 nLastEnd = nPos;
1107 for (
const auto& rAttrib : aAttribs)
1109 OSL_ENSURE(rAttrib.pAttr,
"GetCharAttribs gives corrupt data");
1111 const bool bEmptyPortion = (rAttrib.nStart == rAttrib.nEnd);
1112 if ((!bEmptyPortion && (rAttrib.nStart >= nEndPos))
1113 || (bEmptyPortion && (rAttrib.nStart > nEndPos)))
1116 if ((!bEmptyPortion && (rAttrib.nEnd <= nPos))
1117 || (bEmptyPortion && (rAttrib.nEnd < nPos)))
1120 if (rAttrib.pAttr->Which() != nWhich)
1127 if (*pParaItem != *(rAttrib.pAttr))
1128 return SfxItemState::DONTCARE;
1132 pParaItem = rAttrib.pAttr;
1138 if (!bGaps && rAttrib.nStart > nLastEnd)
1141 nLastEnd = rAttrib.nEnd;
1144 if (!bEmpty && !bGaps && nLastEnd < (nEndPos - 1))
1147 eParaState = SfxItemState::DEFAULT;
1149 eParaState = SfxItemState::DONTCARE;
1151 eParaState = SfxItemState::SET;
1156 if ((pParaItem ==
nullptr) || (*pLastItem != *pParaItem))
1157 return SfxItemState::DONTCARE;
1161 pLastItem = pParaItem;
1162 eState = eParaState;
1172 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1178 SfxItemState WeldTextForwarder::GetItemState(sal_Int32 nPara, sal_uInt16 nWhich)
const
1181 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1190 LanguageType WeldTextForwarder::GetLanguage(sal_Int32 nPara, sal_Int32 nIndex)
const
1192 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1196 sal_Int32 WeldTextForwarder::GetFieldCount(sal_Int32 nPara)
const
1198 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1202 EFieldInfo WeldTextForwarder::GetFieldInfo(sal_Int32 nPara, sal_uInt16 nField)
const
1204 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1210 tools::Rectangle WeldTextForwarder::GetCharBounds(sal_Int32 nPara, sal_Int32 nIndex)
const
1213 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1218 if (nIndex >= pEditEngine->
GetTextLen(nPara))
1223 aRect.
Move(aRect.Right() - aRect.Left(), 0);
1237 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1243 const sal_Int32 nHeight = pEditEngine->
GetTextHeight(nPara);
1244 aRect =
tools::Rectangle(aPnt.X(), aPnt.Y(), aPnt.X() + nWidth, aPnt.Y() + nHeight);
1250 MapMode WeldTextForwarder::GetMapMode()
const
1252 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1258 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1259 return pEditEngine ? pEditEngine->
GetRefDevice() :
nullptr;
1262 bool WeldTextForwarder::GetIndexAtPoint(
const Point& rPos, sal_Int32& nPara,
1263 sal_Int32& nIndex)
const
1266 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1270 nPara = aDocPos.
nPara;
1277 bool WeldTextForwarder::GetWordIndices(sal_Int32 nPara, sal_Int32 nIndex, sal_Int32& nStart,
1278 sal_Int32& nEnd)
const
1281 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1285 css::i18n::WordType::DICTIONARY_WORD);
1299 bool WeldTextForwarder::GetAttributeRun(sal_Int32& nStartIndex, sal_Int32& nEndIndex,
1300 sal_Int32 nPara, sal_Int32 nIndex,
bool bInCell)
const
1302 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1310 sal_Int32 WeldTextForwarder::GetLineCount(sal_Int32 nPara)
const
1312 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1313 return pEditEngine ? pEditEngine->
GetLineCount(nPara) : 0;
1316 sal_Int32 WeldTextForwarder::GetLineLen(sal_Int32 nPara, sal_Int32 nLine)
const
1318 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1319 return pEditEngine ? pEditEngine->
GetLineLen(nPara, nLine) : 0;
1322 void WeldTextForwarder::GetLineBoundaries( sal_Int32& rStart, sal_Int32& rEnd,
1323 sal_Int32 nPara, sal_Int32 nLine)
const
1325 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1332 sal_Int32 WeldTextForwarder::GetLineNumberAtIndex(sal_Int32 nPara, sal_Int32 nIndex)
const
1334 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1338 bool WeldTextForwarder::QuickFormatDoc(
bool )
1341 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1350 sal_Int16 WeldTextForwarder::GetDepth(sal_Int32 )
const
1356 bool WeldTextForwarder::SetDepth(sal_Int32 , sal_Int16 nNewDepth)
1359 return -1 == nNewDepth;
1362 bool WeldTextForwarder::Delete(
const ESelection& rSelection)
1365 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1375 bool WeldTextForwarder::InsertText(
const OUString& rStr,
const ESelection& rSelection)
1378 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1388 const SfxItemSet* WeldTextForwarder::GetEmptyItemSetPtr()
1391 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1399 void WeldTextForwarder::AppendParagraph()
1402 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1410 sal_Int32 WeldTextForwarder::AppendTextPortion(sal_Int32 nPara,
const OUString& rText,
1413 sal_uInt16 nRes = 0;
1414 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1415 if (pEditEngine && nPara < pEditEngine->GetParagraphCount())
1422 nRes = aSel.nEndPos = pEditEngine->
GetTextLen(nPara);
1430 const WeldTextForwarder* pSourceForwarder =
dynamic_cast<const WeldTextForwarder*
>(&rSource);
1431 if (!pSourceForwarder)
1433 EditEngine* pSourceEditEngine = pSourceForwarder->m_rEditAcc.GetEditEngine();
1434 EditEngine* pEditEngine = m_rEditAcc.GetEditEngine();
1435 if (pEditEngine && pSourceEditEngine)
1437 std::unique_ptr<EditTextObject> pNewTextObject = pSourceEditEngine->
CreateTextObject();
1438 pEditEngine->
SetText(*pNewTextObject);
1447 bool WeldEditViewForwarder::IsValid()
const {
return m_rEditAcc.GetEditView() !=
nullptr; }
1449 Point WeldEditViewForwarder::LogicToPixel(
const Point& rPoint,
const MapMode& rMapMode)
const
1451 EditView* pEditView = m_rEditAcc.GetEditView();
1457 aMapMode.SetOrigin(
Point());
1461 Point WeldEditViewForwarder::PixelToLogic(
const Point& rPoint,
const MapMode& rMapMode)
const
1463 EditView* pEditView = m_rEditAcc.GetEditView();
1468 aMapMode.SetOrigin(
Point());
1473 bool WeldEditViewForwarder::GetSelection(
ESelection& rSelection)
const
1476 EditView* pEditView = m_rEditAcc.GetEditView();
1485 bool WeldEditViewForwarder::SetSelection(
const ESelection& rSelection)
1488 EditView* pEditView = m_rEditAcc.GetEditView();
1497 bool WeldEditViewForwarder::Copy()
1500 EditView* pEditView = m_rEditAcc.GetEditView();
1509 bool WeldEditViewForwarder::Cut()
1512 EditView* pEditView = m_rEditAcc.GetEditView();
1521 bool WeldEditViewForwarder::Paste()
1524 EditView* pEditView = m_rEditAcc.GetEditView();
1536 if (aSize.Width() == -1)
1538 if (aSize.Height() == -1)
1539 aSize.setHeight(100);
1571 pDrawingArea->
set_cursor(PointerStyle::Text);
1573 #if !ENABLE_WASM_STRIP_ACCESSIBILITY
1578 #if !ENABLE_WASM_STRIP_ACCESSIBILITY
1614 #if !ENABLE_WASM_STRIP_ACCESSIBILITY
1630 #if !ENABLE_WASM_STRIP_ACCESSIBILITY
1671 return std::unique_ptr<UIObject>(
new WeldEditViewUIObject(pWindow));
1677 aMap[
"Text"] = mpEditView->
GetText();
1682 virtual OUString
get_name()
const override {
return "WeldEditViewUIObject"; }
#define LINK(Instance, Class, Member)
void QuickInsertLineBreak(const ESelection &rSel)
virtual Point get_pointer_position() const =0
DECL_LINK(CheckNameHdl, SvxNameDialog &, bool)
OUString GetText(LineEnd eEnd=LINEEND_LF) const
constexpr TypedWhichId< SvxFontItem > EE_CHAR_FONTINFO_CJK(EE_CHAR_START+17)
OutputDevice & GetOutputDevice() const
virtual tools::Rectangle GetParaBounds(sal_Int32 nPara) const =0
virtual css::awt::Point SAL_CALL getLocation() override
Color GetAutoColor() const
virtual tools::Rectangle GetCharBounds(sal_Int32 nPara, sal_Int32 nIndex) const =0
virtual bool IsValid() const =0
TOOLS_DLLPUBLIC OString convertLineEnd(const OString &rIn, LineEnd eLineEnd)
OUString GetWord(sal_Int32 nPara, sal_Int32 nIndex)
void DrawToDevice(OutputDevice &rRenderContext)
virtual sal_Int32 SAL_CALL getAccessibleIndexInParent() override
virtual OUString SAL_CALL getAccessibleName() override
const OUString & GetFamilyName() const
virtual std::unique_ptr< SvxEditSource > Clone() const =0
virtual void FieldClicked(const SvxFieldItem &rField)=0
virtual OUString CalcFieldValue(const SvxFieldItem &rField, sal_Int32 nPara, sal_Int32 nPos, std::optional< Color > &rTxtColor, std::optional< Color > &rFldColor)
virtual void Resize() override
void setWidth(tools::Long nWidth)
virtual a11yref get_accessible_parent()=0
bool Command(const CommandEvent &rCEvt)
Helper class for objects containing EditEngine/Outliner text.
const SfxItemSet & GetEmptyItemSet() const
virtual void AppendParagraph()=0
SAL_WARN_UNUSED_RESULT Point LogicToLogic(const Point &rPtSource, const MapMode *pMapModeSource, const MapMode *pMapModeDest) const
MapMode const & GetRefMapMode() const
virtual SvxEditViewForwarder * GetEditViewForwarder(bool bCreate=false)
virtual void QuickInsertField(const SvxFieldItem &rFld, const ESelection &rSel)=0
virtual SfxItemState GetItemState(const ESelection &rSel, sal_uInt16 nWhich) const =0
void QuickInsertField(const SvxFieldItem &rFld, const ESelection &rSel)
sal_Int32 GetLineNumberAtIndex(sal_Int32 nPara, sal_Int32 nIndex) const
virtual sal_Int32 GetLineNumberAtIndex(sal_Int32 nPara, sal_Int32 nIndex) const =0
virtual bool GetSelection(ESelection &rSelection) const =0
static SfxItemState GetSvxEditEngineItemState(EditEngine const &rEditEngine, const ESelection &rSel, sal_uInt16 nWhich)
constexpr::Color COL_TRANSPARENT(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
static::std::unique_ptr< SfxHint > EENotification2Hint(EENotify const *aNotify)
const StyleSettings & GetStyleSettings() const
static const AllSettings & GetSettings()
constexpr sal_uInt16 KEY_A
void Push(vcl::PushFlags nFlags=vcl::PushFlags::ALL)
LanguageType GetDefaultLanguage() const
void ShowCursor(bool bGotoCursor=true, bool bForceVisCursor=true, bool bActivate=false)
SvxTableController * mpController
std::function< std::unique_ptr< UIObject >vcl::Window *)> FactoryFunction
sal_Int32 GetLineCount(sal_Int32 nParagraph) const
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
virtual void QuickInsertLineBreak(const ESelection &rSel)=0
bool HasSelection() const
virtual bool DeleteSurroundingText(const Selection &rRange) override
const MapMode & GetMapMode() const
sal_uInt16 GetCode() const
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild(sal_Int32 i) override
virtual sal_Int32 SAL_CALL getAccessibleChildCount() override
bool MouseButtonUp(const MouseEvent &rMouseEvent)
Selection GetSurroundingTextSelection() const
virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext() override
virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet() override
OUString GetSurroundingText() const
void DoPaint(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect)
IMPL_LINK(WeldTextForwarder, NotifyHdl, EENotify &, rNotify, void)
virtual a11yrelationset get_accessible_relation_set()=0
virtual void SetDrawingArea(weld::DrawingArea *pDrawingArea) override
void SetText(const OUString &rStr)
constexpr TypedWhichId< SvxFontHeightItem > EE_CHAR_FONTHEIGHT(EE_CHAR_START+2)
virtual OUString get_name() const
std::unique_ptr<::accessibility::AccessibleTextHelper > m_xTextHelper
SfxItemSet GetAttribs(sal_Int32 nPara, sal_Int32 nStart, sal_Int32 nEnd, GetAttribsFlags nFlags=GetAttribsFlags::ALL) const
std::unique_ptr< BaseProcessor2D > createProcessor2DFromOutputDevice(OutputDevice &rTargetOutDev, const drawinglayer::geometry::ViewInformation2D &rViewInformation2D)
EditEngine * m_pEditEngine
FontFamily GetFamilyType()
tools::Long GetFontHeight() const
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
std::map< OUString, OUString > StringMap
virtual void EditViewScrollStateChange()
virtual css::uno::Reference< css::datatransfer::clipboard::XClipboard > GetClipboard() const override
SvxEditSource & operator=(SvxEditSource const &)=default
bool HasParaAttrib(sal_Int32 nPara, sal_uInt16 nWhich) const
constexpr tools::Long Width() const
HashMap_OWString_Interface aMap
Color const & GetBackgroundColor() const
static rtl::Reference< SfxItemPool > CreatePool()
virtual sal_Int16 SAL_CALL getAccessibleRole() override
WeldEditAccessible(weld::CustomWidgetController *pController)
virtual EditEngine * GetEditEngine() const
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint(const css::awt::Point &rPoint) override
virtual css::uno::Reference< css::accessibility::XAccessible > CreateAccessible() override
::accessibility::AccessibleTextHelper * GetTextHelper()
virtual sal_Int32 AppendTextPortion(sal_Int32 nPara, const OUString &rText, const SfxItemSet &rSet)=0
virtual bool InsertText(const OUString &rText, const ESelection &rSel)=0
virtual StringMap get_state() override
void SetText(const OUString &rStr)
tools::Rectangle GetCharacterBounds(const EPosition &rPos) const
virtual bool SetDepth(sal_Int32 nPara, sal_Int16 nNewDepth)=0
constexpr TypedWhichId< SvxFontItem > EE_CHAR_FONTINFO_CTL(EE_CHAR_START+18)
virtual SfxItemSet GetParaAttribs(sal_Int32 nPara) const =0
LineEnd GetSystemLineEnd()
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
void SetModifyHdl(const Link< LinkParamNone *, void > &rLink)
EPosition FindDocPosition(const Point &rDocPos) const
virtual bool QuickFormatDoc(bool bFull=false)=0
virtual void CopyText(const SvxTextForwarder &rSource)=0
virtual bool MouseButtonUp(const MouseEvent &rMEvt) override
weld::CustomWidgetController * m_pController
virtual OutputDevice & get_ref_device()=0
sal_Int32 GetTextLen() const
virtual sal_Int32 SAL_CALL getForeground() override
void SetNotifyHdl(const Link< EENotify &, void > &rLink)
virtual EBulletInfo GetBulletInfo(sal_Int32 nPara) const =0
virtual FactoryFunction GetUITestFactory() const override
void QuickFormatDoc(bool bFull=false)
virtual LanguageType GetLanguage(sal_Int32 nPara, sal_Int32 nIndex) const =0
virtual void GetLineBoundaries(sal_Int32 &rStart, sal_Int32 &rEnd, sal_Int32 nParagraph, sal_Int32 nLine) const =0
virtual css::awt::Point SAL_CALL getLocationOnScreen() override
virtual void set_cursor(PointerStyle ePointerStyle)=0
#define TOOLS_WARN_EXCEPTION(area, stream)
virtual void SetParaAttribs(sal_Int32 nPara, const SfxItemSet &rSet)=0
virtual SfxBroadcaster & GetBroadcaster() const
virtual OutputDevice * GetRefDevice() const =0
void GetCharAttribs(sal_Int32 nPara, std::vector< EECharAttrib > &rLst) const
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
Point GetDocPosTopLeft(sal_Int32 nParagraph)
sal_Int32 GetLineLen(sal_Int32 nParagraph, sal_Int32 nLine) const
constexpr sal_uInt16 EE_PARA_START(EE_ITEMS_START+0)
bool DeleteSurroundingText(const Selection &rRange)
virtual OUString SAL_CALL getImplementationName() override
bool MouseMove(const MouseEvent &rMouseEvent)
virtual MapMode GetMapMode() const =0
virtual SfxItemPool * GetPool() const =0
virtual sal_Int16 GetDepth(sal_Int32 nPara) const =0
std::unique_ptr< EditTextObject > CreateTextObject()
virtual css::lang::Locale SAL_CALL getLocale() override
virtual SvxTextForwarder * GetTextForwarder()=0
virtual bool GetAttributeRun(sal_Int32 &nStartIndex, sal_Int32 &nEndIndex, sal_Int32 nPara, sal_Int32 nIndex, bool bInCell=false) const =0
virtual bool MouseMove(const MouseEvent &rMEvt) override
void GetLineBoundaries(sal_Int32 &rStart, sal_Int32 &rEnd, sal_Int32 nParagraph, sal_Int32 nLine) const
virtual SvxViewForwarder * GetViewForwarder()
std::unique_ptr< EditView > m_xEditView
virtual sal_Int32 GetFieldCount(sal_Int32 nPara) const =0
virtual void GetFocus() override
virtual css::uno::Reference< css::datatransfer::dnd::XDropTarget > GetDropTarget() override
virtual EFieldInfo GetFieldInfo(sal_Int32 nPara, sal_uInt16 nField) const =0
virtual void SAL_CALL addAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &rListener) override
SfxItemPool * GetPool() const
sal_uInt16 GetFieldCount(sal_Int32 nPara) const
virtual css::awt::Rectangle SAL_CALL getBounds() override
sal_Int32 GetParagraphCount() const
virtual Point LogicToPixel(const Point &rPoint, const MapMode &rMapMode) const =0
virtual sal_Int32 GetLineLen(sal_Int32 nPara, sal_Int32 nLine) const =0
virtual EditView * GetEditView() const
virtual css::awt::Size SAL_CALL getSize() override
virtual Point PixelToLogic(const Point &rPoint, const MapMode &rMapMode) const =0
static void GetAttributeRun(sal_Int32 &nStartIndex, sal_Int32 &nEndIndex, const EditEngine &rEE, sal_Int32 nPara, sal_Int32 nIndex, bool bInCell=false)
SAL_WARN_UNUSED_RESULT Point PixelToLogic(const Point &rDevicePt) const
SAL_WARN_UNUSED_RESULT Point LogicToPixel(const Point &rLogicPt) const
virtual void SAL_CALL grabFocus() override
virtual int GetSurroundingText(OUString &rSurrounding) override
void Init(EditEngine *pEditEngine, EditView *pEditView)
void SetPaperSize(const Size &rSize)
void SetModifyHdl(const Link< LinkParamNone *, void > &rLink)
virtual sal_Int32 GetLineCount(sal_Int32 nPara) const =0
virtual bool KeyInput(const KeyEvent &rKEvt) override
const vcl::KeyCode & GetKeyCode() const
bool PostKeyEvent(const KeyEvent &rKeyEvent, vcl::Window const *pFrameWin=nullptr)
virtual bool GetWordIndices(sal_Int32 nPara, sal_Int32 nIndex, sal_Int32 &rStart, sal_Int32 &rEnd) const =0
virtual bool MouseButtonDown(const MouseEvent &rMEvt) override
EE_NOTIFY_PROCESSNOTIFICATIONS
constexpr TypedWhichId< SvxFontHeightItem > EE_CHAR_FONTHEIGHT_CTL(EE_CHAR_START+20)
constexpr tools::Long Height() const
virtual ~WeldEditView() override
bool MouseButtonDown(const MouseEvent &rMouseEvent)
virtual void SAL_CALL removeAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &rListener) override
void InsertParagraph(sal_Int32 nPara, const EditTextObject &rTxtObj, const bool bAppend=false)
void RemoveAttribs(const ESelection &rSelection, bool bRemoveParaAttribs, sal_uInt16 nWhich)
virtual bool Delete(const ESelection &rSelection)=0
bool IsUpdateLayout() const
void GetPortions(sal_Int32 nPara, std::vector< sal_Int32 > &rList)
sal_uInt32 GetTextHeight() const
virtual bool GetIndexAtPoint(const Point &rPoint, sal_Int32 &rPara, sal_Int32 &rIndex) const =0
virtual void makeEditEngine()
virtual SfxItemSet GetAttribs(const ESelection &rSel, EditEngineAttribs nOnlyHardAttrib=EditEngineAttribs::All) const =0
virtual sal_Int32 SAL_CALL getBackground() override
virtual bool IsValid() const =0
void QuickDelete(const ESelection &rSel)
void QuickSetAttribs(const SfxItemSet &rSet, const ESelection &rSel)
rtl::Reference< WeldEditAccessible > m_xAccessible
EFieldInfo GetFieldInfo(sal_Int32 nPara, sal_uInt16 nField) const
virtual void RemoveAttribs(const ESelection &rSelection)=0
const Color & GetWindowColor() const
constexpr TypedWhichId< SvxFontItem > EE_CHAR_FONTINFO(EE_CHAR_START+1)
virtual sal_Int32 GetTextLen(sal_Int32 nParagraph) const =0
OutputDevice * GetRefDevice() const
void SetSelection(const ESelection &rNewSel)
virtual void SetParaAttribs(sal_Int32 nPara, const SfxItemSet &rSet)
virtual void QuickInsertText(const OUString &rText, const ESelection &rSel)=0
std::unique_ptr< EditEngine > m_xEditEngine
virtual void GetPortions(sal_Int32 nPara, std::vector< sal_Int32 > &rList) const =0
virtual const SfxItemSet * GetEmptyItemSetPtr()=0
virtual sal_Bool SAL_CALL supportsService(const OUString &rServiceName) override
virtual void LoseFocus() override
#define SAL_WARN(area, stream)
css::uno::Reference< css::datatransfer::dnd::XDropTarget > m_xDropTarget
constexpr TypedWhichId< SvxFontHeightItem > EE_CHAR_FONTHEIGHT_CJK(EE_CHAR_START+19)
bool GetAcceptsTab() const
ESelection GetSelection() const
void QuickInsertText(const OUString &rText, const ESelection &rSel)
sal_uInt32 CalcTextWidth()
virtual OUString CalcFieldValue(const SvxFieldItem &rField, sal_Int32 nPara, sal_Int32 nPos, std::optional< Color > &rpTxtColor, std::optional< Color > &rpFldColor)=0
editeng::LanguageSpan GetLanguage(const EditPaM &rPaM) const
virtual bool Command(const CommandEvent &rCEvt) override
void SetFocus(bool bHaveFocus=true)
Set the focus state of the accessibility object.
static std::unique_ptr< UIObject > create(vcl::Window *pWindow)
virtual OUString SAL_CALL getAccessibleDescription() override
virtual sal_Bool SAL_CALL containsPoint(const css::awt::Point &rPoint) override
virtual sal_Int32 GetParagraphCount() const =0
basegfx::B2DHomMatrix GetViewTransformation() const
virtual drawinglayer::primitive2d::Primitive2DContainer getOverlayObjectPrimitive2DSequence() const override
override to check conditions for last createOverlayObjectPrimitive2DSequence
const SfxPoolItem & GetParaAttrib(sal_Int32 nPara, sal_uInt16 nWhich) const
cppu::WeakImplHelper< css::lang::XServiceInfo, css::accessibility::XAccessible, css::accessibility::XAccessibleComponent, css::accessibility::XAccessibleContext, css::accessibility::XAccessibleEventBroadcaster > WeldEditAccessibleBaseClass
virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet() override
bool HasSelection() const
EditEngine * GetEditEngine()
virtual void UpdateData()=0
const SfxItemSet & GetParaAttribs(sal_Int32 nPara) const
virtual bool SetSelection(const ESelection &rSelection)=0
virtual void Paint(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect) override
virtual Point EditViewPointerPosPixel() const override
virtual bool CanFocus() const
constexpr sal_uInt16 KEY_TAB
virtual void QuickSetAttribs(const SfxItemSet &rSet, const ESelection &rSel)=0
virtual OUString GetText(const ESelection &rSel) const =0
bool m_bDetectedRangeSegmentation false
::rtl::Reference< IEventProcessor > xProcessor