View | Details | Raw Unified | Return to issue 119963
Collapse All | Expand All

(-)inc/tox.hxx (+17 lines)
Lines 501-506 Link Here
501
	sal_Bool 		bFromObjectNames : 1; 	// create a table or object index
501
	sal_Bool 		bFromObjectNames : 1; 	// create a table or object index
502
									// from the names rather than the caption
502
									// from the names rather than the caption
503
	sal_Bool		bLevelFromChapter : 1; // User index: get the level from the source chapter
503
	sal_Bool		bLevelFromChapter : 1; // User index: get the level from the source chapter
504
protected:
505
	//Modify here for i119963, by ZF, 2012-06-13
506
	//Add a data member, for record the TOC field expression of MS Word binary format
507
	//For keeping fedality and may giving a better exporting performance
508
	String		maMSTOCExpression;
509
	sal_Bool		mbKeepExpression;
510
	//End of modification, by ZF
511
	
504
public:
512
public:
505
	SwTOXBase( const SwTOXType* pTyp, const SwForm& rForm,
513
	SwTOXBase( const SwTOXType* pTyp, const SwForm& rForm,
506
			   sal_uInt16 nCreaType, const String& rTitle );
514
			   sal_uInt16 nCreaType, const String& rTitle );
Lines 520-525 Link Here
520
	const String&		GetTOXName() const {return aName;}
528
	const String&		GetTOXName() const {return aName;}
521
	void				SetTOXName(const String& rSet) {aName = rSet;}
529
	void				SetTOXName(const String& rSet) {aName = rSet;}
522
530
531
	//Modify here for i119963, by ZF, 2012-06-13
532
	//Add a data member, for record the TOC field expression of MS Word binary format
533
	//For keeping fedality and may giving a better exporting performance
534
	const String&		GetMSTOCExpression() const{return maMSTOCExpression;}
535
	void				SetMSTOCExpression(const String& rExp) {maMSTOCExpression = rExp;}
536
	void				EnableKeepExpression() {mbKeepExpression = sal_True;}
537
	void				DisableKeepExpression() {mbKeepExpression = sal_False;}
538
	//End of modification, by ZF
539
523
    const String&       GetTitle() const;           // Title
540
    const String&       GetTitle() const;           // Title
524
    const String&       GetTypeName() const;        // Name
541
    const String&       GetTypeName() const;        // Name
525
    const SwForm&       GetTOXForm() const;         // description of the lines
542
    const SwForm&       GetTOXForm() const;         // description of the lines
(-)source/core/doc/doctxm.cxx (+5 lines)
Lines 799-804 Link Here
799
		IsHiddenFlag() )
799
		IsHiddenFlag() )
800
		return;
800
		return;
801
801
802
	//Modify here for i119963, by ZF, 2012-07-03
803
	if (!mbKeepExpression)
804
		maMSTOCExpression = String();	
805
	//End of modification, by ZF
806
802
	SwDoc* pDoc = (SwDoc*)pSectNd->GetDoc();
807
	SwDoc* pDoc = (SwDoc*)pSectNd->GetDoc();
803
808
804
    DBG_ASSERT(pDoc != NULL, "Where is the document?");
809
    DBG_ASSERT(pDoc != NULL, "Where is the document?");
(-)source/core/tox/tox.cxx (+9 lines)
Lines 521-526 Link Here
521
    bFromChapter(sal_False),
521
    bFromChapter(sal_False),
522
    bFromObjectNames(sal_False),
522
    bFromObjectNames(sal_False),
523
    bLevelFromChapter(sal_False)
523
    bLevelFromChapter(sal_False)
524
    //for i119963, by ZF, 2012-07-03
525
    ,mbKeepExpression(sal_True)
526
    //End of modification
524
{
527
{
525
    aData.nOptions = 0;
528
    aData.nOptions = 0;
526
}
529
}
Lines 528-533 Link Here
528
531
529
SwTOXBase::SwTOXBase( const SwTOXBase& rSource, SwDoc* pDoc )
532
SwTOXBase::SwTOXBase( const SwTOXBase& rSource, SwDoc* pDoc )
530
    : SwClient( rSource.GetRegisteredInNonConst() )
533
    : SwClient( rSource.GetRegisteredInNonConst() )
534
    //for i119963, by ZF, 2012-07-03
535
    ,mbKeepExpression(sal_True)
536
    //End of modification
531
{
537
{
532
    CopyTOXBase( pDoc, rSource );
538
    CopyTOXBase( pDoc, rSource );
533
}
539
}
Lines 539-544 Link Here
539
545
540
SwTOXBase& SwTOXBase::CopyTOXBase( SwDoc* pDoc, const SwTOXBase& rSource )
546
SwTOXBase& SwTOXBase::CopyTOXBase( SwDoc* pDoc, const SwTOXBase& rSource )
541
{
547
{
548
    //for i119963, by ZF, 2012-07-03
549
    maMSTOCExpression = rSource.maMSTOCExpression;
550
    //End of modification
542
    SwTOXType* pType = (SwTOXType*)rSource.GetTOXType();
551
    SwTOXType* pType = (SwTOXType*)rSource.GetTOXType();
543
    if( pDoc && USHRT_MAX == pDoc->GetTOXTypes().GetPos( pType ))
552
    if( pDoc && USHRT_MAX == pDoc->GetTOXTypes().GetPos( pType ))
544
    {
553
    {
(-)source/filter/ww8/attributeoutputbase.hxx (-1 / +3 lines)
Lines 187-194 Link Here
187
187
188
    void StartTOX( const SwSection& rSect );
188
    void StartTOX( const SwSection& rSect );
189
189
190
    void EndTOX( const SwSection& rSect );
190
    void EndTOX( const SwSection& rSect,bool bCareEnd=true );
191
191
192
    virtual void OnTOXEnding() {}
193
192
    virtual void TOXMark( const SwTxtNode& rNode, const SwTOXMark& rAttr );
194
    virtual void TOXMark( const SwTxtNode& rNode, const SwTOXMark& rAttr );
193
195
194
    /// Output redlining.
196
    /// Output redlining.
(-)source/filter/ww8/dump/ww8scan.cxx (-1 / +4 lines)
Lines 3541-3547 Link Here
3541
    return true;
3541
    return true;
3542
}
3542
}
3543
3543
3544
bool WW8PLCFx_FLD::EndPosIsFieldEnd()
3544
bool WW8PLCFx_FLD::EndPosIsFieldEnd(WW8_CP& nCP)
3545
{
3545
{
3546
    bool bRet = false;
3546
    bool bRet = false;
3547
3547
Lines 3554-3560 Link Here
3554
        void* pData;
3554
        void* pData;
3555
        long nTest;
3555
        long nTest;
3556
        if ( pPLCF->Get(nTest, pData) && ((((sal_uInt8*)pData)[0] & 0x1f) == 0x15) )
3556
        if ( pPLCF->Get(nTest, pData) && ((((sal_uInt8*)pData)[0] & 0x1f) == 0x15) )
3557
        {
3558
            nCP = nTest;
3557
            bRet = true;
3559
            bRet = true;
3560
        }
3558
3561
3559
        pPLCF->SetIdx(n);
3562
        pPLCF->SetIdx(n);
3560
    }
3563
    }
(-)source/filter/ww8/writerwordglue.cxx (+4 lines)
Lines 522-527 Link Here
522
                return true;
522
                return true;
523
            if (nB == RES_TXTATR_CHARFMT)
523
            if (nB == RES_TXTATR_CHARFMT)
524
                return false;
524
                return false;
525
	     if (nA == RES_TXTATR_INETFMT)
526
		 return true;
527
            if (nB == RES_TXTATR_INETFMT)
528
               return false;
525
            return nA < nB;
529
            return nA < nB;
526
        }
530
        }
527
531
(-)source/filter/ww8/wrtw8nds.cxx (-3 / +5 lines)
Lines 1955-1961 Link Here
1955
                    if ( pTOXSect )
1955
                    if ( pTOXSect )
1956
                    {
1956
                    {
1957
                        m_aCurrentCharPropStarts.pop();
1957
                        m_aCurrentCharPropStarts.pop();
1958
                        AttrOutput().EndTOX( *pTOXSect );
1958
                        AttrOutput().EndTOX( *pTOXSect ,false);
1959
                    }
1959
                    }
1960
                    WriteCR( pTextNodeInfoInner );
1960
                    WriteCR( pTextNodeInfoInner );
1961
                }
1961
                }
Lines 1993-1998 Link Here
1993
                aAttrIter.OutFlys( nEnd );
1993
                aAttrIter.OutFlys( nEnd );
1994
                // insert final bookmarks if any before CR and after flys
1994
                // insert final bookmarks if any before CR and after flys
1995
                AppendBookmarks( rNode, nEnd, 1 );
1995
                AppendBookmarks( rNode, nEnd, 1 );
1996
                WriteCR( pTextNodeInfoInner );
1996
1997
1997
                if ( pTOXSect )
1998
                if ( pTOXSect )
1998
                {
1999
                {
Lines 2000-2006 Link Here
2000
                    AttrOutput().EndTOX( *pTOXSect );
2001
                    AttrOutput().EndTOX( *pTOXSect );
2001
                }
2002
                }
2002
2003
2003
                WriteCR( pTextNodeInfoInner );
2004
                //WriteCR( pTextNodeInfoInner );
2004
2005
2005
                if ( bRedlineAtEnd )
2006
                if ( bRedlineAtEnd )
2006
                {
2007
                {
Lines 2523-2529 Link Here
2523
2524
2524
    SwNodeIndex aIdx( rSectionNode, 1 );
2525
    SwNodeIndex aIdx( rSectionNode, 1 );
2525
    const SwNode& rNd = aIdx.GetNode();
2526
    const SwNode& rNd = aIdx.GetNode();
2526
    if ( !rNd.IsSectionNode() && !IsInTable() ) //No sections in table
2527
    if ( !rNd.IsSectionNode() && !IsInTable() 
2528
		&& rSection.GetType() != TOX_CONTENT_SECTION && rSection.GetType() != TOX_HEADER_SECTION) //No sections in table
2527
    {
2529
    {
2528
        // Bug 74245 - if the first Node inside the section has an own
2530
        // Bug 74245 - if the first Node inside the section has an own
2529
        //              PageDesc or PageBreak attribut, then dont write
2531
        //              PageDesc or PageBreak attribut, then dont write
(-)source/filter/ww8/wrtww8.cxx (-4 / +144 lines)
Lines 33-38 Link Here
33
33
34
#include <algorithm>
34
#include <algorithm>
35
35
36
#include <map>
37
#include <set>
38
36
#include <hintids.hxx>
39
#include <hintids.hxx>
37
#include <string.h>             // memcpy()
40
#include <string.h>             // memcpy()
38
#include <osl/endian.h>
41
#include <osl/endian.h>
Lines 186-192 Link Here
186
    WW8_FC GetStartFc() const       { return nStartFc; }
189
    WW8_FC GetStartFc() const       { return nStartFc; }
187
};
190
};
188
191
189
class WW8_WrtBookmarks
192
/*class WW8_WrtBookmarks
190
{
193
{
191
private:
194
private:
192
    SvULongs aSttCps, aEndCps;      // Array of Start- and End CPs
195
    SvULongs aSttCps, aEndCps;      // Array of Start- and End CPs
Lines 208-215 Link Here
208
    void MoveFieldMarks(sal_uLong nFrom,sal_uLong nTo);
211
    void MoveFieldMarks(sal_uLong nFrom,sal_uLong nTo);
209
212
210
//  String GetWWBkmkName( const String& rName ) const;
213
//  String GetWWBkmkName( const String& rName ) const;
214
};*/
215
216
typedef std::map<String,long> BKMKNames;
217
typedef BKMKNames::iterator BKMKNmItr;
218
typedef std::pair<bool,String> BKMK;
219
typedef std::pair<long,BKMK> BKMKCP;
220
typedef std::multimap<long,BKMKCP*> BKMKCPs;
221
typedef BKMKCPs::iterator CPItr;
222
223
class WW8_WrtBookmarks
224
{
225
private:	
226
	BKMKCPs aSttCps,aEndCps;	
227
	BKMKNames maSwBkmkNms;	
228
	WW8_WrtBookmarks(const WW8_WrtBookmarks&);	
229
	WW8_WrtBookmarks& operator=(const WW8_WrtBookmarks&);
230
public:	
231
	WW8_WrtBookmarks();	
232
	~WW8_WrtBookmarks();	
233
	void Append( WW8_CP nStartCp, const String& rNm, const ::sw::mark::IMark* pBkmk=NULL );	
234
	void Write( WW8Export& rWrt );	
235
	void MoveFieldMarks(sal_uLong nFrom,sal_uLong nTo);	
211
};
236
};
212
237
238
WW8_WrtBookmarks::WW8_WrtBookmarks()
239
{}
240
241
WW8_WrtBookmarks::~WW8_WrtBookmarks()
242
{	
243
	CPItr aEnd = aSttCps.end();	
244
	for (CPItr aItr = aSttCps.begin();aItr!=aEnd;aItr++) 
245
	{		
246
		if (aItr->second)		
247
		{				
248
			delete aItr->second;			
249
			aItr->second = NULL;		
250
		}	
251
	}
252
}
253
254
void WW8_WrtBookmarks::Append( WW8_CP nStartCp, const String& rNm, const ::sw::mark::IMark*)
255
{	
256
	std::pair<BKMKNmItr,bool> aResult = maSwBkmkNms.insert(std::pair<String,long>(rNm,0L));	
257
	if (aResult.second)	
258
	{		
259
		BKMK aBK(false,rNm);		
260
		BKMKCP* pBKCP = new BKMKCP((long)nStartCp,aBK);		
261
		aSttCps.insert(std::pair<long,BKMKCP*>(nStartCp,pBKCP));	
262
		aResult.first->second = (long)nStartCp;
263
	}	
264
	else	
265
	{		
266
		std::pair<CPItr,CPItr> aRange = aSttCps.equal_range(aResult.first->second);		
267
		for (CPItr aItr = aRange.first;aItr != aRange.second;aItr++)		
268
		{			
269
			if (aItr->second && aItr->second->second.second == rNm)			
270
			{				
271
				if (aItr->second->second.first)					
272
					nStartCp--;				
273
				aItr->second->first = (long)nStartCp;
274
				break;
275
			}		
276
		}	
277
	}
278
}
279
280
void WW8_WrtBookmarks::Write( WW8Export& rWrt)
281
{	
282
	if (!aSttCps.size())		
283
		return;		
284
	CPItr aItr;	
285
	long n;	
286
	std::vector<String> aNames;	
287
	SvMemoryStream aTempStrm1(65535,65535);	
288
	SvMemoryStream aTempStrm2(65535,65535);	
289
	for (aItr = aSttCps.begin();aItr!=aSttCps.end();aItr++)	
290
	{		
291
		if (aItr->second)		
292
		{			
293
			aEndCps.insert(std::pair<long,BKMKCP*>(aItr->second->first,aItr->second));			
294
			aNames.push_back(aItr->second->second.second);			
295
			SwWW8Writer::WriteLong( aTempStrm1, aItr->first);		
296
		}	
297
	}	
298
	
299
	aTempStrm1.Seek(0L);	
300
	for (aItr = aEndCps.begin(), n = 0;aItr != aEndCps.end();aItr++,n++)	
301
	{		
302
		if (aItr->second)		
303
		{			
304
			aItr->second->first = n;			
305
			SwWW8Writer::WriteLong( aTempStrm2, aItr->first);		
306
		}	
307
	}	
308
	
309
	aTempStrm2.Seek(0L);	
310
	rWrt.WriteAsStringTable(aNames, rWrt.pFib->fcSttbfbkmk,rWrt.pFib->lcbSttbfbkmk);	
311
	SvStream& rStrm = rWrt.bWrtWW8 ? *rWrt.pTableStrm : rWrt.Strm();	
312
	rWrt.pFib->fcPlcfbkf = rStrm.Tell();	
313
	rStrm<<aTempStrm1;		
314
	SwWW8Writer::WriteLong(rStrm, rWrt.pFib->ccpText + rWrt.pFib->ccpTxbx);	
315
	for (aItr = aSttCps.begin();aItr!=aSttCps.end();aItr++)	
316
	{		
317
		if (aItr->second)		
318
		{			 
319
			SwWW8Writer::WriteLong(rStrm, aItr->second->first);		
320
		}	
321
	}	
322
	rWrt.pFib->lcbPlcfbkf = rStrm.Tell() - rWrt.pFib->fcPlcfbkf;        
323
	rWrt.pFib->fcPlcfbkl = rStrm.Tell();        
324
	rStrm<<aTempStrm2;        
325
	SwWW8Writer::WriteLong(rStrm, rWrt.pFib->ccpText + rWrt.pFib->ccpTxbx);        
326
	rWrt.pFib->lcbPlcfbkl = rStrm.Tell() - rWrt.pFib->fcPlcfbkl;	
327
}
328
329
void WW8_WrtBookmarks::MoveFieldMarks(sal_uLong nFrom,sal_uLong nTo)
330
{		
331
	std::pair<CPItr,CPItr> aRange = aSttCps.equal_range(nFrom);	
332
	CPItr aItr = aRange.first;		
333
	while (aItr != aRange.second)	
334
	{		
335
		if (aItr->second)		
336
		{						
337
			if (aItr->second->first == nFrom)			
338
			{				
339
				aItr->second->second.first = true;				
340
				aItr->second->first = nTo;			
341
			}			
342
			aSttCps.insert(std::pair<long,BKMKCP*>(nTo,aItr->second));			
343
			aItr->second = NULL;			
344
			aRange = aSttCps.equal_range(nFrom);			
345
			aItr = aRange.first;			
346
			continue;		
347
		}		
348
		aItr++;	
349
	}
350
}
351
213
#define ANZ_DEFAULT_STYLES 16
352
#define ANZ_DEFAULT_STYLES 16
214
353
215
// die Namen der StorageStreams
354
// die Namen der StorageStreams
Lines 1255-1261 Link Here
1255
//--------------------------------------------------------------------------
1394
//--------------------------------------------------------------------------
1256
/*  */
1395
/*  */
1257
1396
1258
WW8_WrtBookmarks::WW8_WrtBookmarks()
1397
/*WW8_WrtBookmarks::WW8_WrtBookmarks()
1259
    : aSttCps( 0, 16 ), aEndCps( 0, 16 )
1398
    : aSttCps( 0, 16 ), aEndCps( 0, 16 )
1260
{
1399
{
1261
}
1400
}
Lines 1380-1386 Link Here
1380
            }
1519
            }
1381
        }
1520
        }
1382
    }
1521
    }
1383
}
1522
}*/
1384
1523
1385
void WW8Export::AppendBookmarks( const SwTxtNode& rNd,
1524
void WW8Export::AppendBookmarks( const SwTxtNode& rNd,
1386
    xub_StrLen nAktPos, xub_StrLen nLen )
1525
    xub_StrLen nAktPos, xub_StrLen nLen )
Lines 2535-2541 Link Here
2535
                ;
2674
                ;
2536
            else if ( aIdx.GetNode().IsSectionNode() )
2675
            else if ( aIdx.GetNode().IsSectionNode() )
2537
                ;
2676
                ;
2538
            else if ( !IsInTable() ) //No sections in table
2677
            else if ( !IsInTable() 
2678
				&& (rSect.GetType() != TOX_CONTENT_SECTION && rSect.GetType() != TOX_HEADER_SECTION )) //No sections in table
2539
            {
2679
            {
2540
                ReplaceCr( (char)0xc ); // Indikator fuer Page/Section-Break
2680
                ReplaceCr( (char)0xc ); // Indikator fuer Page/Section-Break
2541
2681
(-)source/filter/ww8/ww8atr.cxx (-3 / +14 lines)
Lines 957-963 Link Here
957
957
958
void WW8AttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pTextNodeInfoInner )
958
void WW8AttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pTextNodeInfoInner )
959
{
959
{
960
    m_rWW8Export.pPapPlc->AppendFkpEntry( m_rWW8Export.Strm().Tell(), m_rWW8Export.pO->Count(), m_rWW8Export.pO->GetData() );
960
    m_rWW8Export.pPapPlc->AppendFkpEntry( m_rWW8Export.Strm().Tell() - (mbOnTOXEnding?2:0), m_rWW8Export.pO->Count(), m_rWW8Export.pO->GetData() );
961
    mbOnTOXEnding = false;
961
    m_rWW8Export.pO->Remove( 0, m_rWW8Export.pO->Count() ); // delete
962
    m_rWW8Export.pO->Remove( 0, m_rWW8Export.pO->Count() ); // delete
962
963
963
    if ( pTextNodeInfoInner.get() != NULL )
964
    if ( pTextNodeInfoInner.get() != NULL )
Lines 1001-1006 Link Here
1001
    }
1002
    }
1002
}
1003
}
1003
1004
1005
void WW8AttributeOutput::OnTOXEnding()
1006
{
1007
	mbOnTOXEnding = true;
1008
}
1009
1004
void WW8AttributeOutput::EndRunProperties( const SwRedlineData* pRedlineData )
1010
void WW8AttributeOutput::EndRunProperties( const SwRedlineData* pRedlineData )
1005
{
1011
{
1006
    Redline( pRedlineData );
1012
    Redline( pRedlineData );
Lines 2066-2072 Link Here
2066
        static const sal_Char sEntryEnd[] = "\" ";
2072
        static const sal_Char sEntryEnd[] = "\" ";
2067
2073
2068
        ww::eField eCode = ww::eTOC;
2074
        ww::eField eCode = ww::eTOC;
2069
        String sStr;
2075
	//Modify here for i119963, by ZF, 2012-07-03
2076
        String sStr = pTOX->GetMSTOCExpression();
2077
	if (!sStr.Len())
2078
	//End of modification, by ZF
2070
        switch (pTOX->GetType())
2079
        switch (pTOX->GetType())
2071
        {
2080
        {
2072
        case TOX_INDEX:
2081
        case TOX_INDEX:
Lines 2406-2412 Link Here
2406
    GetExport( ).bStartTOX = false;
2415
    GetExport( ).bStartTOX = false;
2407
}
2416
}
2408
2417
2409
void AttributeOutputBase::EndTOX( const SwSection& rSect )
2418
void AttributeOutputBase::EndTOX( const SwSection& rSect,bool bCareEnd )
2410
{
2419
{
2411
    const SwTOXBase* pTOX = rSect.GetTOXBase();
2420
    const SwTOXBase* pTOX = rSect.GetTOXBase();
2412
    if ( pTOX )
2421
    if ( pTOX )
Lines 2415-2420 Link Here
2415
        GetExport( ).OutputField( 0, eCode, aEmptyStr, WRITEFIELD_CLOSE );
2424
        GetExport( ).OutputField( 0, eCode, aEmptyStr, WRITEFIELD_CLOSE );
2416
    }
2425
    }
2417
    GetExport( ).bInWriteTOX = false;
2426
    GetExport( ).bInWriteTOX = false;
2427
    if (bCareEnd)
2428
        OnTOXEnding();
2418
}
2429
}
2419
2430
2420
bool MSWordExportBase::GetNumberFmt(const SwField& rFld, String& rStr)
2431
bool MSWordExportBase::GetNumberFmt(const SwField& rFld, String& rStr)
(-)source/filter/ww8/ww8attributeoutput.hxx (-1 / +5 lines)
Lines 52-57 Link Here
52
    ///
52
    ///
53
    virtual void StartRun( const SwRedlineData* pRedlineData );
53
    virtual void StartRun( const SwRedlineData* pRedlineData );
54
54
55
    virtual void OnTOXEnding();
56
55
    /// End of the text run.
57
    /// End of the text run.
56
    ///
58
    ///
57
    /// No-op for binary filters.
59
    /// No-op for binary filters.
Lines 429-436 Link Here
429
    /// of the field results if we were forced to split text.
431
    /// of the field results if we were forced to split text.
430
    sal_uInt16 m_nFieldResults;
432
    sal_uInt16 m_nFieldResults;
431
433
434
    bool mbOnTOXEnding;
435
432
public:
436
public:
433
    WW8AttributeOutput( WW8Export &rWW8Export ) : AttributeOutputBase(), m_rWW8Export( rWW8Export ) {}
437
    WW8AttributeOutput( WW8Export &rWW8Export ) : AttributeOutputBase(), m_rWW8Export( rWW8Export ),mbOnTOXEnding(false) {}
434
    virtual ~WW8AttributeOutput() {}
438
    virtual ~WW8AttributeOutput() {}
435
439
436
    /// Return the right export class.
440
    /// Return the right export class.
(-)source/filter/ww8/ww8par.cxx (-1 / +13 lines)
Lines 2733-2739 Link Here
2733
            break;
2733
            break;
2734
        case 0x15:
2734
        case 0x15:
2735
            if( !bSpec )        // Juristenparagraph
2735
            if( !bSpec )        // Juristenparagraph
2736
                cInsert = '\xa7';
2736
            {
2737
                cp_set::iterator aItr = maTOXEndCps.find((WW8_CP)nPosCp);
2738
	         if (aItr == maTOXEndCps.end())
2739
                    cInsert = '\xa7';
2740
	         else
2741
		      maTOXEndCps.erase(aItr);
2742
            }
2737
            break;
2743
            break;
2738
        case 0x9:
2744
        case 0x9:
2739
            cInsert = '\x9';    // Tab
2745
            cInsert = '\x9';    // Tab
Lines 3265-3270 Link Here
3265
    nIdctHint(0),
3271
    nIdctHint(0),
3266
	bBidi(false),
3272
	bBidi(false),
3267
    bReadTable(false)
3273
    bReadTable(false)
3274
    //Modify here for i119963, by ZF, 2012-06-13
3275
    //Initialize 3 added data members
3276
    ,mbLoadingTOCCache(false)
3277
    ,mbLoadingTOCHyperlink(false)
3278
    ,mpPosAfterTOC(0)
3279
    //End of modifications, by ZF
3268
{
3280
{
3269
    pStrm->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
3281
    pStrm->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
3270
    nWantedVersion = nVersionPara;
3282
    nWantedVersion = nVersionPara;
(-)source/filter/ww8/ww8par.hxx (+13 lines)
Lines 789-794 Link Here
789
//-----------------------------------------
789
//-----------------------------------------
790
//            Storage-Reader
790
//            Storage-Reader
791
//-----------------------------------------
791
//-----------------------------------------
792
typedef std::set<WW8_CP> cp_set;
793
794
792
class SwWW8ImplReader
795
class SwWW8ImplReader
793
{
796
{
794
private:
797
private:
Lines 1090-1095 Link Here
1090
	bool bBidi;
1093
	bool bBidi;
1091
    bool bReadTable;
1094
    bool bReadTable;
1092
    boost::shared_ptr<SwPaM> mpTableEndPaM;
1095
    boost::shared_ptr<SwPaM> mpTableEndPaM;
1096
	//Modify here for i119963, by ZF, 2012-06-13
1097
	//Add 3 data members:
1098
	//mbLoadingTOCCache: Indicate that currently on loading a TOC, managed by Read_F_TOX() and End_Field()
1099
	//mbLoadingTOCHyperlink: Indicate that current on loading a hyperlink, which is inside a TOC; Managed by Read_F_Hyperlink() and End_Field()
1100
	//mpPosAfterTOC: a document position recorded the after-position of TOC section, managed by Read_F_TOX() and End_Field()
1101
    bool mbLoadingTOCCache;
1102
    bool mbLoadingTOCHyperlink;
1103
    SwPaM* mpPosAfterTOC;
1104
    //End of modifications, by ZF
1105
    cp_set maTOXEndCps;
1093
1106
1094
//---------------------------------------------
1107
//---------------------------------------------
1095
1108
(-)source/filter/ww8/ww8par5.cxx (-8 / +162 lines)
Lines 320-326 Link Here
320
    //"_Toc*" and "_Hlt*" are unnecessary
320
    //"_Toc*" and "_Hlt*" are unnecessary
321
    const String* pName = pB->GetName();
321
    const String* pName = pB->GetName();
322
#if !defined(WW_NATIVE_TOC)
322
#if !defined(WW_NATIVE_TOC)
323
    if(    !pName || pName->EqualsIgnoreCaseAscii( "_Toc", 0, 4 )
323
    //Modify here for i119963, by ZF, 2012-06-13
324
    //Now, as we read the TOC field completely, we also need the hyperlinks inside keep available.
325
    //So the hidden bookmarks inside for hyperlink jumping also should be kept. 
326
    //former codes:
327
    //if(    !pName || (pName->EqualsIgnoreCaseAscii( "_Toc", 0, 4 ) && maLinkSet.find(*pName)==maLinkSet.end())
328
    if(    !pName 
329
    //End of modification, by ZF
324
        || pName->EqualsIgnoreCaseAscii( "_Hlt", 0, 4 ) )
330
        || pName->EqualsIgnoreCaseAscii( "_Hlt", 0, 4 ) )
325
        return 0;
331
        return 0;
326
#endif 
332
#endif 
Lines 662-668 Link Here
662
    sal_uInt16 nRet = 0;
668
    sal_uInt16 nRet = 0;
663
    WW8PLCFx_FLD* pF = pPlcxMan->GetFld();
669
    WW8PLCFx_FLD* pF = pPlcxMan->GetFld();
664
    ASSERT(pF, "WW8PLCFx_FLD - Pointer nicht da");
670
    ASSERT(pF, "WW8PLCFx_FLD - Pointer nicht da");
665
    if (!pF || !pF->EndPosIsFieldEnd())
671
    WW8_CP nCP = 0;
672
    if (!pF || !pF->EndPosIsFieldEnd(nCP))
666
        return nRet;
673
        return nRet;
667
674
668
    const SvtFilterOptions* pOpt = SvtFilterOptions::Get();
675
    const SvtFilterOptions* pOpt = SvtFilterOptions::Get();
Lines 711-718 Link Here
711
        }
718
        }
712
        break;
719
        break;
713
#else
720
#else
721
            //Modify here for i119963, by ZF, 2012-06-13
722
            //Doing corresponding status management for TOC field, index field, hyperlink field and page reference field
723
            case 13://TOX
724
            case 8://index
725
                if (mbLoadingTOCCache)
726
                {
727
                    maTOXEndCps.insert(nCP);
728
                    mbLoadingTOCCache = false;
729
                    if (pPaM->End() && pPaM->End()->nNode.GetNode().GetTxtNode() &&  pPaM->End()->nNode.GetNode().GetTxtNode()->Len() == 0)
730
                            JoinNode(*pPaM);
731
                    
732
                    if (mpPosAfterTOC)
733
                    {
734
                        *pPaM = *mpPosAfterTOC;
735
                        delete mpPosAfterTOC;
736
			   mpPosAfterTOC = 0;
737
                    }
738
                }
739
                break;
740
            case 37://REF
741
                if (mbLoadingTOCCache && !mbLoadingTOCHyperlink)
742
                {
743
                    pCtrlStck->SetAttr(*pPaM->GetPoint(),RES_TXTATR_INETFMT);
744
                }
745
                break;
746
            //End of modifications, by ZF
714
            case 88:
747
            case 88:
748
                //Modify here for i119963, by ZF, 2012-06-13
749
                if (mbLoadingTOCHyperlink)
750
                    mbLoadingTOCHyperlink = false;
751
                //End of modifications, by ZF
715
                pCtrlStck->SetAttr(*pPaM->GetPoint(),RES_TXTATR_INETFMT);
752
                pCtrlStck->SetAttr(*pPaM->GetPoint(),RES_TXTATR_INETFMT);
753
		
716
            break;
754
            break;
717
#endif
755
#endif
718
            case 36:
756
            case 36:
Lines 732-741 Link Here
732
{
770
{
733
    switch (nFieldCode)
771
    switch (nFieldCode)
734
    {
772
    {
735
#if defined(WW_NATIVE_TOC)
773
//#if defined(WW_NATIVE_TOC)
736
    case 8:  // allow recursive field in TOC...
774
    case 8:  // allow recursive field in TOC...
737
    case 13: // allow recursive field in TOC...
775
    case 13: // allow recursive field in TOC...
738
#endif
776
//#endif
739
        case 36:
777
        case 36:
740
        case 68:
778
        case 68:
741
        case 79:
779
        case 79:
Lines 2123-2128 Link Here
2123
        case -2:
2161
        case -2:
2124
            if( !sOrigName.Len() )
2162
            if( !sOrigName.Len() )
2125
                sOrigName = aReadParam.GetResult();
2163
                sOrigName = aReadParam.GetResult();
2164
            
2126
            break;
2165
            break;
2127
        }
2166
        }
2128
    }
2167
    }
Lines 2138-2145 Link Here
2138
    return FLD_TEXT;
2177
    return FLD_TEXT;
2139
    }
2178
    }
2140
#endif
2179
#endif
2180
    //Modify here for i119963, by ZF, 2012-06-13
2181
    //loading page reference field in TOC
2182
    if (mbLoadingTOCCache )
2183
    {
2184
	//Step 1. Insert page ref representation as plain text
2185
	//Step 2. If there is no hyperlink settings for current toc, assign link to current ref area
2186
	if ( !mbLoadingTOCHyperlink)
2187
	{
2188
		String sURL,sTarget;
2189
		if( sName.Len() )
2190
        		( sURL += INET_MARK_TOKEN ) += sName;
2191
		SwFmtINetFmt aURL( sURL, sTarget );
2192
		String sLinkStyle = String::CreateFromAscii("Index Link");
2193
		sal_uInt16 nPoolId =
2194
                            SwStyleNameMapper::GetPoolIdFromUIName( sLinkStyle, nsSwGetPoolIdFromName::GET_POOLID_CHRFMT );
2195
		aURL.SetVisitedFmt(sLinkStyle);
2196
		aURL.SetINetFmt(sLinkStyle);
2197
		aURL.SetVisitedFmtId(nPoolId);
2198
		aURL.SetINetFmtId(nPoolId);
2199
		pCtrlStck->NewAttr( *pPaM->GetPoint(), aURL );
2200
	}
2141
2201
2202
        return FLD_TEXT;
2203
    }
2204
    //End of modifications, by ZF
2142
2205
2206
2143
    SwGetRefField aFld(
2207
    SwGetRefField aFld(
2144
        (SwGetRefFieldType*)rDoc.GetSysFldType( RES_GETREFFLD ), sName,
2208
        (SwGetRefFieldType*)rDoc.GetSysFldType( RES_GETREFFLD ), sName,
2145
        REF_BOOKMARK, 0, REF_PAGE );
2209
        REF_BOOKMARK, 0, REF_PAGE );
Lines 2840-2845 Link Here
2840
2904
2841
eF_ResT SwWW8ImplReader::Read_F_Tox( WW8FieldDesc* pF, String& rStr )
2905
eF_ResT SwWW8ImplReader::Read_F_Tox( WW8FieldDesc* pF, String& rStr )
2842
{
2906
{
2907
    //Modify here for i119963, by ZF, 2012-06-13
2908
    mbLoadingTOCCache = true;
2909
    //End of modifications, by ZF
2843
#if defined(WW_NATIVE_TOC)
2910
#if defined(WW_NATIVE_TOC)
2844
    if (1) {
2911
    if (1) {
2845
    ::rtl::OUString aBookmarkName=::rtl::OUString::createFromAscii("_TOC");
2912
    ::rtl::OUString aBookmarkName=::rtl::OUString::createFromAscii("_TOC");
Lines 2979-2984 Link Here
2979
    case TOX_CONTENT:
3046
    case TOX_CONTENT:
2980
        {
3047
        {
2981
            bool bIsHyperlink = false;
3048
            bool bIsHyperlink = false;
3049
            bool bShowPage = true;
2982
            // TOX_OUTLINELEVEL setzen wir genau dann, wenn
3050
            // TOX_OUTLINELEVEL setzen wir genau dann, wenn
2983
            // die Parameter \o in 1 bis 9 liegen
3051
            // die Parameter \o in 1 bis 9 liegen
2984
            // oder der Parameter \f existiert
3052
            // oder der Parameter \f existiert
Lines 3088-3093 Link Here
3088
                case 'n': // don't print page numbers
3156
                case 'n': // don't print page numbers
3089
                    {
3157
                    {
3090
                        // read START and END param
3158
                        // read START and END param
3159
                        bShowPage = false;
3091
                        sal_uInt16 nStart, nEnd;
3160
                        sal_uInt16 nStart, nEnd;
3092
                        if( !aReadParam.GetTokenSttFromTo(  &nStart, &nEnd,
3161
                        if( !aReadParam.GetTokenSttFromTo(  &nStart, &nEnd,
3093
                            WW8ListManager::nMaxLevel ) )
3162
                            WW8ListManager::nMaxLevel ) )
Lines 3149-3156 Link Here
3149
                */
3218
                */
3150
                }
3219
                }
3151
            }
3220
            }
3152
3221
            //Modify here for i119963, by ZF, 2012-06-13
3153
            if (bIsHyperlink)
3222
            //For loading the expression of TOC field, we need to mapping its parameters to TOX entries tokens
3223
            //also include the hyperlinks and page references
3224
            //Former codes:
3225
            /*
3226
             if (bIsHyperlink)
3154
            {
3227
            {
3155
                SwForm aForm(pBase->GetTOXForm());
3228
                SwForm aForm(pBase->GetTOXForm());
3156
                sal_uInt16 nEnd = aForm.GetFormMax()-1;
3229
                sal_uInt16 nEnd = aForm.GetFormMax()-1;
Lines 3171-3177 Link Here
3171
                // <- #i21237#
3244
                // <- #i21237#
3172
                pBase->SetTOXForm(aForm);
3245
                pBase->SetTOXForm(aForm);
3173
            }
3246
            }
3247
            */
3174
3248
3249
            SwFormToken aLinkStart(TOKEN_LINK_START);
3250
            SwFormToken aLinkEnd(TOKEN_LINK_END);
3251
            aLinkStart.sCharStyleName = String::CreateFromAscii("Index Link");
3252
            aLinkEnd.sCharStyleName = String::CreateFromAscii("Index Link");
3253
            SwForm aForm(pBase->GetTOXForm());
3254
            sal_uInt16 nEnd = aForm.GetFormMax()-1;
3255
3256
                // -> #i21237#
3257
                for(sal_uInt16 nLevel = 1; (bIsHyperlink || bShowPage) && nLevel <= nEnd; ++nLevel)
3258
                {
3259
                    SwFormTokens aPattern = aForm.GetPattern(nLevel);
3260
			if (bIsHyperlink)
3261
	                    aPattern.insert(aPattern.begin(), aLinkStart);
3262
			else if (bShowPage)
3263
			{
3264
				for (SwFormTokens::iterator aItr = aPattern.begin();aItr!= aPattern.end();aItr++)
3265
				{
3266
					if (aItr->eTokenType == TOKEN_PAGE_NUMS)
3267
					{
3268
						aPattern.insert(aItr,aLinkStart);
3269
						break;
3270
					}
3271
				}
3272
			}
3273
                    aPattern.push_back(aLinkEnd);
3274
3275
                    aForm.SetPattern(nLevel, aPattern);
3276
3277
                }
3278
                
3279
                // <- #i21237#
3280
            pBase->SetTOXForm(aForm);
3281
            //End of modifications, by ZF
3282
3175
            if (!nMaxLevel)
3283
            if (!nMaxLevel)
3176
                nMaxLevel = WW8ListManager::nMaxLevel;
3284
                nMaxLevel = WW8ListManager::nMaxLevel;
3177
            pBase->SetLevel(nMaxLevel);
3285
            pBase->SetLevel(nMaxLevel);
Lines 3288-3294 Link Here
3288
    } // ToxBase fertig
3396
    } // ToxBase fertig
3289
3397
3290
    // Update fuer TOX anstossen
3398
    // Update fuer TOX anstossen
3291
    rDoc.SetUpdateTOX(true);
3399
    //Modify here for i119963, by ZF, 2012-06-13
3400
    //Commont out following TOC update statement, for the content inside TOC field was parsing directly from document
3401
    //rDoc.SetUpdateTOX(true);
3402
    //End of modification of TOC contents cacsh parsing improvement, by ZF
3292
3403
3293
    // #i21237#
3404
    // #i21237#
3294
    // propagate tab stops from paragraph styles used in TOX to
3405
    // propagate tab stops from paragraph styles used in TOX to
Lines 3327-3339 Link Here
3327
3438
3328
    rDoc.InsertTableOf(*pPaM->GetPoint(), *aFltTOX.GetBase());
3439
    rDoc.InsertTableOf(*pPaM->GetPoint(), *aFltTOX.GetBase());
3329
3440
3441
3330
    //inserting a toc inserts a section before this point, so adjust pos
3442
    //inserting a toc inserts a section before this point, so adjust pos
3331
    //for future page/section segment insertion
3443
    //for future page/section segment insertion
3444
    //Modify here for i119963, by ZF, 2012-06-13
3445
    //The TOC field representation contents should be inserted into TOC section, but not after TOC section.
3446
    //So we need update the document position when loading TOC representation and after loading TOC;
3447
    //Former codes:
3448
    /*
3332
    SwPaM aRegion(*pPaM);
3449
    SwPaM aRegion(*pPaM);
3333
    aRegion.Move(fnMoveBackward);
3450
    aRegion.Move(fnMoveBackward);
3451
    */
3452
    if (mpPosAfterTOC)
3453
		delete mpPosAfterTOC;
3454
    mpPosAfterTOC = new SwPaM(*pPaM);
3455
	(*pPaM).Move(fnMoveBackward);
3456
    SwPaM aRegion(*pPaM);
3457
    //End of modifications, by ZF
3334
    ASSERT(rDoc.GetCurTOX(*aRegion.GetPoint()), "Misunderstood how toc works");
3458
    ASSERT(rDoc.GetCurTOX(*aRegion.GetPoint()), "Misunderstood how toc works");
3335
    if (SwTOXBase* pBase2 = (SwTOXBase*)rDoc.GetCurTOX(*aRegion.GetPoint()))
3459
    if (SwTOXBase* pBase2 = (SwTOXBase*)rDoc.GetCurTOX(*aRegion.GetPoint()))
3336
    {
3460
    {
3461
        //Modify here for i119963, by ZF, 2012-06-13
3462
        pBase2->SetMSTOCExpression(rStr);
3463
        //End of modification, by ZF
3337
        if(nIndexCols>1)
3464
        if(nIndexCols>1)
3338
        {
3465
        {
3339
            // Set the column number for index
3466
            // Set the column number for index
Lines 3353-3359 Link Here
3353
3480
3354
    if (!maApos.back()) //a para end in apo doesn't count
3481
    if (!maApos.back()) //a para end in apo doesn't count
3355
        bWasParaEnd = true;
3482
        bWasParaEnd = true;
3356
    return FLD_OK;
3483
    //Modify here for i119963, by ZF, 2012-06-13
3484
    //Reture FLD_TEXT, instead of FLD_OK
3485
    //FLD_TEXT means the following content, commonly indicate the field representation content should be parsed
3486
    //FLD_OK means the current field loading is finished. The rest part should be ignored.
3487
    //Former codes:
3488
    //return FLD_OK;
3489
    //End of modifications, by ZF
3490
    return FLD_TEXT;
3357
}
3491
}
3358
3492
3359
eF_ResT SwWW8ImplReader::Read_F_Shape(WW8FieldDesc* /*pF*/, String& /*rStr*/)
3493
eF_ResT SwWW8ImplReader::Read_F_Shape(WW8FieldDesc* /*pF*/, String& /*rStr*/)
Lines 3412-3417 Link Here
3412
                        if( sMark.Len() && '"' == sMark.GetChar( sMark.Len()-1 ))
3546
                        if( sMark.Len() && '"' == sMark.GetChar( sMark.Len()-1 ))
3413
                            sMark.Erase( sMark.Len() - 1 );
3547
                            sMark.Erase( sMark.Len() - 1 );
3414
3548
3549
                            //Modify here for i119963, by ZF, 2012-06-13
3550
				if (mbLoadingTOCCache)
3551
				{
3552
					mbLoadingTOCHyperlink = true;//on loading a TOC field nested hyperlink field
3553
				}
3554
				//End of modifications, by ZF
3555
3415
                    }
3556
                    }
3416
                    break;
3557
                    break;
3417
                case 't':
3558
                case 't':
Lines 3437-3442 Link Here
3437
        ( sURL += INET_MARK_TOKEN ) += sMark;
3578
        ( sURL += INET_MARK_TOKEN ) += sMark;
3438
3579
3439
    SwFmtINetFmt aURL( sURL, sTarget );
3580
    SwFmtINetFmt aURL( sURL, sTarget );
3581
	//Modify here for i119963, by ZF, 2012-06-13
3582
	//If on loading TOC field, change the default style into the "index link"
3583
	if (mbLoadingTOCCache)
3584
	{
3585
		String sLinkStyle = String::CreateFromAscii("Index Link");
3586
		sal_uInt16 nPoolId =
3587
                            SwStyleNameMapper::GetPoolIdFromUIName( sLinkStyle, nsSwGetPoolIdFromName::GET_POOLID_CHRFMT );
3588
		aURL.SetVisitedFmt(sLinkStyle);
3589
		aURL.SetINetFmt(sLinkStyle);
3590
		aURL.SetVisitedFmtId(nPoolId);
3591
		aURL.SetINetFmtId(nPoolId);
3592
	}
3593
	//End of modifications, by ZF
3440
3594
3441
    //As an attribute this needs to be closed, and that'll happen from
3595
    //As an attribute this needs to be closed, and that'll happen from
3442
    //EndExtSprm in conjunction with the maFieldStack If there are are flyfrms
3596
    //EndExtSprm in conjunction with the maFieldStack If there are are flyfrms
(-)source/filter/ww8/ww8par6.cxx (+11 lines)
Lines 3828-3833 Link Here
3828
        || pCollA[nId].bColl )              // oder Para-Style ?
3828
        || pCollA[nId].bColl )              // oder Para-Style ?
3829
        return;                             // dann ignorieren
3829
        return;                             // dann ignorieren
3830
3830
3831
    //Modify here for i119963, by ZF, 2012-06-13
3832
    //if current on loading a TOC field, and current trying to apply a hyperlink character style, 
3833
    //just ignore. For the hyperlinks inside TOC in MS Word is not same with a common hyperlink
3834
    //Character styles: without underline and blue font color. And such type style will be applied in others
3835
    //processes. 
3836
    if (mbLoadingTOCCache && pCollA[nId].GetWWStyleId() == ww::stiHyperlink)
3837
    {
3838
        return;
3839
    }
3840
    //End of modification, by ZF
3841
3831
    NewAttr( SwFmtCharFmt( (SwCharFmt*)pCollA[nId].pFmt ) );
3842
    NewAttr( SwFmtCharFmt( (SwCharFmt*)pCollA[nId].pFmt ) );
3832
    nCharFmt = (short) nId;
3843
    nCharFmt = (short) nId;
3833
}
3844
}
(-)source/filter/ww8/ww8scan.cxx (-2 / +12 lines)
Lines 3786-3792 Link Here
3786
    return true;
3786
    return true;
3787
}
3787
}
3788
3788
3789
bool WW8PLCFx_FLD::EndPosIsFieldEnd()
3789
bool WW8PLCFx_FLD::EndPosIsFieldEnd(WW8_CP& nCP)
3790
{
3790
{
3791
    bool bRet = false;
3791
    bool bRet = false;
3792
3792
Lines 3799-3805 Link Here
3799
        void* pData;
3799
        void* pData;
3800
        sal_Int32 nTest;
3800
        sal_Int32 nTest;
3801
        if ( pPLCF->Get(nTest, pData) && ((((sal_uInt8*)pData)[0] & 0x1f) == 0x15) )
3801
        if ( pPLCF->Get(nTest, pData) && ((((sal_uInt8*)pData)[0] & 0x1f) == 0x15) )
3802
        {
3803
            nCP = nTest;
3802
            bRet = true;
3804
            bRet = true;
3805
        }
3803
3806
3804
        pPLCF->SetIdx(n);
3807
        pPLCF->SetIdx(n);
3805
    }
3808
    }
Lines 4116-4122 Link Here
4116
        else if( l1 < l0 )
4119
        else if( l1 < l0 )
4117
            nIsEnd = 1;
4120
            nIsEnd = 1;
4118
        else
4121
        else
4119
            nIsEnd = ( nIsEnd ) ? 0 : 1;
4122
        {
4123
            const void * p = pBook[0]->GetData(pBook[0]->GetIdx());
4124
            long nPairFor = (p == NULL)? 0L : SVBT16ToShort(*((SVBT16*) p));
4125
            if (nPairFor == pBook[1]->GetIdx())
4126
                nIsEnd = 0;
4127
            else
4128
                nIsEnd = ( nIsEnd ) ? 0 : 1;
4129
        }
4120
    }
4130
    }
4121
    return *this;
4131
    return *this;
4122
}
4132
}
(-)source/filter/ww8/ww8scan.hxx (-1 / +1 lines)
Lines 701-707 Link Here
701
    virtual void GetSprms(WW8PLCFxDesc* p);
701
    virtual void GetSprms(WW8PLCFxDesc* p);
702
    virtual WW8PLCFx& operator ++( int );
702
    virtual WW8PLCFx& operator ++( int );
703
    bool StartPosIsFieldStart();
703
    bool StartPosIsFieldStart();
704
    bool EndPosIsFieldEnd();
704
    bool EndPosIsFieldEnd(WW8_CP&);
705
    bool GetPara(long nIdx, WW8FieldDesc& rF);
705
    bool GetPara(long nIdx, WW8FieldDesc& rF);
706
};
706
};
707
707
(-)source/ui/index/toxmgr.cxx (+8 lines)
Lines 459-466 Link Here
459
        if (pNewTOX != NULL) // => pTOX != NULL
459
        if (pNewTOX != NULL) // => pTOX != NULL
460
            pDoc->ChgTOX(*pTOX, *pNewTOX);
460
            pDoc->ChgTOX(*pTOX, *pNewTOX);
461
461
462
		//Modify here for i119963, by ZF, 2012-07-03
463
		pTOX->DisableKeepExpression();
464
		//End of modification, by ZF
465
462
		bRet = pSh->UpdateTableOf(*pTOX, pSet);
466
		bRet = pSh->UpdateTableOf(*pTOX, pSet);
463
467
468
		//Modify here for i119963, by ZF, 2012-07-03
469
		pTOX->EnableKeepExpression();
470
		//End of modification, by ZF
471
464
        if (pDoc->GetIDocumentUndoRedo().DoesUndo())
472
        if (pDoc->GetIDocumentUndoRedo().DoesUndo())
465
        {
473
        {
466
            pDoc->GetIDocumentUndoRedo().EndUndo(UNDO_TOXCHANGE, NULL);
474
            pDoc->GetIDocumentUndoRedo().EndUndo(UNDO_TOXCHANGE, NULL);

Return to issue 119963