xref: /aoo41x/main/sc/source/ui/unoobj/editsrc.cxx (revision b3f79822)
1*b3f79822SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*b3f79822SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*b3f79822SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*b3f79822SAndrew Rist  * distributed with this work for additional information
6*b3f79822SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*b3f79822SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*b3f79822SAndrew Rist  * "License"); you may not use this file except in compliance
9*b3f79822SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*b3f79822SAndrew Rist  *
11*b3f79822SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*b3f79822SAndrew Rist  *
13*b3f79822SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*b3f79822SAndrew Rist  * software distributed under the License is distributed on an
15*b3f79822SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b3f79822SAndrew Rist  * KIND, either express or implied.  See the License for the
17*b3f79822SAndrew Rist  * specific language governing permissions and limitations
18*b3f79822SAndrew Rist  * under the License.
19*b3f79822SAndrew Rist  *
20*b3f79822SAndrew Rist  *************************************************************/
21*b3f79822SAndrew Rist 
22*b3f79822SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sc.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include "editsrc.hxx"
28cdf0e10cSrcweir 
29cdf0e10cSrcweir #include "scitems.hxx"
30cdf0e10cSrcweir #include <editeng/eeitem.hxx>
31cdf0e10cSrcweir #include <editeng/unofored.hxx>
32cdf0e10cSrcweir #include <svx/svdpage.hxx>
33cdf0e10cSrcweir #include <svx/svditer.hxx>
34cdf0e10cSrcweir #include <svx/svdocapt.hxx>
35cdf0e10cSrcweir #include <editeng/outlobj.hxx>
36cdf0e10cSrcweir #include <editeng/editobj.hxx>
37cdf0e10cSrcweir #include <editeng/outliner.hxx>
38cdf0e10cSrcweir #include "textuno.hxx"
39cdf0e10cSrcweir #include "editutil.hxx"
40cdf0e10cSrcweir #include "docsh.hxx"
41cdf0e10cSrcweir #include "docfunc.hxx"
42cdf0e10cSrcweir #include "hints.hxx"
43cdf0e10cSrcweir #include "patattr.hxx"
44cdf0e10cSrcweir #include "unoguard.hxx"
45cdf0e10cSrcweir #include "drwlayer.hxx"
46cdf0e10cSrcweir #include "userdat.hxx"
47cdf0e10cSrcweir #include "postit.hxx"
48cdf0e10cSrcweir #include "AccessibleText.hxx"
49cdf0e10cSrcweir 
50cdf0e10cSrcweir //------------------------------------------------------------------------
51cdf0e10cSrcweir 
52cdf0e10cSrcweir TYPEINIT1( ScHeaderFooterChangedHint, SfxHint );
53cdf0e10cSrcweir 
ScHeaderFooterChangedHint(sal_uInt16 nP)54cdf0e10cSrcweir ScHeaderFooterChangedHint::ScHeaderFooterChangedHint(sal_uInt16 nP) :
55cdf0e10cSrcweir 	nPart( nP )
56cdf0e10cSrcweir {
57cdf0e10cSrcweir }
58cdf0e10cSrcweir 
~ScHeaderFooterChangedHint()59cdf0e10cSrcweir ScHeaderFooterChangedHint::~ScHeaderFooterChangedHint()
60cdf0e10cSrcweir {
61cdf0e10cSrcweir }
62cdf0e10cSrcweir 
63cdf0e10cSrcweir //------------------------------------------------------------------------
64cdf0e10cSrcweir 
ScSharedHeaderFooterEditSource(ScHeaderFooterTextData * pData)65cdf0e10cSrcweir ScSharedHeaderFooterEditSource::ScSharedHeaderFooterEditSource( ScHeaderFooterTextData* pData ) :
66cdf0e10cSrcweir 	pTextData( pData )
67cdf0e10cSrcweir {
68cdf0e10cSrcweir 	//	pTextData is held by the ScHeaderFooterTextObj.
69cdf0e10cSrcweir 	//	Text range and cursor keep a reference to their parent text, so the text object is
70cdf0e10cSrcweir 	//	always alive and the TextData is valid as long as there are children.
71cdf0e10cSrcweir }
72cdf0e10cSrcweir 
~ScSharedHeaderFooterEditSource()73cdf0e10cSrcweir ScSharedHeaderFooterEditSource::~ScSharedHeaderFooterEditSource()
74cdf0e10cSrcweir {
75cdf0e10cSrcweir }
76cdf0e10cSrcweir 
Clone() const77cdf0e10cSrcweir SvxEditSource* ScSharedHeaderFooterEditSource::Clone() const
78cdf0e10cSrcweir {
79cdf0e10cSrcweir 	return new ScSharedHeaderFooterEditSource( pTextData );
80cdf0e10cSrcweir }
81cdf0e10cSrcweir 
GetTextForwarder()82cdf0e10cSrcweir SvxTextForwarder* ScSharedHeaderFooterEditSource::GetTextForwarder()
83cdf0e10cSrcweir {
84cdf0e10cSrcweir 	return pTextData->GetTextForwarder();
85cdf0e10cSrcweir }
86cdf0e10cSrcweir 
UpdateData()87cdf0e10cSrcweir void ScSharedHeaderFooterEditSource::UpdateData()
88cdf0e10cSrcweir {
89cdf0e10cSrcweir 	pTextData->UpdateData();
90cdf0e10cSrcweir }
91cdf0e10cSrcweir 
GetEditEngine()92cdf0e10cSrcweir ScEditEngineDefaulter* ScSharedHeaderFooterEditSource::GetEditEngine()
93cdf0e10cSrcweir {
94cdf0e10cSrcweir 	return pTextData->GetEditEngine();
95cdf0e10cSrcweir }
96cdf0e10cSrcweir 
97cdf0e10cSrcweir //------------------------------------------------------------------------
98cdf0e10cSrcweir 
99cdf0e10cSrcweir //	each ScHeaderFooterEditSource object has its own ScHeaderFooterTextData
100cdf0e10cSrcweir 
ScHeaderFooterEditSource(ScHeaderFooterContentObj * pContent,sal_uInt16 nP)101cdf0e10cSrcweir ScHeaderFooterEditSource::ScHeaderFooterEditSource( ScHeaderFooterContentObj* pContent,
102cdf0e10cSrcweir 													sal_uInt16 nP ) :
103cdf0e10cSrcweir 	ScSharedHeaderFooterEditSource( new ScHeaderFooterTextData( *pContent, nP ) )
104cdf0e10cSrcweir {
105cdf0e10cSrcweir }
106cdf0e10cSrcweir 
ScHeaderFooterEditSource(ScHeaderFooterContentObj & rContent,sal_uInt16 nP)107cdf0e10cSrcweir ScHeaderFooterEditSource::ScHeaderFooterEditSource( ScHeaderFooterContentObj& rContent,
108cdf0e10cSrcweir 													sal_uInt16 nP ) :
109cdf0e10cSrcweir 	ScSharedHeaderFooterEditSource( new ScHeaderFooterTextData( rContent, nP ) )
110cdf0e10cSrcweir {
111cdf0e10cSrcweir }
112cdf0e10cSrcweir 
~ScHeaderFooterEditSource()113cdf0e10cSrcweir ScHeaderFooterEditSource::~ScHeaderFooterEditSource()
114cdf0e10cSrcweir {
115cdf0e10cSrcweir 	delete GetTextData();	// not accessed in ScSharedHeaderFooterEditSource dtor
116cdf0e10cSrcweir }
117cdf0e10cSrcweir 
Clone() const118cdf0e10cSrcweir SvxEditSource* ScHeaderFooterEditSource::Clone() const
119cdf0e10cSrcweir {
120cdf0e10cSrcweir 	const ScHeaderFooterTextData* pData = GetTextData();
121cdf0e10cSrcweir 	return new ScHeaderFooterEditSource( pData->GetContentObj(), pData->GetPart() );
122cdf0e10cSrcweir }
123cdf0e10cSrcweir 
124cdf0e10cSrcweir //------------------------------------------------------------------------
125cdf0e10cSrcweir 
ScSharedCellEditSource(ScCellTextData * pData)126cdf0e10cSrcweir ScSharedCellEditSource::ScSharedCellEditSource( ScCellTextData* pData ) :
127cdf0e10cSrcweir 	pCellTextData( pData )
128cdf0e10cSrcweir {
129cdf0e10cSrcweir 	//	pCellTextData is part of the ScCellTextObj.
130cdf0e10cSrcweir 	//	Text range and cursor keep a reference to their parent text, so the text object is
131cdf0e10cSrcweir 	//	always alive and the CellTextData is valid as long as there are children.
132cdf0e10cSrcweir }
133cdf0e10cSrcweir 
~ScSharedCellEditSource()134cdf0e10cSrcweir ScSharedCellEditSource::~ScSharedCellEditSource()
135cdf0e10cSrcweir {
136cdf0e10cSrcweir }
137cdf0e10cSrcweir 
Clone() const138cdf0e10cSrcweir SvxEditSource* ScSharedCellEditSource::Clone() const
139cdf0e10cSrcweir {
140cdf0e10cSrcweir 	return new ScSharedCellEditSource( pCellTextData );
141cdf0e10cSrcweir }
142cdf0e10cSrcweir 
GetTextForwarder()143cdf0e10cSrcweir SvxTextForwarder* ScSharedCellEditSource::GetTextForwarder()
144cdf0e10cSrcweir {
145cdf0e10cSrcweir 	return pCellTextData->GetTextForwarder();
146cdf0e10cSrcweir }
147cdf0e10cSrcweir 
UpdateData()148cdf0e10cSrcweir void ScSharedCellEditSource::UpdateData()
149cdf0e10cSrcweir {
150cdf0e10cSrcweir 	pCellTextData->UpdateData();
151cdf0e10cSrcweir }
152cdf0e10cSrcweir 
SetDoUpdateData(sal_Bool bValue)153cdf0e10cSrcweir void ScSharedCellEditSource::SetDoUpdateData(sal_Bool bValue)
154cdf0e10cSrcweir {
155cdf0e10cSrcweir 	pCellTextData->SetDoUpdate(bValue);
156cdf0e10cSrcweir }
157cdf0e10cSrcweir 
IsDirty() const158cdf0e10cSrcweir sal_Bool ScSharedCellEditSource::IsDirty() const
159cdf0e10cSrcweir {
160cdf0e10cSrcweir 	return pCellTextData->IsDirty();
161cdf0e10cSrcweir }
162cdf0e10cSrcweir 
GetEditEngine()163cdf0e10cSrcweir ScEditEngineDefaulter* ScSharedCellEditSource::GetEditEngine()
164cdf0e10cSrcweir {
165cdf0e10cSrcweir 	return pCellTextData->GetEditEngine();
166cdf0e10cSrcweir }
167cdf0e10cSrcweir 
168cdf0e10cSrcweir //------------------------------------------------------------------------
169cdf0e10cSrcweir 
170cdf0e10cSrcweir //	each ScCellEditSource object has its own ScCellTextData
171cdf0e10cSrcweir 
ScCellEditSource(ScDocShell * pDocSh,const ScAddress & rP)172cdf0e10cSrcweir ScCellEditSource::ScCellEditSource( ScDocShell* pDocSh, const ScAddress& rP ) :
173cdf0e10cSrcweir 	ScSharedCellEditSource( new ScCellTextData( pDocSh, rP ) )
174cdf0e10cSrcweir {
175cdf0e10cSrcweir }
176cdf0e10cSrcweir 
~ScCellEditSource()177cdf0e10cSrcweir ScCellEditSource::~ScCellEditSource()
178cdf0e10cSrcweir {
179cdf0e10cSrcweir 	delete GetCellTextData();	// not accessed in ScSharedCellEditSource dtor
180cdf0e10cSrcweir }
181cdf0e10cSrcweir 
Clone() const182cdf0e10cSrcweir SvxEditSource* ScCellEditSource::Clone() const
183cdf0e10cSrcweir {
184cdf0e10cSrcweir 	const ScCellTextData* pData = GetCellTextData();
185cdf0e10cSrcweir 	return new ScCellEditSource( pData->GetDocShell(), pData->GetCellPos() );
186cdf0e10cSrcweir }
187cdf0e10cSrcweir 
188cdf0e10cSrcweir //------------------------------------------------------------------------
189cdf0e10cSrcweir 
ScAnnotationEditSource(ScDocShell * pDocSh,const ScAddress & rP)190cdf0e10cSrcweir ScAnnotationEditSource::ScAnnotationEditSource(ScDocShell* pDocSh, const ScAddress& rP) :
191cdf0e10cSrcweir 	pDocShell( pDocSh ),
192cdf0e10cSrcweir 	aCellPos( rP ),
193cdf0e10cSrcweir 	pEditEngine( NULL ),
194cdf0e10cSrcweir 	pForwarder( NULL ),
195cdf0e10cSrcweir 	bDataValid( sal_False )
196cdf0e10cSrcweir {
197cdf0e10cSrcweir 	if (pDocShell)
198cdf0e10cSrcweir 		pDocShell->GetDocument()->AddUnoObject(*this);
199cdf0e10cSrcweir }
200cdf0e10cSrcweir 
~ScAnnotationEditSource()201cdf0e10cSrcweir ScAnnotationEditSource::~ScAnnotationEditSource()
202cdf0e10cSrcweir {
203cdf0e10cSrcweir 	ScUnoGuard aGuard;		//	needed for EditEngine dtor
204cdf0e10cSrcweir 
205cdf0e10cSrcweir 	if (pDocShell)
206cdf0e10cSrcweir 		pDocShell->GetDocument()->RemoveUnoObject(*this);
207cdf0e10cSrcweir 
208cdf0e10cSrcweir 	delete pForwarder;
209cdf0e10cSrcweir 	delete pEditEngine;
210cdf0e10cSrcweir }
211cdf0e10cSrcweir 
Clone() const212cdf0e10cSrcweir SvxEditSource* ScAnnotationEditSource::Clone() const
213cdf0e10cSrcweir {
214cdf0e10cSrcweir 	return new ScAnnotationEditSource( pDocShell, aCellPos );
215cdf0e10cSrcweir }
216cdf0e10cSrcweir 
GetCaptionObj()217cdf0e10cSrcweir SdrObject* ScAnnotationEditSource::GetCaptionObj()
218cdf0e10cSrcweir {
219cdf0e10cSrcweir     ScPostIt* pNote = pDocShell->GetDocument()->GetNote( aCellPos );
220cdf0e10cSrcweir     return pNote ? pNote->GetOrCreateCaption( aCellPos ) : 0;
221cdf0e10cSrcweir }
222cdf0e10cSrcweir 
GetTextForwarder()223cdf0e10cSrcweir SvxTextForwarder* ScAnnotationEditSource::GetTextForwarder()
224cdf0e10cSrcweir {
225cdf0e10cSrcweir     if (!pEditEngine)
226cdf0e10cSrcweir 	{
227cdf0e10cSrcweir 		// Notizen haben keine Felder
228cdf0e10cSrcweir 		if ( pDocShell )
229cdf0e10cSrcweir         {
230cdf0e10cSrcweir 			pEditEngine = new ScNoteEditEngine( pDocShell->GetDocument()->GetNoteEngine() );
231cdf0e10cSrcweir         }
232cdf0e10cSrcweir 		else
233cdf0e10cSrcweir 		{
234cdf0e10cSrcweir 			SfxItemPool* pEnginePool = EditEngine::CreatePool();
235cdf0e10cSrcweir 			pEnginePool->FreezeIdRanges();
236cdf0e10cSrcweir 			pEditEngine = new ScEditEngineDefaulter( pEnginePool, sal_True );
237cdf0e10cSrcweir 		}
238cdf0e10cSrcweir 		pForwarder = new SvxEditEngineForwarder(*pEditEngine);
239cdf0e10cSrcweir 	}
240cdf0e10cSrcweir 
241cdf0e10cSrcweir 	if (bDataValid)
242cdf0e10cSrcweir 		return pForwarder;
243cdf0e10cSrcweir 
244cdf0e10cSrcweir 	if ( pDocShell )
245cdf0e10cSrcweir         if ( ScPostIt* pNote = pDocShell->GetDocument()->GetNote( aCellPos ) )
246cdf0e10cSrcweir             if ( const EditTextObject* pEditObj = pNote->GetEditTextObject() )
247cdf0e10cSrcweir                 pEditEngine->SetText( *pEditObj );		// incl. Umbrueche
248cdf0e10cSrcweir 
249cdf0e10cSrcweir 	bDataValid = sal_True;
250cdf0e10cSrcweir 	return pForwarder;
251cdf0e10cSrcweir }
252cdf0e10cSrcweir 
UpdateData()253cdf0e10cSrcweir void ScAnnotationEditSource::UpdateData()
254cdf0e10cSrcweir {
255cdf0e10cSrcweir 	if ( pDocShell && pEditEngine )
256cdf0e10cSrcweir 	{
257cdf0e10cSrcweir         ScDocShellModificator aModificator( *pDocShell );
258cdf0e10cSrcweir 
259cdf0e10cSrcweir         if( SdrObject* pObj = GetCaptionObj() )
260cdf0e10cSrcweir         {
261cdf0e10cSrcweir             EditTextObject* pEditObj = pEditEngine->CreateTextObject();
262cdf0e10cSrcweir             OutlinerParaObject* pOPO = new OutlinerParaObject( *pEditObj );
263cdf0e10cSrcweir             delete pEditObj;
264cdf0e10cSrcweir             pOPO->SetOutlinerMode( OUTLINERMODE_TEXTOBJECT );
265cdf0e10cSrcweir             pObj->NbcSetOutlinerParaObject( pOPO );
266cdf0e10cSrcweir             pObj->ActionChanged();
267cdf0e10cSrcweir         }
268cdf0e10cSrcweir 
269cdf0e10cSrcweir         //!	Undo !!!
270cdf0e10cSrcweir 
271cdf0e10cSrcweir         aModificator.SetDocumentModified();
272cdf0e10cSrcweir 
273cdf0e10cSrcweir 		// bDataValid wird bei SetDocumentModified zurueckgesetzt
274cdf0e10cSrcweir 	}
275cdf0e10cSrcweir }
276cdf0e10cSrcweir 
Notify(SfxBroadcaster &,const SfxHint & rHint)277cdf0e10cSrcweir void ScAnnotationEditSource::Notify( SfxBroadcaster&, const SfxHint& rHint )
278cdf0e10cSrcweir {
279cdf0e10cSrcweir 	if ( rHint.ISA( ScUpdateRefHint ) )
280cdf0e10cSrcweir 	{
281cdf0e10cSrcweir //        const ScUpdateRefHint& rRef = (const ScUpdateRefHint&)rHint;
282cdf0e10cSrcweir 
283cdf0e10cSrcweir 		//!	Ref-Update
284cdf0e10cSrcweir 	}
285cdf0e10cSrcweir 	else if ( rHint.ISA( SfxSimpleHint ) )
286cdf0e10cSrcweir 	{
287cdf0e10cSrcweir 		sal_uLong nId = ((const SfxSimpleHint&)rHint).GetId();
288cdf0e10cSrcweir 		if ( nId == SFX_HINT_DYING )
289cdf0e10cSrcweir 		{
290cdf0e10cSrcweir 			pDocShell = NULL;						// ungueltig geworden
291cdf0e10cSrcweir 
292cdf0e10cSrcweir 			DELETEZ( pForwarder );
293cdf0e10cSrcweir 			DELETEZ( pEditEngine );		// EditEngine uses document's pool
294cdf0e10cSrcweir 		}
295cdf0e10cSrcweir 		else if ( nId == SFX_HINT_DATACHANGED )
296cdf0e10cSrcweir 			bDataValid = sal_False;						// Text muss neu geholt werden
297cdf0e10cSrcweir 	}
298cdf0e10cSrcweir }
299cdf0e10cSrcweir 
300cdf0e10cSrcweir //------------------------------------------------------------------------
301cdf0e10cSrcweir 
ScSimpleEditSource(SvxTextForwarder * pForw)302cdf0e10cSrcweir ScSimpleEditSource::ScSimpleEditSource( SvxTextForwarder* pForw ) :
303cdf0e10cSrcweir 	pForwarder( pForw )
304cdf0e10cSrcweir {
305cdf0e10cSrcweir 	//	The same forwarder (and EditEngine) is shared by all children of the same Text object.
306cdf0e10cSrcweir 	//	Text range and cursor keep a reference to their parent text, so the text object is
307cdf0e10cSrcweir 	//	always alive and the forwarder is valid as long as there are children.
308cdf0e10cSrcweir }
309cdf0e10cSrcweir 
~ScSimpleEditSource()310cdf0e10cSrcweir ScSimpleEditSource::~ScSimpleEditSource()
311cdf0e10cSrcweir {
312cdf0e10cSrcweir }
313cdf0e10cSrcweir 
Clone() const314cdf0e10cSrcweir SvxEditSource* ScSimpleEditSource::Clone() const
315cdf0e10cSrcweir {
316cdf0e10cSrcweir 	return new ScSimpleEditSource( pForwarder );
317cdf0e10cSrcweir }
318cdf0e10cSrcweir 
GetTextForwarder()319cdf0e10cSrcweir SvxTextForwarder* ScSimpleEditSource::GetTextForwarder()
320cdf0e10cSrcweir {
321cdf0e10cSrcweir 	return pForwarder;
322cdf0e10cSrcweir }
323cdf0e10cSrcweir 
UpdateData()324cdf0e10cSrcweir void ScSimpleEditSource::UpdateData()
325cdf0e10cSrcweir {
326cdf0e10cSrcweir 	//	nothing
327cdf0e10cSrcweir }
328cdf0e10cSrcweir 
329cdf0e10cSrcweir //------------------------------------------------------------------------
330cdf0e10cSrcweir 
ScAccessibilityEditSource(::std::auto_ptr<ScAccessibleTextData> pAccessibleCellTextData)331cdf0e10cSrcweir ScAccessibilityEditSource::ScAccessibilityEditSource( ::std::auto_ptr < ScAccessibleTextData > pAccessibleCellTextData )
332cdf0e10cSrcweir 	: mpAccessibleTextData(pAccessibleCellTextData)
333cdf0e10cSrcweir {
334cdf0e10cSrcweir }
335cdf0e10cSrcweir 
~ScAccessibilityEditSource()336cdf0e10cSrcweir ScAccessibilityEditSource::~ScAccessibilityEditSource()
337cdf0e10cSrcweir {
338cdf0e10cSrcweir }
339cdf0e10cSrcweir 
Clone() const340cdf0e10cSrcweir SvxEditSource* ScAccessibilityEditSource::Clone() const
341cdf0e10cSrcweir {
342cdf0e10cSrcweir 	return new ScAccessibilityEditSource(::std::auto_ptr < ScAccessibleTextData > (mpAccessibleTextData->Clone()));
343cdf0e10cSrcweir }
344cdf0e10cSrcweir 
GetTextForwarder()345cdf0e10cSrcweir SvxTextForwarder* ScAccessibilityEditSource::GetTextForwarder()
346cdf0e10cSrcweir {
347cdf0e10cSrcweir 	return mpAccessibleTextData->GetTextForwarder();
348cdf0e10cSrcweir }
349cdf0e10cSrcweir 
GetViewForwarder()350cdf0e10cSrcweir SvxViewForwarder* ScAccessibilityEditSource::GetViewForwarder()
351cdf0e10cSrcweir {
352cdf0e10cSrcweir 	return mpAccessibleTextData->GetViewForwarder();
353cdf0e10cSrcweir }
354cdf0e10cSrcweir 
GetEditViewForwarder(sal_Bool bCreate)355cdf0e10cSrcweir SvxEditViewForwarder* ScAccessibilityEditSource::GetEditViewForwarder( sal_Bool bCreate )
356cdf0e10cSrcweir {
357cdf0e10cSrcweir 	return mpAccessibleTextData->GetEditViewForwarder(bCreate);
358cdf0e10cSrcweir }
359cdf0e10cSrcweir 
UpdateData()360cdf0e10cSrcweir void ScAccessibilityEditSource::UpdateData()
361cdf0e10cSrcweir {
362cdf0e10cSrcweir 	mpAccessibleTextData->UpdateData();
363cdf0e10cSrcweir }
364cdf0e10cSrcweir 
GetBroadcaster() const365cdf0e10cSrcweir SfxBroadcaster& ScAccessibilityEditSource::GetBroadcaster() const
366cdf0e10cSrcweir {
367cdf0e10cSrcweir 	return mpAccessibleTextData->GetBroadcaster();
368cdf0e10cSrcweir }
369cdf0e10cSrcweir 
370