1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_svx.hxx"
26*b1cdbd2cSJim Jagielski #include <svx/sdr/properties/textproperties.hxx>
27*b1cdbd2cSJim Jagielski #include <svl/itemset.hxx>
28*b1cdbd2cSJim Jagielski #include <svl/style.hxx>
29*b1cdbd2cSJim Jagielski #include <svl/itemiter.hxx>
30*b1cdbd2cSJim Jagielski #include <svl/smplhint.hxx>
31*b1cdbd2cSJim Jagielski #include <svx/svddef.hxx>
32*b1cdbd2cSJim Jagielski #include <svx/svdotext.hxx>
33*b1cdbd2cSJim Jagielski #include <svx/svdoutl.hxx>
34*b1cdbd2cSJim Jagielski #include <editeng/writingmodeitem.hxx>
35*b1cdbd2cSJim Jagielski #include <svx/svdmodel.hxx>
36*b1cdbd2cSJim Jagielski #include <editeng/outlobj.hxx>
37*b1cdbd2cSJim Jagielski #include <svx/xflclit.hxx>
38*b1cdbd2cSJim Jagielski #include <editeng/adjitem.hxx>
39*b1cdbd2cSJim Jagielski #include <svx/svdetc.hxx>
40*b1cdbd2cSJim Jagielski #include <editeng/editeng.hxx>
41*b1cdbd2cSJim Jagielski #include <editeng/flditem.hxx>
42*b1cdbd2cSJim Jagielski #include <svx/xlnwtit.hxx>
43*b1cdbd2cSJim Jagielski #include <svx/svdpool.hxx>
44*b1cdbd2cSJim Jagielski 
45*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
46*b1cdbd2cSJim Jagielski 
47*b1cdbd2cSJim Jagielski namespace sdr
48*b1cdbd2cSJim Jagielski {
49*b1cdbd2cSJim Jagielski 	namespace properties
50*b1cdbd2cSJim Jagielski 	{
CreateObjectSpecificItemSet(SfxItemPool & rPool)51*b1cdbd2cSJim Jagielski 		SfxItemSet& TextProperties::CreateObjectSpecificItemSet(SfxItemPool& rPool)
52*b1cdbd2cSJim Jagielski 		{
53*b1cdbd2cSJim Jagielski 			return *(new SfxItemSet(rPool,
54*b1cdbd2cSJim Jagielski 
55*b1cdbd2cSJim Jagielski 				// range from SdrAttrObj
56*b1cdbd2cSJim Jagielski 				SDRATTR_START, SDRATTR_SHADOW_LAST,
57*b1cdbd2cSJim Jagielski 				SDRATTR_MISC_FIRST, SDRATTR_MISC_LAST,
58*b1cdbd2cSJim Jagielski 				SDRATTR_TEXTDIRECTION, SDRATTR_TEXTDIRECTION,
59*b1cdbd2cSJim Jagielski 
60*b1cdbd2cSJim Jagielski 				// range from SdrTextObj
61*b1cdbd2cSJim Jagielski 				EE_ITEMS_START, EE_ITEMS_END,
62*b1cdbd2cSJim Jagielski 
63*b1cdbd2cSJim Jagielski 				// end
64*b1cdbd2cSJim Jagielski 				0, 0));
65*b1cdbd2cSJim Jagielski 		}
66*b1cdbd2cSJim Jagielski 
TextProperties(SdrObject & rObj)67*b1cdbd2cSJim Jagielski 		TextProperties::TextProperties(SdrObject& rObj)
68*b1cdbd2cSJim Jagielski 		:	AttributeProperties(rObj),
69*b1cdbd2cSJim Jagielski             maVersion(0)
70*b1cdbd2cSJim Jagielski 		{
71*b1cdbd2cSJim Jagielski 		}
72*b1cdbd2cSJim Jagielski 
TextProperties(const TextProperties & rProps,SdrObject & rObj)73*b1cdbd2cSJim Jagielski 		TextProperties::TextProperties(const TextProperties& rProps, SdrObject& rObj)
74*b1cdbd2cSJim Jagielski 		:	AttributeProperties(rProps, rObj),
75*b1cdbd2cSJim Jagielski             maVersion(rProps.getVersion())
76*b1cdbd2cSJim Jagielski 		{
77*b1cdbd2cSJim Jagielski 		}
78*b1cdbd2cSJim Jagielski 
~TextProperties()79*b1cdbd2cSJim Jagielski 		TextProperties::~TextProperties()
80*b1cdbd2cSJim Jagielski 		{
81*b1cdbd2cSJim Jagielski 		}
82*b1cdbd2cSJim Jagielski 
Clone(SdrObject & rObj) const83*b1cdbd2cSJim Jagielski 		BaseProperties& TextProperties::Clone(SdrObject& rObj) const
84*b1cdbd2cSJim Jagielski 		{
85*b1cdbd2cSJim Jagielski 			return *(new TextProperties(*this, rObj));
86*b1cdbd2cSJim Jagielski 		}
87*b1cdbd2cSJim Jagielski 
ItemSetChanged(const SfxItemSet & rSet)88*b1cdbd2cSJim Jagielski 		void TextProperties::ItemSetChanged(const SfxItemSet& rSet)
89*b1cdbd2cSJim Jagielski 		{
90*b1cdbd2cSJim Jagielski 			SdrTextObj& rObj = (SdrTextObj&)GetSdrObject();
91*b1cdbd2cSJim Jagielski 			sal_Int32 nText = rObj.getTextCount();
92*b1cdbd2cSJim Jagielski 
93*b1cdbd2cSJim Jagielski             // #i101556# ItemSet has changed -> new version
94*b1cdbd2cSJim Jagielski             maVersion++;
95*b1cdbd2cSJim Jagielski 
96*b1cdbd2cSJim Jagielski             while( --nText >= 0 )
97*b1cdbd2cSJim Jagielski 			{
98*b1cdbd2cSJim Jagielski 				SdrText* pText = rObj.getText( nText );
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski 				OutlinerParaObject* pParaObj = pText ? pText->GetOutlinerParaObject() : 0;
101*b1cdbd2cSJim Jagielski 
102*b1cdbd2cSJim Jagielski 				if(pParaObj)
103*b1cdbd2cSJim Jagielski 				{
104*b1cdbd2cSJim Jagielski 					const bool bTextEdit = rObj.IsTextEditActive() && (rObj.getActiveText() == pText);
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski 					// handle outliner attributes
107*b1cdbd2cSJim Jagielski 					GetObjectItemSet();
108*b1cdbd2cSJim Jagielski 					Outliner* pOutliner = rObj.GetTextEditOutliner();
109*b1cdbd2cSJim Jagielski 
110*b1cdbd2cSJim Jagielski 					if(!bTextEdit)
111*b1cdbd2cSJim Jagielski 					{
112*b1cdbd2cSJim Jagielski 						pOutliner = &rObj.ImpGetDrawOutliner();
113*b1cdbd2cSJim Jagielski 						pOutliner->SetText(*pParaObj);
114*b1cdbd2cSJim Jagielski 					}
115*b1cdbd2cSJim Jagielski 
116*b1cdbd2cSJim Jagielski 					sal_uInt32 nParaCount(pOutliner->GetParagraphCount());
117*b1cdbd2cSJim Jagielski 
118*b1cdbd2cSJim Jagielski 					for(sal_uInt16 nPara = 0; nPara < nParaCount; nPara++)
119*b1cdbd2cSJim Jagielski 					{
120*b1cdbd2cSJim Jagielski 						SfxItemSet aSet(pOutliner->GetParaAttribs(nPara));
121*b1cdbd2cSJim Jagielski 						aSet.Put(rSet);
122*b1cdbd2cSJim Jagielski 						pOutliner->SetParaAttribs(nPara, aSet);
123*b1cdbd2cSJim Jagielski 					}
124*b1cdbd2cSJim Jagielski 
125*b1cdbd2cSJim Jagielski 					if(!bTextEdit)
126*b1cdbd2cSJim Jagielski 					{
127*b1cdbd2cSJim Jagielski 						if(nParaCount)
128*b1cdbd2cSJim Jagielski 						{
129*b1cdbd2cSJim Jagielski 							// force ItemSet
130*b1cdbd2cSJim Jagielski 							GetObjectItemSet();
131*b1cdbd2cSJim Jagielski 
132*b1cdbd2cSJim Jagielski 							SfxItemSet aNewSet(pOutliner->GetParaAttribs(0L));
133*b1cdbd2cSJim Jagielski 							mpItemSet->Put(aNewSet);
134*b1cdbd2cSJim Jagielski 						}
135*b1cdbd2cSJim Jagielski 
136*b1cdbd2cSJim Jagielski 						OutlinerParaObject* pTemp = pOutliner->CreateParaObject(0, (sal_uInt16)nParaCount);
137*b1cdbd2cSJim Jagielski 						pOutliner->Clear();
138*b1cdbd2cSJim Jagielski 
139*b1cdbd2cSJim Jagielski 						rObj.NbcSetOutlinerParaObjectForText(pTemp,pText);
140*b1cdbd2cSJim Jagielski 					}
141*b1cdbd2cSJim Jagielski 				}
142*b1cdbd2cSJim Jagielski 			}
143*b1cdbd2cSJim Jagielski 
144*b1cdbd2cSJim Jagielski 			// Extra-Repaint for radical layout changes (#43139#)
145*b1cdbd2cSJim Jagielski 			if(SFX_ITEM_SET == rSet.GetItemState(SDRATTR_TEXT_CONTOURFRAME))
146*b1cdbd2cSJim Jagielski 			{
147*b1cdbd2cSJim Jagielski 				// Here only repaint wanted
148*b1cdbd2cSJim Jagielski 				rObj.ActionChanged();
149*b1cdbd2cSJim Jagielski 				//rObj.BroadcastObjectChange();
150*b1cdbd2cSJim Jagielski 			}
151*b1cdbd2cSJim Jagielski 
152*b1cdbd2cSJim Jagielski 			// call parent
153*b1cdbd2cSJim Jagielski 			AttributeProperties::ItemSetChanged(rSet);
154*b1cdbd2cSJim Jagielski 		}
155*b1cdbd2cSJim Jagielski 
ItemChange(const sal_uInt16 nWhich,const SfxPoolItem * pNewItem)156*b1cdbd2cSJim Jagielski 		void TextProperties::ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem)
157*b1cdbd2cSJim Jagielski 		{
158*b1cdbd2cSJim Jagielski 			SdrTextObj& rObj = (SdrTextObj&)GetSdrObject();
159*b1cdbd2cSJim Jagielski 
160*b1cdbd2cSJim Jagielski 			// #i25616#
161*b1cdbd2cSJim Jagielski 			sal_Int32 nOldLineWidth(0L);
162*b1cdbd2cSJim Jagielski 
163*b1cdbd2cSJim Jagielski 			if(XATTR_LINEWIDTH == nWhich && rObj.DoesSupportTextIndentingOnLineWidthChange())
164*b1cdbd2cSJim Jagielski 			{
165*b1cdbd2cSJim Jagielski 				nOldLineWidth = ((const XLineWidthItem&)GetItem(XATTR_LINEWIDTH)).GetValue();
166*b1cdbd2cSJim Jagielski 			}
167*b1cdbd2cSJim Jagielski 
168*b1cdbd2cSJim Jagielski 			if(pNewItem && (SDRATTR_TEXTDIRECTION == nWhich))
169*b1cdbd2cSJim Jagielski 			{
170*b1cdbd2cSJim Jagielski 				sal_Bool bVertical(com::sun::star::text::WritingMode_TB_RL == ((SvxWritingModeItem*)pNewItem)->GetValue());
171*b1cdbd2cSJim Jagielski 				rObj.SetVerticalWriting(bVertical);
172*b1cdbd2cSJim Jagielski 			}
173*b1cdbd2cSJim Jagielski 
174*b1cdbd2cSJim Jagielski 			// #95501# reset to default
175*b1cdbd2cSJim Jagielski 			if(!pNewItem && !nWhich && rObj.HasText() )
176*b1cdbd2cSJim Jagielski 			{
177*b1cdbd2cSJim Jagielski 				SdrOutliner& rOutliner = rObj.ImpGetDrawOutliner();
178*b1cdbd2cSJim Jagielski 
179*b1cdbd2cSJim Jagielski 				sal_Int32 nCount = rObj.getTextCount();
180*b1cdbd2cSJim Jagielski 				while( nCount-- )
181*b1cdbd2cSJim Jagielski 				{
182*b1cdbd2cSJim Jagielski 					SdrText* pText = rObj.getText( nCount );
183*b1cdbd2cSJim Jagielski 					OutlinerParaObject* pParaObj = pText->GetOutlinerParaObject();
184*b1cdbd2cSJim Jagielski 					if( pParaObj )
185*b1cdbd2cSJim Jagielski 					{
186*b1cdbd2cSJim Jagielski 						rOutliner.SetText(*pParaObj);
187*b1cdbd2cSJim Jagielski 						sal_uInt32 nParaCount(rOutliner.GetParagraphCount());
188*b1cdbd2cSJim Jagielski 
189*b1cdbd2cSJim Jagielski 						if(nParaCount)
190*b1cdbd2cSJim Jagielski 						{
191*b1cdbd2cSJim Jagielski 							ESelection aSelection( 0, 0, EE_PARA_ALL, EE_PARA_ALL);
192*b1cdbd2cSJim Jagielski 							rOutliner.RemoveAttribs(aSelection, sal_True, 0);
193*b1cdbd2cSJim Jagielski 
194*b1cdbd2cSJim Jagielski 							OutlinerParaObject* pTemp = rOutliner.CreateParaObject(0, (sal_uInt16)nParaCount);
195*b1cdbd2cSJim Jagielski 							rOutliner.Clear();
196*b1cdbd2cSJim Jagielski 
197*b1cdbd2cSJim Jagielski 							rObj.NbcSetOutlinerParaObjectForText( pTemp, pText );
198*b1cdbd2cSJim Jagielski 						}
199*b1cdbd2cSJim Jagielski 					}
200*b1cdbd2cSJim Jagielski 				}
201*b1cdbd2cSJim Jagielski 			}
202*b1cdbd2cSJim Jagielski 
203*b1cdbd2cSJim Jagielski 			// call parent
204*b1cdbd2cSJim Jagielski 			AttributeProperties::ItemChange( nWhich, pNewItem );
205*b1cdbd2cSJim Jagielski 
206*b1cdbd2cSJim Jagielski 			// #i25616#
207*b1cdbd2cSJim Jagielski 			if(XATTR_LINEWIDTH == nWhich && rObj.DoesSupportTextIndentingOnLineWidthChange())
208*b1cdbd2cSJim Jagielski 			{
209*b1cdbd2cSJim Jagielski 				const sal_Int32 nNewLineWidth(((const XLineWidthItem&)GetItem(XATTR_LINEWIDTH)).GetValue());
210*b1cdbd2cSJim Jagielski 				const sal_Int32 nDifference((nNewLineWidth - nOldLineWidth) / 2);
211*b1cdbd2cSJim Jagielski 
212*b1cdbd2cSJim Jagielski 				if(nDifference)
213*b1cdbd2cSJim Jagielski 				{
214*b1cdbd2cSJim Jagielski 					const sal_Bool bLineVisible(XLINE_NONE != ((const XLineStyleItem&)(GetItem(XATTR_LINESTYLE))).GetValue());
215*b1cdbd2cSJim Jagielski 
216*b1cdbd2cSJim Jagielski 					if(bLineVisible)
217*b1cdbd2cSJim Jagielski 					{
218*b1cdbd2cSJim Jagielski 						const sal_Int32 nLeftDist(((const SdrTextLeftDistItem&)GetItem(SDRATTR_TEXT_LEFTDIST)).GetValue());
219*b1cdbd2cSJim Jagielski 						const sal_Int32 nRightDist(((const SdrTextRightDistItem&)GetItem(SDRATTR_TEXT_RIGHTDIST)).GetValue());
220*b1cdbd2cSJim Jagielski 						const sal_Int32 nUpperDist(((const SdrTextUpperDistItem&)GetItem(SDRATTR_TEXT_UPPERDIST)).GetValue());
221*b1cdbd2cSJim Jagielski 						const sal_Int32 nLowerDist(((const SdrTextLowerDistItem&)GetItem(SDRATTR_TEXT_LOWERDIST)).GetValue());
222*b1cdbd2cSJim Jagielski 
223*b1cdbd2cSJim Jagielski 						SetObjectItemDirect(SdrTextLeftDistItem(nLeftDist + nDifference));
224*b1cdbd2cSJim Jagielski 						SetObjectItemDirect(SdrTextRightDistItem(nRightDist + nDifference));
225*b1cdbd2cSJim Jagielski 						SetObjectItemDirect(SdrTextUpperDistItem(nUpperDist + nDifference));
226*b1cdbd2cSJim Jagielski 						SetObjectItemDirect(SdrTextLowerDistItem(nLowerDist + nDifference));
227*b1cdbd2cSJim Jagielski 					}
228*b1cdbd2cSJim Jagielski 				}
229*b1cdbd2cSJim Jagielski 			}
230*b1cdbd2cSJim Jagielski 		}
231*b1cdbd2cSJim Jagielski 
SetStyleSheet(SfxStyleSheet * pNewStyleSheet,sal_Bool bDontRemoveHardAttr)232*b1cdbd2cSJim Jagielski 		void TextProperties::SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr)
233*b1cdbd2cSJim Jagielski 		{
234*b1cdbd2cSJim Jagielski 			SdrTextObj& rObj = (SdrTextObj&)GetSdrObject();
235*b1cdbd2cSJim Jagielski 
236*b1cdbd2cSJim Jagielski 			// call parent
237*b1cdbd2cSJim Jagielski 			AttributeProperties::SetStyleSheet(pNewStyleSheet, bDontRemoveHardAttr);
238*b1cdbd2cSJim Jagielski 
239*b1cdbd2cSJim Jagielski             // #i101556# StyleSheet has changed -> new version
240*b1cdbd2cSJim Jagielski             maVersion++;
241*b1cdbd2cSJim Jagielski 
242*b1cdbd2cSJim Jagielski             if( rObj.GetModel() /*&& !rObj.IsTextEditActive()*/ && !rObj.IsLinkedText() )
243*b1cdbd2cSJim Jagielski 			{
244*b1cdbd2cSJim Jagielski 				SdrOutliner& rOutliner = rObj.ImpGetDrawOutliner();
245*b1cdbd2cSJim Jagielski 
246*b1cdbd2cSJim Jagielski 				sal_Int32 nText = rObj.getTextCount();
247*b1cdbd2cSJim Jagielski 
248*b1cdbd2cSJim Jagielski 				while( --nText >= 0 )
249*b1cdbd2cSJim Jagielski 				{
250*b1cdbd2cSJim Jagielski 					SdrText* pText = rObj.getText( nText );
251*b1cdbd2cSJim Jagielski 
252*b1cdbd2cSJim Jagielski 					OutlinerParaObject* pParaObj = pText ? pText->GetOutlinerParaObject() : 0;
253*b1cdbd2cSJim Jagielski 					if( !pParaObj )
254*b1cdbd2cSJim Jagielski 						continue;
255*b1cdbd2cSJim Jagielski 
256*b1cdbd2cSJim Jagielski 					// apply StyleSheet to all paragraphs
257*b1cdbd2cSJim Jagielski 					rOutliner.SetText(*pParaObj);
258*b1cdbd2cSJim Jagielski 					sal_uInt32 nParaCount(rOutliner.GetParagraphCount());
259*b1cdbd2cSJim Jagielski 
260*b1cdbd2cSJim Jagielski 					if(nParaCount)
261*b1cdbd2cSJim Jagielski 					{
262*b1cdbd2cSJim Jagielski 						for(sal_uInt16 nPara = 0; nPara < nParaCount; nPara++)
263*b1cdbd2cSJim Jagielski 						{
264*b1cdbd2cSJim Jagielski 							SfxItemSet* pTempSet = 0L;
265*b1cdbd2cSJim Jagielski 
266*b1cdbd2cSJim Jagielski 							// since setting the stylesheet removes all para attributes
267*b1cdbd2cSJim Jagielski 							if(bDontRemoveHardAttr)
268*b1cdbd2cSJim Jagielski 							{
269*b1cdbd2cSJim Jagielski 								// we need to remember them if we want to keep them
270*b1cdbd2cSJim Jagielski 								pTempSet = new SfxItemSet(rOutliner.GetParaAttribs(nPara));
271*b1cdbd2cSJim Jagielski 							}
272*b1cdbd2cSJim Jagielski 
273*b1cdbd2cSJim Jagielski 							if(GetStyleSheet())
274*b1cdbd2cSJim Jagielski 							{
275*b1cdbd2cSJim Jagielski 								if((OBJ_OUTLINETEXT == rObj.GetTextKind()) && (SdrInventor == rObj.GetObjInventor()))
276*b1cdbd2cSJim Jagielski 								{
277*b1cdbd2cSJim Jagielski 									String aNewStyleSheetName(GetStyleSheet()->GetName());
278*b1cdbd2cSJim Jagielski 									aNewStyleSheetName.Erase(aNewStyleSheetName.Len() - 1, 1);
279*b1cdbd2cSJim Jagielski 									sal_Int16 nDepth = rOutliner.GetDepth((sal_uInt16)nPara);
280*b1cdbd2cSJim Jagielski 									aNewStyleSheetName += String::CreateFromInt32( nDepth <= 0 ? 1 : nDepth + 1);
281*b1cdbd2cSJim Jagielski 
282*b1cdbd2cSJim Jagielski 									SdrModel* pModel = rObj.GetModel();
283*b1cdbd2cSJim Jagielski 									SfxStyleSheetBasePool* pStylePool = (pModel != NULL) ? pModel->GetStyleSheetPool() : 0L;
284*b1cdbd2cSJim Jagielski 									SfxStyleSheet* pNewStyle = (SfxStyleSheet*)pStylePool->Find(aNewStyleSheetName, GetStyleSheet()->GetFamily());
285*b1cdbd2cSJim Jagielski 									DBG_ASSERT( pNewStyle, "AutoStyleSheetName - Style not found!" );
286*b1cdbd2cSJim Jagielski 
287*b1cdbd2cSJim Jagielski 									if(pNewStyle)
288*b1cdbd2cSJim Jagielski 									{
289*b1cdbd2cSJim Jagielski 										rOutliner.SetStyleSheet(nPara, pNewStyle);
290*b1cdbd2cSJim Jagielski 									}
291*b1cdbd2cSJim Jagielski 								}
292*b1cdbd2cSJim Jagielski 								else
293*b1cdbd2cSJim Jagielski 								{
294*b1cdbd2cSJim Jagielski 									rOutliner.SetStyleSheet(nPara, GetStyleSheet());
295*b1cdbd2cSJim Jagielski 								}
296*b1cdbd2cSJim Jagielski 							}
297*b1cdbd2cSJim Jagielski 							else
298*b1cdbd2cSJim Jagielski 							{
299*b1cdbd2cSJim Jagielski 								// remove StyleSheet
300*b1cdbd2cSJim Jagielski 								rOutliner.SetStyleSheet(nPara, 0L);
301*b1cdbd2cSJim Jagielski 							}
302*b1cdbd2cSJim Jagielski 
303*b1cdbd2cSJim Jagielski 							if(bDontRemoveHardAttr)
304*b1cdbd2cSJim Jagielski 							{
305*b1cdbd2cSJim Jagielski 								if(pTempSet)
306*b1cdbd2cSJim Jagielski 								{
307*b1cdbd2cSJim Jagielski 									// restore para attributes
308*b1cdbd2cSJim Jagielski 									rOutliner.SetParaAttribs(nPara, *pTempSet);
309*b1cdbd2cSJim Jagielski 								}
310*b1cdbd2cSJim Jagielski 							}
311*b1cdbd2cSJim Jagielski 							else
312*b1cdbd2cSJim Jagielski 							{
313*b1cdbd2cSJim Jagielski 								if(pNewStyleSheet)
314*b1cdbd2cSJim Jagielski 								{
315*b1cdbd2cSJim Jagielski 									// remove all hard paragraph attributes
316*b1cdbd2cSJim Jagielski 									// which occur in StyleSheet, take care of
317*b1cdbd2cSJim Jagielski 									// parents (!)
318*b1cdbd2cSJim Jagielski 									SfxItemIter aIter(pNewStyleSheet->GetItemSet());
319*b1cdbd2cSJim Jagielski 									const SfxPoolItem* pItem = aIter.FirstItem();
320*b1cdbd2cSJim Jagielski 
321*b1cdbd2cSJim Jagielski 									while(pItem)
322*b1cdbd2cSJim Jagielski 									{
323*b1cdbd2cSJim Jagielski 										if(!IsInvalidItem(pItem))
324*b1cdbd2cSJim Jagielski 										{
325*b1cdbd2cSJim Jagielski 											sal_uInt16 nW(pItem->Which());
326*b1cdbd2cSJim Jagielski 
327*b1cdbd2cSJim Jagielski 											if(nW >= EE_ITEMS_START && nW <= EE_ITEMS_END)
328*b1cdbd2cSJim Jagielski 											{
329*b1cdbd2cSJim Jagielski 												rOutliner.QuickRemoveCharAttribs((sal_uInt16)nPara, nW);
330*b1cdbd2cSJim Jagielski 											}
331*b1cdbd2cSJim Jagielski 										}
332*b1cdbd2cSJim Jagielski 										pItem = aIter.NextItem();
333*b1cdbd2cSJim Jagielski 									}
334*b1cdbd2cSJim Jagielski 								}
335*b1cdbd2cSJim Jagielski 							}
336*b1cdbd2cSJim Jagielski 
337*b1cdbd2cSJim Jagielski 							if(pTempSet)
338*b1cdbd2cSJim Jagielski 							{
339*b1cdbd2cSJim Jagielski 								delete pTempSet;
340*b1cdbd2cSJim Jagielski 							}
341*b1cdbd2cSJim Jagielski 						}
342*b1cdbd2cSJim Jagielski 
343*b1cdbd2cSJim Jagielski 						OutlinerParaObject* pTemp = rOutliner.CreateParaObject(0, (sal_uInt16)nParaCount);
344*b1cdbd2cSJim Jagielski 						rOutliner.Clear();
345*b1cdbd2cSJim Jagielski 						rObj.NbcSetOutlinerParaObjectForText(pTemp, pText);
346*b1cdbd2cSJim Jagielski 					}
347*b1cdbd2cSJim Jagielski 				}
348*b1cdbd2cSJim Jagielski 			}
349*b1cdbd2cSJim Jagielski 
350*b1cdbd2cSJim Jagielski 			if(rObj.IsTextFrame())
351*b1cdbd2cSJim Jagielski 			{
352*b1cdbd2cSJim Jagielski 				rObj.NbcAdjustTextFrameWidthAndHeight();
353*b1cdbd2cSJim Jagielski 			}
354*b1cdbd2cSJim Jagielski 		}
355*b1cdbd2cSJim Jagielski 
ForceDefaultAttributes()356*b1cdbd2cSJim Jagielski 		void TextProperties::ForceDefaultAttributes()
357*b1cdbd2cSJim Jagielski 		{
358*b1cdbd2cSJim Jagielski 			SdrTextObj& rObj = (SdrTextObj&)GetSdrObject();
359*b1cdbd2cSJim Jagielski 
360*b1cdbd2cSJim Jagielski 			if( rObj.GetObjInventor() == SdrInventor )
361*b1cdbd2cSJim Jagielski 			{
362*b1cdbd2cSJim Jagielski 				const sal_uInt16 nSdrObjKind = rObj.GetObjIdentifier();
363*b1cdbd2cSJim Jagielski 
364*b1cdbd2cSJim Jagielski 				if( nSdrObjKind == OBJ_TITLETEXT || nSdrObjKind == OBJ_OUTLINETEXT )
365*b1cdbd2cSJim Jagielski 					return; // no defaults for presentation objects
366*b1cdbd2cSJim Jagielski 			}
367*b1cdbd2cSJim Jagielski 
368*b1cdbd2cSJim Jagielski 			bool bTextFrame(rObj.IsTextFrame());
369*b1cdbd2cSJim Jagielski 
370*b1cdbd2cSJim Jagielski 			// force ItemSet
371*b1cdbd2cSJim Jagielski 			GetObjectItemSet();
372*b1cdbd2cSJim Jagielski 
373*b1cdbd2cSJim Jagielski 			if(bTextFrame)
374*b1cdbd2cSJim Jagielski 			{
375*b1cdbd2cSJim Jagielski 				mpItemSet->Put(XLineStyleItem(XLINE_NONE));
376*b1cdbd2cSJim Jagielski 				mpItemSet->Put(XFillColorItem(String(), Color(COL_WHITE)));
377*b1cdbd2cSJim Jagielski 				mpItemSet->Put(XFillStyleItem(XFILL_NONE));
378*b1cdbd2cSJim Jagielski 			}
379*b1cdbd2cSJim Jagielski 			else
380*b1cdbd2cSJim Jagielski 			{
381*b1cdbd2cSJim Jagielski                 mpItemSet->Put(SvxAdjustItem(SVX_ADJUST_CENTER, EE_PARA_JUST));
382*b1cdbd2cSJim Jagielski 				mpItemSet->Put(SdrTextHorzAdjustItem(SDRTEXTHORZADJUST_CENTER));
383*b1cdbd2cSJim Jagielski 				mpItemSet->Put(SdrTextVertAdjustItem(SDRTEXTVERTADJUST_CENTER));
384*b1cdbd2cSJim Jagielski 			}
385*b1cdbd2cSJim Jagielski 		}
386*b1cdbd2cSJim Jagielski 
ForceStyleToHardAttributes()387*b1cdbd2cSJim Jagielski 		void TextProperties::ForceStyleToHardAttributes()
388*b1cdbd2cSJim Jagielski 		{
389*b1cdbd2cSJim Jagielski 			// #i61284# call parent first to get the hard ObjectItemSet
390*b1cdbd2cSJim Jagielski 			AttributeProperties::ForceStyleToHardAttributes();
391*b1cdbd2cSJim Jagielski 
392*b1cdbd2cSJim Jagielski 			// #i61284# push hard ObjectItemSet to OutlinerParaObject attributes
393*b1cdbd2cSJim Jagielski 			// using existing functionality
394*b1cdbd2cSJim Jagielski 			GetObjectItemSet(); // force ItemSet
395*b1cdbd2cSJim Jagielski 			ItemSetChanged(*mpItemSet);
396*b1cdbd2cSJim Jagielski 
397*b1cdbd2cSJim Jagielski 			// now the standard TextProperties stuff
398*b1cdbd2cSJim Jagielski 			SdrTextObj& rObj = (SdrTextObj&)GetSdrObject();
399*b1cdbd2cSJim Jagielski 
400*b1cdbd2cSJim Jagielski 			if(rObj.GetModel()
401*b1cdbd2cSJim Jagielski 				&& !rObj.IsTextEditActive()
402*b1cdbd2cSJim Jagielski 				&& !rObj.IsLinkedText())
403*b1cdbd2cSJim Jagielski 			{
404*b1cdbd2cSJim Jagielski 				Outliner* pOutliner = SdrMakeOutliner(OUTLINERMODE_OUTLINEOBJECT, rObj.GetModel());
405*b1cdbd2cSJim Jagielski 				sal_Int32 nText = rObj.getTextCount();
406*b1cdbd2cSJim Jagielski 
407*b1cdbd2cSJim Jagielski 				while( --nText >= 0 )
408*b1cdbd2cSJim Jagielski 				{
409*b1cdbd2cSJim Jagielski 					SdrText* pText = rObj.getText( nText );
410*b1cdbd2cSJim Jagielski 
411*b1cdbd2cSJim Jagielski 					OutlinerParaObject* pParaObj = pText ? pText->GetOutlinerParaObject() : 0;
412*b1cdbd2cSJim Jagielski 					if( !pParaObj )
413*b1cdbd2cSJim Jagielski 						continue;
414*b1cdbd2cSJim Jagielski 
415*b1cdbd2cSJim Jagielski 					pOutliner->SetText(*pParaObj);
416*b1cdbd2cSJim Jagielski 
417*b1cdbd2cSJim Jagielski 					sal_uInt32 nParaCount(pOutliner->GetParagraphCount());
418*b1cdbd2cSJim Jagielski 
419*b1cdbd2cSJim Jagielski 					if(nParaCount)
420*b1cdbd2cSJim Jagielski 					{
421*b1cdbd2cSJim Jagielski 						sal_Bool bBurnIn(sal_False);
422*b1cdbd2cSJim Jagielski 
423*b1cdbd2cSJim Jagielski 						for(sal_uInt16 nPara = 0; nPara < nParaCount; nPara++)
424*b1cdbd2cSJim Jagielski 						{
425*b1cdbd2cSJim Jagielski 							SfxStyleSheet* pSheet = pOutliner->GetStyleSheet(nPara);
426*b1cdbd2cSJim Jagielski 
427*b1cdbd2cSJim Jagielski 							if(pSheet)
428*b1cdbd2cSJim Jagielski 							{
429*b1cdbd2cSJim Jagielski 								SfxItemSet aParaSet(pOutliner->GetParaAttribs(nPara));
430*b1cdbd2cSJim Jagielski 								SfxItemSet aSet(*aParaSet.GetPool());
431*b1cdbd2cSJim Jagielski 								aSet.Put(pSheet->GetItemSet());
432*b1cdbd2cSJim Jagielski 
433*b1cdbd2cSJim Jagielski 								/** the next code handles a special case for paragraphs that contain a
434*b1cdbd2cSJim Jagielski 									url field. The color for URL fields is either the system color for
435*b1cdbd2cSJim Jagielski 									urls or the char color attribute that formats the portion in which the
436*b1cdbd2cSJim Jagielski 									url field is contained.
437*b1cdbd2cSJim Jagielski 									When we set a char color attribute to the paragraphs item set from the
438*b1cdbd2cSJim Jagielski 									styles item set, we would have this char color attribute as an attribute
439*b1cdbd2cSJim Jagielski 									that is spanned over the complete paragraph after xml import due to some
440*b1cdbd2cSJim Jagielski 									problems in the xml import (using a XCursor on import so it does not know
441*b1cdbd2cSJim Jagielski 									the paragraphs and can't set char attributes to paragraphs ).
442*b1cdbd2cSJim Jagielski 
443*b1cdbd2cSJim Jagielski 									To avoid this, as soon as we try to set a char color attribute from the style
444*b1cdbd2cSJim Jagielski 									we
445*b1cdbd2cSJim Jagielski 									1. check if we have at least one url field in this paragraph
446*b1cdbd2cSJim Jagielski 									2. if we found at least one url field, we span the char color attribute over
447*b1cdbd2cSJim Jagielski 									all portions that are not url fields and remove the char color attribute
448*b1cdbd2cSJim Jagielski 									from the paragraphs item set
449*b1cdbd2cSJim Jagielski 								*/
450*b1cdbd2cSJim Jagielski 
451*b1cdbd2cSJim Jagielski 								sal_Bool bHasURL(sal_False);
452*b1cdbd2cSJim Jagielski 
453*b1cdbd2cSJim Jagielski 								if(aSet.GetItemState(EE_CHAR_COLOR) == SFX_ITEM_SET)
454*b1cdbd2cSJim Jagielski 								{
455*b1cdbd2cSJim Jagielski 									EditEngine* pEditEngine = const_cast<EditEngine*>(&(pOutliner->GetEditEngine()));
456*b1cdbd2cSJim Jagielski 									EECharAttribArray aAttribs;
457*b1cdbd2cSJim Jagielski 									pEditEngine->GetCharAttribs((sal_uInt16)nPara, aAttribs);
458*b1cdbd2cSJim Jagielski 									sal_uInt16 nAttrib;
459*b1cdbd2cSJim Jagielski 
460*b1cdbd2cSJim Jagielski 									for(nAttrib = 0; nAttrib < aAttribs.Count(); nAttrib++)
461*b1cdbd2cSJim Jagielski 									{
462*b1cdbd2cSJim Jagielski 										struct EECharAttrib aAttrib(aAttribs.GetObject(nAttrib));
463*b1cdbd2cSJim Jagielski 
464*b1cdbd2cSJim Jagielski 										if(EE_FEATURE_FIELD == aAttrib.pAttr->Which())
465*b1cdbd2cSJim Jagielski 										{
466*b1cdbd2cSJim Jagielski 											if(aAttrib.pAttr)
467*b1cdbd2cSJim Jagielski 											{
468*b1cdbd2cSJim Jagielski 												SvxFieldItem* pFieldItem = (SvxFieldItem*)aAttrib.pAttr;
469*b1cdbd2cSJim Jagielski 
470*b1cdbd2cSJim Jagielski 												if(pFieldItem)
471*b1cdbd2cSJim Jagielski 												{
472*b1cdbd2cSJim Jagielski 													const SvxFieldData* pData = pFieldItem->GetField();
473*b1cdbd2cSJim Jagielski 
474*b1cdbd2cSJim Jagielski 													if(pData && pData->ISA(SvxURLField))
475*b1cdbd2cSJim Jagielski 													{
476*b1cdbd2cSJim Jagielski 														bHasURL = sal_True;
477*b1cdbd2cSJim Jagielski 														break;
478*b1cdbd2cSJim Jagielski 													}
479*b1cdbd2cSJim Jagielski 												}
480*b1cdbd2cSJim Jagielski 											}
481*b1cdbd2cSJim Jagielski 										}
482*b1cdbd2cSJim Jagielski 									}
483*b1cdbd2cSJim Jagielski 
484*b1cdbd2cSJim Jagielski 									if(bHasURL)
485*b1cdbd2cSJim Jagielski 									{
486*b1cdbd2cSJim Jagielski 										SfxItemSet aColorSet(*aSet.GetPool(), EE_CHAR_COLOR, EE_CHAR_COLOR );
487*b1cdbd2cSJim Jagielski 										aColorSet.Put(aSet, sal_False);
488*b1cdbd2cSJim Jagielski 
489*b1cdbd2cSJim Jagielski 										ESelection aSel((sal_uInt16)nPara, 0);
490*b1cdbd2cSJim Jagielski 
491*b1cdbd2cSJim Jagielski 										for(nAttrib = 0; nAttrib < aAttribs.Count(); nAttrib++)
492*b1cdbd2cSJim Jagielski 										{
493*b1cdbd2cSJim Jagielski 											struct EECharAttrib aAttrib(aAttribs.GetObject(nAttrib));
494*b1cdbd2cSJim Jagielski 
495*b1cdbd2cSJim Jagielski 											if(EE_FEATURE_FIELD == aAttrib.pAttr->Which())
496*b1cdbd2cSJim Jagielski 											{
497*b1cdbd2cSJim Jagielski 												aSel.nEndPos = aAttrib.nStart;
498*b1cdbd2cSJim Jagielski 
499*b1cdbd2cSJim Jagielski 												if(aSel.nStartPos != aSel.nEndPos)
500*b1cdbd2cSJim Jagielski 												{
501*b1cdbd2cSJim Jagielski 													pEditEngine->QuickSetAttribs(aColorSet, aSel);
502*b1cdbd2cSJim Jagielski 												}
503*b1cdbd2cSJim Jagielski 
504*b1cdbd2cSJim Jagielski 												aSel.nStartPos = aAttrib.nEnd;
505*b1cdbd2cSJim Jagielski 											}
506*b1cdbd2cSJim Jagielski 										}
507*b1cdbd2cSJim Jagielski 
508*b1cdbd2cSJim Jagielski 										aSel.nEndPos = pEditEngine->GetTextLen((sal_uInt16)nPara);
509*b1cdbd2cSJim Jagielski 
510*b1cdbd2cSJim Jagielski 										if(aSel.nStartPos != aSel.nEndPos)
511*b1cdbd2cSJim Jagielski 										{
512*b1cdbd2cSJim Jagielski 											pEditEngine->QuickSetAttribs( aColorSet, aSel );
513*b1cdbd2cSJim Jagielski 										}
514*b1cdbd2cSJim Jagielski 									}
515*b1cdbd2cSJim Jagielski 
516*b1cdbd2cSJim Jagielski 								}
517*b1cdbd2cSJim Jagielski 
518*b1cdbd2cSJim Jagielski 								aSet.Put(aParaSet, sal_False);
519*b1cdbd2cSJim Jagielski 
520*b1cdbd2cSJim Jagielski 								if(bHasURL)
521*b1cdbd2cSJim Jagielski 								{
522*b1cdbd2cSJim Jagielski 									aSet.ClearItem(EE_CHAR_COLOR);
523*b1cdbd2cSJim Jagielski 								}
524*b1cdbd2cSJim Jagielski 
525*b1cdbd2cSJim Jagielski 								pOutliner->SetParaAttribs(nPara, aSet);
526*b1cdbd2cSJim Jagielski 								bBurnIn = sal_True; // #i51163# Flag was set wrong
527*b1cdbd2cSJim Jagielski 							}
528*b1cdbd2cSJim Jagielski 						}
529*b1cdbd2cSJim Jagielski 
530*b1cdbd2cSJim Jagielski 						if(bBurnIn)
531*b1cdbd2cSJim Jagielski 						{
532*b1cdbd2cSJim Jagielski 							OutlinerParaObject* pTemp = pOutliner->CreateParaObject(0, (sal_uInt16)nParaCount);
533*b1cdbd2cSJim Jagielski 							rObj.NbcSetOutlinerParaObjectForText(pTemp,pText);
534*b1cdbd2cSJim Jagielski 						}
535*b1cdbd2cSJim Jagielski 					}
536*b1cdbd2cSJim Jagielski 
537*b1cdbd2cSJim Jagielski 					pOutliner->Clear();
538*b1cdbd2cSJim Jagielski 				}
539*b1cdbd2cSJim Jagielski 				delete pOutliner;
540*b1cdbd2cSJim Jagielski 			}
541*b1cdbd2cSJim Jagielski 		}
542*b1cdbd2cSJim Jagielski 
SetObjectItemNoBroadcast(const SfxPoolItem & rItem)543*b1cdbd2cSJim Jagielski 		void TextProperties::SetObjectItemNoBroadcast(const SfxPoolItem& rItem)
544*b1cdbd2cSJim Jagielski 		{
545*b1cdbd2cSJim Jagielski             GetObjectItemSet();
546*b1cdbd2cSJim Jagielski 			mpItemSet->Put(rItem);
547*b1cdbd2cSJim Jagielski 		}
548*b1cdbd2cSJim Jagielski 
549*b1cdbd2cSJim Jagielski 
Notify(SfxBroadcaster & rBC,const SfxHint & rHint)550*b1cdbd2cSJim Jagielski 		void TextProperties::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
551*b1cdbd2cSJim Jagielski 		{
552*b1cdbd2cSJim Jagielski 			// call parent
553*b1cdbd2cSJim Jagielski 			AttributeProperties::Notify(rBC, rHint);
554*b1cdbd2cSJim Jagielski 
555*b1cdbd2cSJim Jagielski 			SdrTextObj& rObj = (SdrTextObj&)GetSdrObject();
556*b1cdbd2cSJim Jagielski 			if(rObj.HasText())
557*b1cdbd2cSJim Jagielski 			{
558*b1cdbd2cSJim Jagielski 				if(HAS_BASE(SfxStyleSheet, &rBC))
559*b1cdbd2cSJim Jagielski 				{
560*b1cdbd2cSJim Jagielski 					SfxSimpleHint* pSimple = PTR_CAST(SfxSimpleHint, &rHint);
561*b1cdbd2cSJim Jagielski 					sal_uInt32 nId(pSimple ? pSimple->GetId() : 0L);
562*b1cdbd2cSJim Jagielski 
563*b1cdbd2cSJim Jagielski 					if(SFX_HINT_DATACHANGED == nId)
564*b1cdbd2cSJim Jagielski 					{
565*b1cdbd2cSJim Jagielski 						rObj.SetPortionInfoChecked(sal_False);
566*b1cdbd2cSJim Jagielski 
567*b1cdbd2cSJim Jagielski 						sal_Int32 nText = rObj.getTextCount();
568*b1cdbd2cSJim Jagielski 						while( --nText > 0 )
569*b1cdbd2cSJim Jagielski 						{
570*b1cdbd2cSJim Jagielski 							OutlinerParaObject* pParaObj = rObj.getText(nText )->GetOutlinerParaObject();
571*b1cdbd2cSJim Jagielski 							if( pParaObj )
572*b1cdbd2cSJim Jagielski 								pParaObj->ClearPortionInfo();
573*b1cdbd2cSJim Jagielski 						}
574*b1cdbd2cSJim Jagielski 						rObj.SetTextSizeDirty();
575*b1cdbd2cSJim Jagielski 
576*b1cdbd2cSJim Jagielski 						if(rObj.IsTextFrame() && rObj.NbcAdjustTextFrameWidthAndHeight())
577*b1cdbd2cSJim Jagielski 						{
578*b1cdbd2cSJim Jagielski 							// here only repaint wanted
579*b1cdbd2cSJim Jagielski 							rObj.ActionChanged();
580*b1cdbd2cSJim Jagielski 							//rObj.BroadcastObjectChange();
581*b1cdbd2cSJim Jagielski 						}
582*b1cdbd2cSJim Jagielski 
583*b1cdbd2cSJim Jagielski                         // #i101556# content of StyleSheet has changed -> new version
584*b1cdbd2cSJim Jagielski                         maVersion++;
585*b1cdbd2cSJim Jagielski 					}
586*b1cdbd2cSJim Jagielski 
587*b1cdbd2cSJim Jagielski 					if(SFX_HINT_DYING == nId)
588*b1cdbd2cSJim Jagielski 					{
589*b1cdbd2cSJim Jagielski 						rObj.SetPortionInfoChecked(sal_False);
590*b1cdbd2cSJim Jagielski 						sal_Int32 nText = rObj.getTextCount();
591*b1cdbd2cSJim Jagielski 						while( --nText > 0 )
592*b1cdbd2cSJim Jagielski 						{
593*b1cdbd2cSJim Jagielski 							OutlinerParaObject* pParaObj = rObj.getText(nText )->GetOutlinerParaObject();
594*b1cdbd2cSJim Jagielski 							if( pParaObj )
595*b1cdbd2cSJim Jagielski 								pParaObj->ClearPortionInfo();
596*b1cdbd2cSJim Jagielski 						}
597*b1cdbd2cSJim Jagielski 					}
598*b1cdbd2cSJim Jagielski 				}
599*b1cdbd2cSJim Jagielski 				else if(HAS_BASE(SfxStyleSheetBasePool, &rBC))
600*b1cdbd2cSJim Jagielski 				{
601*b1cdbd2cSJim Jagielski 					SfxStyleSheetHintExtended* pExtendedHint = PTR_CAST(SfxStyleSheetHintExtended, &rHint);
602*b1cdbd2cSJim Jagielski 
603*b1cdbd2cSJim Jagielski 					if(pExtendedHint
604*b1cdbd2cSJim Jagielski 						&& SFX_STYLESHEET_MODIFIED == pExtendedHint->GetHint())
605*b1cdbd2cSJim Jagielski 					{
606*b1cdbd2cSJim Jagielski 						String aOldName(pExtendedHint->GetOldName());
607*b1cdbd2cSJim Jagielski 						String aNewName(pExtendedHint->GetStyleSheet()->GetName());
608*b1cdbd2cSJim Jagielski 						SfxStyleFamily eFamily = pExtendedHint->GetStyleSheet()->GetFamily();
609*b1cdbd2cSJim Jagielski 
610*b1cdbd2cSJim Jagielski 						if(!aOldName.Equals(aNewName))
611*b1cdbd2cSJim Jagielski 						{
612*b1cdbd2cSJim Jagielski 							sal_Int32 nText = rObj.getTextCount();
613*b1cdbd2cSJim Jagielski 							while( --nText > 0 )
614*b1cdbd2cSJim Jagielski 							{
615*b1cdbd2cSJim Jagielski 								OutlinerParaObject* pParaObj = rObj.getText(nText )->GetOutlinerParaObject();
616*b1cdbd2cSJim Jagielski 								if( pParaObj )
617*b1cdbd2cSJim Jagielski 									pParaObj->ChangeStyleSheetName(eFamily, aOldName, aNewName);
618*b1cdbd2cSJim Jagielski 							}
619*b1cdbd2cSJim Jagielski 						}
620*b1cdbd2cSJim Jagielski 					}
621*b1cdbd2cSJim Jagielski 				}
622*b1cdbd2cSJim Jagielski 			}
623*b1cdbd2cSJim Jagielski 		}
624*b1cdbd2cSJim Jagielski 
625*b1cdbd2cSJim Jagielski         // #i101556# Handout version information
getVersion() const626*b1cdbd2cSJim Jagielski         sal_uInt32 TextProperties::getVersion() const
627*b1cdbd2cSJim Jagielski         {
628*b1cdbd2cSJim Jagielski             return maVersion;
629*b1cdbd2cSJim Jagielski         }
630*b1cdbd2cSJim Jagielski 	} // end of namespace properties
631*b1cdbd2cSJim Jagielski } // end of namespace sdr
632*b1cdbd2cSJim Jagielski 
633*b1cdbd2cSJim Jagielski //////////////////////////////////////////////////////////////////////////////
634*b1cdbd2cSJim Jagielski // eof
635