diff options
author | Rüdiger Timm <rt@openoffice.org> | 2005-01-05 15:02:51 +0000 |
---|---|---|
committer | Rüdiger Timm <rt@openoffice.org> | 2005-01-05 15:02:51 +0000 |
commit | 4c6e38d21ae2f5486594cf393cb15269a04abbc6 (patch) | |
tree | 65c5cbe0f6456ee2f2b35268b816631f864dfa2f /sw/source/core/sw3io | |
parent | 7ff93e244c16597b8c2d763ddbd77ca6483d65e8 (diff) |
INTEGRATION: CWS os44 (1.1.2); FILE ADDED
2004/12/03 15:41:51 os 1.1.2.2: #i37761# additional include
2004/11/24 13:45:18 os 1.1.2.1: #i37761# conversion functions used from several filters
Diffstat (limited to 'sw/source/core/sw3io')
-rw-r--r-- | sw/source/core/sw3io/sw3convert.cxx | 596 |
1 files changed, 596 insertions, 0 deletions
diff --git a/sw/source/core/sw3io/sw3convert.cxx b/sw/source/core/sw3io/sw3convert.cxx new file mode 100644 index 000000000000..98fd3719a287 --- /dev/null +++ b/sw/source/core/sw3io/sw3convert.cxx @@ -0,0 +1,596 @@ +/************************************************************************* + * + * $RCSfile: sw3convert.cxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: rt $ $Date: 2005-01-05 16:02:51 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + + +#pragma hdrstop + +#include <stdlib.h> + +#include <stdio.h> +#include "hintids.hxx" + +#ifndef _TOOLS_RESID_HXX +#include <tools/resid.hxx> +#endif +#ifndef _SFXMACITEM_HXX //autogen +#include <svtools/macitem.hxx> +#endif +#ifndef _ZFORLIST_HXX //autogen +#include <svtools/zforlist.hxx> +#endif +#ifndef _ZFORMAT_HXX //autogen +#include <svtools/zformat.hxx> +#endif +#ifndef SVTOOLS_URIHELPER_HXX +#include <svtools/urihelper.hxx> +#endif +#ifndef _LINKMGR_HXX +#include <sfx2/linkmgr.hxx> +#endif + +#ifndef _SVSTDARR_USHORTS_DECL +#define _SVSTDARR_USHORTS +#include <svtools/svstdarr.hxx> +#endif +#ifndef _SVX_LRSPITEM_HXX //autogen +#include <svx/lrspitem.hxx> +#endif +#ifndef _SVX_TSPTITEM_HXX //autogen +#include <svx/tstpitem.hxx> +#endif + +#ifndef _FMTINFMT_HXX //autogen +#include <fmtinfmt.hxx> +#endif +#ifndef _FMTFLD_HXX //autogen +#include <fmtfld.hxx> +#endif +#ifndef _FRMATR_HXX +#include <frmatr.hxx> +#endif +#include "doc.hxx" +#include "docary.hxx" +#include "fldbas.hxx" +#include "flddat.hxx" +#include "docufld.hxx" +#include "chpfld.hxx" +#include "ddefld.hxx" +#include "expfld.hxx" +#include "reffld.hxx" +#include "usrfld.hxx" +#include "dbfld.hxx" +#include "txtfld.hxx" +#include "ndtxt.hxx" + +//really used ids from old sw3ids.hxx +#define SWG_INETBROWSER 0x000e // URL-Grf-Nodes, Browse-Flag, Format-Ums. +#define SWG_NEWFIELDS 0x0200 // Felder mit Numberformatter-Zahlenformat +#define SWG_EXPORT40 0x0110 // Version fuer 4.0-Export ab 5.0 + + +//#include "poolfmt.hxx" // fuer InSetExpField +//#include "poolfmt.hrc" // fuer InSetExpField + +//#if !defined(UNX) && !defined(MSC) && !defined(PPC) && !defined(CSET) && !defined(__MWERKS__) && !defined(WTC) + +//#define FIELDFNTAB_SIZE 37 +//#if FIELDFNTAB_SIZE != RES_FIELDS_END - RES_FIELDS_BEGIN +//#error Feld-Tabelle ist ungueltigt. Wurden neue Hint-IDs zugefuegt ?? +//#endif + +//#endif + +//#define SWG_AUTHORITY_ENTRY_LCL 'E' + +//sal_Char __FAR_DATA sSW3IO_FixedField[] = "FixedExport"; +//sal_Char __FAR_DATA sSW3IO_AuthorityField[] = "AuthorityExport"; +/* #108791# */ +//sal_Char __FAR_DATA sSW3IO_DropDownField[] = "DropDownExport"; + +struct OldFormats +{ + NfIndexTableOffset eFormatIdx; + USHORT nOldFormat; +}; + +static OldFormats aOldDateFmt40[] = +{ + // Datumsfelder: + NF_DATE_SYSTEM_SHORT, DFF_SSYS, // Kurzes Systemdatum + NF_DATE_SYSTEM_LONG, DFF_LSYS, // Langes Systemdatum + NF_DATE_SYS_DDMMYY, DFF_DMY, // 06.10.64 + NF_DATE_SYS_DDMMYYYY, DFF_DMYY, // 06.10.1964 + NF_DATE_SYS_DMMMYY, DFF_DMMY, // 06. Okt 64 + NF_DATE_SYS_DMMMYYYY, DFF_DMMYY, // 06. Okt 1964 + NF_DATE_DIN_DMMMMYYYY, DFF_DMMMYY, // 06. Oktober 1964 + NF_DATE_DIN_DMMMMYYYY, DFF_DMMMY, // 06. Oktober 64 + NF_DATE_SYS_NNDMMMYY, DFF_DDMMY, // Di, 06. Okt 64 + NF_DATE_SYS_NNDMMMMYYYY, DFF_DDMMMY, // Di, 06. Oktober 64 + NF_DATE_SYS_NNDMMMMYYYY, DFF_DDMMMYY, // Di, 06. Oktober 1964 + NF_DATE_SYS_NNNNDMMMMYYYY, DFF_DDDMMMYY, // Dienstag, 06. Oktober 1964 + NF_DATE_SYS_NNNNDMMMMYYYY, DFF_DDDMMMY, // Dienstag, 06. Oktober 64 + NF_DATE_SYS_MMYY, DFF_MY, // 10.64 + NF_DATE_DIN_MMDD, DFF_MD, // 10-06 + NF_DATE_DIN_YYMMDD, DFF_YMD, // 64-10-06 + NF_DATE_DIN_YYYYMMDD, DFF_YYMD, // 1964-10-06 + + NF_NUMERIC_START, 0 // Tabellenende +}; + +static OldFormats aOldDateFmt30[] = +{ + // Datumsfelder: + NF_DATE_SYSTEM_SHORT, DFF_SSYS, // Kurzes Systemdatum + NF_DATE_SYSTEM_LONG, DFF_LSYS, // Langes Systemdatum + NF_DATE_SYS_DDMMYY, DFF_DMY, // 06.10.64 + NF_DATE_SYS_DDMMYYYY, DFF_DMYY, // 06.10.1964 + NF_DATE_SYS_DMMMYY, DFF_DMMY, // 06. Okt 64 + NF_DATE_SYS_DMMMYYYY, 4 /*DFF_DMMYY*/, // 06. Okt 1964 + NF_DATE_DIN_DMMMMYYYY, 5 /*DFF_DMMMYY*/, // 06. Oktober 1964 + NF_DATE_DIN_DMMMMYYYY, 5 /*DFF_DMMMY*/, // 06. Oktober 64 + NF_DATE_SYS_NNDMMMMYYYY, 6 /*DFF_DDMMMYY*/, // Di, 06. Oktober 1964 + NF_DATE_SYS_NNDMMMYY, 6 /*DFF_DDMMY*/, // Di, 06. Okt 64 + NF_DATE_SYS_NNDMMMMYYYY, 6 /*DFF_DDMMMY*/, // Di, 06. Oktober 64 + NF_DATE_SYS_NNNNDMMMMYYYY, 7 /*DFF_DDDMMMYY*/, // Dienstag, 06. Oktober 1964 + NF_DATE_SYS_NNNNDMMMMYYYY, 7 /*DFF_DDDMMMY*/, // Dienstag, 06. Oktober 64 + NF_DATE_SYS_MMYY, 2 /*DFF_MY*/, // 10.64 + NF_DATE_DIN_MMDD, DFF_MD, // 10-06 + NF_DATE_DIN_YYMMDD, DFF_YMD, // 64-10-06 + NF_DATE_DIN_YYYYMMDD, DFF_YYMD, // 1964-10-06 + + NF_NUMERIC_START, 0 // Tabellenende +}; + +static OldFormats aOldTimeFmt[] = +{ + // Zeitfelder: + NF_TIME_HHMMSS, TF_SYSTEM, // Systemzeit + NF_TIME_HHMM, TF_SSMM_24, // 23:25 + NF_TIME_HHMMAMPM, TF_SSMM_12, // 11:25 PM + + NF_NUMERIC_START, 0 // Tabellenende +}; + +static OldFormats aOldGetSetExpFmt40[] = +{ + NF_TEXT, VVF_CMD, // Kommando anzeigen + NF_TEXT, VVF_INVISIBLE, // unsichtbar + NF_PERCENT_INT, VVF_XXP, // 1234% + NF_PERCENT_DEC2, VVF_XX_XXP, // 1.234,56% + NF_TEXT, VVF_CLEAR, // ??? + + NF_NUMBER_SYSTEM, VVF_SYS, // Zahlenformat aus der + // Systemeinstellung + NF_NUMBER_INT, VVF_X, // 1234 + NF_NUMBER_DEC2, VVF_X_X, // 1234,5 + NF_NUMBER_DEC2, VVF_X_XX, // 1245,56 + NF_NUMBER_1000DEC2, VVF_XX_XX, // 1.234,56 + NF_NUMBER_1000DEC2, VVF_XX_X, // 1.234,5 + NF_NUMBER_1000DEC2, VVF_XX_XXX, // 1.234,567 + NF_CURRENCY_1000DEC2, VVF_SYS_CUR, // W„hrungsformat aus der + // Systemeinstellung + // (1.234,00 DM) + NF_CURRENCY_1000INT, VVF_X_CUR, // 1234 DM + NF_CURRENCY_1000DEC2, VVF_XX_XX_CUR, // 1234,56 DM 1234,00 DM + NF_CURRENCY_1000DEC2_DASHED, VVF_XX_X0_CUR, // 1234,56 DM 1234,-- DM + NF_CURRENCY_1000INT, VVF_CUR_X, // DM 1234 + NF_CURRENCY_1000DEC2, VVF_CUR_XX_XX, // DM 1234,56 DM 1234,00 + NF_CURRENCY_1000DEC2_DASHED, VVF_CUR_XX_X0, // DM 1234,56 DM 1234,-- + + NF_NUMERIC_START, 0 // Tabellenende +}; + +static OldFormats aOldGetSetExpFmt30[] = +{ + NF_TEXT, VVF_CMD, // Kommando anzeigen + NF_TEXT, VVF_INVISIBLE, // unsichtbar + NF_PERCENT_INT, VVF_XXP, // 1234% + NF_PERCENT_DEC2, VVF_XX_XXP, // 1.234,56% + NF_TEXT, VVF_CLEAR, // ??? + + NF_NUMBER_SYSTEM, 0x0020, // Zahlenformat aus der + // Systemeinstellung + NF_NUMBER_INT, 0x0080, // 1234 + NF_NUMBER_1000DEC2, 0x0100, // 1.234,56 + NF_NUMBER_DEC2, 0x0100, // 1234,5 + NF_NUMBER_DEC2, 0x0100, // 1245,56 + NF_NUMBER_1000DEC2, 0x0100, // 1.234,5 + NF_NUMBER_1000DEC2, 0x0100, // 1.234,567 + NF_CURRENCY_1000DEC2, 0x0200, // W„hrungsformat aus der + // Systemeinstellung + // (1.234,00 DM) + NF_CURRENCY_1000INT, 0x1000, // 1234 DM + NF_CURRENCY_1000DEC2, 0x1000, // 1234,56 DM 1234,00 DM + NF_CURRENCY_1000DEC2_DASHED, 0x1000, // 1234,56 DM 1234,-- DM + NF_CURRENCY_1000INT, 0x1000, // DM 1234 + NF_CURRENCY_1000DEC2, 0x1000, // DM 1234,56 DM 1234,00 + NF_CURRENCY_1000DEC2_DASHED, 0x1000, // DM 1234,56 DM 1234,-- + + NF_NUMERIC_START, 0 // Tabellenende +}; + +void sw3io_ConvertFromOldField( SwDoc& rDoc, USHORT& rWhich, + USHORT& rSubType, ULONG &rFmt, + USHORT nVersion ) +{ + const OldFormats *pOldFmt = 0L; + + switch( rWhich ) + { + case RES_DATEFLD: + case RES_FIXDATEFLD: + if( nVersion < SWG_NEWFIELDS ) + { + rSubType = DATEFLD; + if( RES_FIXDATEFLD == rWhich ) + rSubType |= FIXEDFLD; + rWhich = RES_DATETIMEFLD; + pOldFmt = nVersion<SWG_INETBROWSER ? aOldDateFmt30 + : aOldDateFmt40; + } + break; + + case RES_TIMEFLD: + case RES_FIXTIMEFLD: + if( nVersion < SWG_NEWFIELDS ) + { + rSubType = TIMEFLD; + if( RES_FIXTIMEFLD == rWhich ) + rSubType |= FIXEDFLD; + rWhich = RES_DATETIMEFLD; + pOldFmt = aOldTimeFmt; + } + break; + + case RES_DBFLD: + if( nVersion < SWG_NEWFIELDS ) + { + rSubType = SUB_OWN_FMT; + pOldFmt = nVersion<SWG_INETBROWSER ? aOldGetSetExpFmt30 + : aOldGetSetExpFmt40; + } + break; + + case RES_TABLEFLD: + case RES_GETEXPFLD: + case RES_SETEXPFLD: + case RES_USERFLD: + if( nVersion < SWG_NEWFIELDS ) + { + if( rFmt == VVF_INVISIBLE ) + { + rSubType = SUB_INVISIBLE; + rFmt = 0; + } + else if( rFmt == VVF_CMD ) + { + rSubType = SUB_CMD; + rFmt = 0; + } + else + { + // Kleiner Hack: Bei Numernkreisen wird das + // unkonvertierte Format noch benoetigt. Wir merken es + // uns voruebergehend mal im Subtyp, sofern es + // ueberhaupt als entsprechendes Format in Frage kommt. + if( RES_SETEXPFLD==rWhich && + rFmt >= (USHORT)SVX_NUM_CHARS_UPPER_LETTER && + rFmt <= (USHORT)SVX_NUM_BITMAP ) + { + rSubType = (USHORT)rFmt; + } + pOldFmt = nVersion<SWG_INETBROWSER ? aOldGetSetExpFmt30 + : aOldGetSetExpFmt40; + } + } + break; + case RES_DOCINFOFLD: + if( nVersion < SWG_NEWFIELDS ) + { + switch( rFmt ) + { + case RF_AUTHOR: rSubType = DI_SUB_AUTHOR; break; + case RF_TIME: rSubType = DI_SUB_TIME; break; + case RF_DATE: rSubType = DI_SUB_DATE; break; + case RF_ALL: rSubType = DI_SUB_DATE; break; + } + rFmt = 0; + } + break; + } + + if( pOldFmt ) + { + SvNumberFormatter *pFormatter = rDoc.GetNumberFormatter(); + USHORT i = 0; + + while( pOldFmt[i].eFormatIdx != NF_NUMERIC_START || + pOldFmt[i].nOldFormat) + { + if( rFmt == pOldFmt[i].nOldFormat ) + { + rFmt = pFormatter->GetFormatIndex(pOldFmt[i].eFormatIdx, LANGUAGE_SYSTEM); + break; + } + i++; + } + } +} +void sw3io_ConvertToOldField( const SwField* pFld, USHORT& rWhich, + ULONG& rFmt, ULONG nFFVersion ) +{ + const OldFormats *pOldFmt = 0L; + ULONG nOldFmt = rFmt; + + switch( rWhich ) + { + case RES_DOCINFOFLD: + if( SOFFICE_FILEFORMAT_40 >= nFFVersion ) + { + switch (pFld->GetSubType() & 0xff00) + { + case DI_SUB_AUTHOR: rFmt = RF_AUTHOR; break; + case DI_SUB_TIME: rFmt = RF_TIME; break; + case DI_SUB_DATE: rFmt = RF_DATE; break; + } + } + break; + + case RES_DATETIMEFLD: + if( SOFFICE_FILEFORMAT_40 >= nFFVersion ) + { + USHORT nSubType = ((SwDateTimeField*) pFld)->GetSubType(); + switch( nSubType ) + { + case DATEFLD: rWhich = RES_DATEFLD; break; + case TIMEFLD: rWhich = RES_TIMEFLD; break; + case DATEFLD|FIXEDFLD: rWhich = RES_FIXDATEFLD; break; + case TIMEFLD|FIXEDFLD: rWhich = RES_FIXTIMEFLD; break; + } + + if( nSubType & DATEFLD ) + { + rFmt = DFF_DMY; + pOldFmt = aOldDateFmt40; + } + else + { + rFmt = TF_SYSTEM; + pOldFmt = aOldTimeFmt; + } + } + break; + + case RES_DBFLD: + case RES_TABLEFLD: + case RES_GETEXPFLD: + case RES_SETEXPFLD: + case RES_USERFLD: + if( SOFFICE_FILEFORMAT_40 >= nFFVersion ) + { + USHORT nSubType = pFld->GetSubType(); + + if (nSubType & SUB_INVISIBLE) + rFmt = VVF_INVISIBLE; + else if (nSubType & SUB_CMD) + rFmt = VVF_CMD; + else if( !(GSE_SEQ & nSubType) ) + { + pOldFmt = aOldGetSetExpFmt40; + rFmt = VVF_SYS; + } + } + break; + + case RES_GETREFFLD: + if( SOFFICE_FILEFORMAT_31 == nFFVersion ) + { + switch( rFmt ) + { + case REF_PAGE: + case REF_CHAPTER: + case REF_CONTENT: + break; + + default: + // case REF_UPDOWN: + // case REF_PAGE_PGDESC: + rFmt = REF_PAGE; + break; + } + } + break; + } + + if( pOldFmt && nOldFmt ) + { + USHORT i = 0; + + SvNumberFormatter *pFormatter = ((SwValueField*)pFld)->GetDoc()->GetNumberFormatter(); + const SvNumberformat* pEntry = pFormatter->GetEntry( nOldFmt ); + + if( pEntry ) + { + while( pOldFmt[i].eFormatIdx != NF_NUMERIC_START || + pOldFmt[i].nOldFormat ) + { + ULONG nKey = pFormatter->GetFormatIndex( + pOldFmt[i].eFormatIdx, pEntry->GetLanguage() ); + + if( nOldFmt == nKey ) + { + rFmt = pOldFmt[i].nOldFormat; + break; + } + i++; + } + } + } +} +void lcl_sw3io__ConvertNumTabStop( SvxTabStopItem& rTStop, long nOffset ) +{ + for( USHORT n = 0; n < rTStop.Count(); ++n ) + { + SvxTabStop& rTab = (SvxTabStop&)rTStop[ n ]; + if( SVX_TAB_ADJUST_DEFAULT != rTab.GetAdjustment() && + rTab.GetTabPos() ) + { + rTab.GetTabPos() += nOffset; + } + } +} +void lcl_sw3io__ConvertNumTabStop( SwTxtNode& rTxtNd, long nOffset, + BOOL bDeep ) +{ + const SfxPoolItem* pItem; + if( SFX_ITEM_SET == rTxtNd.GetSwAttrSet().GetItemState( RES_PARATR_TABSTOP, + bDeep, &pItem ) ) + { + SvxTabStopItem aTStop( *(SvxTabStopItem*)pItem ); + lcl_sw3io__ConvertNumTabStop( aTStop, nOffset ); + rTxtNd.SwCntntNode::SetAttr( aTStop ); + } +} + +void lcl_sw3io_ChkHiddenExp( String& rCond ) +{ + // die Expression wurde bei 4.0 Export einmal gedreht, beim erneuten + // Einlesen sollte diese nicht noch mal gedreht werden. + xub_StrLen nLen = rCond.Len(), nPos = nLen, nCnt = 1; + if( 3 < nPos-- && ')' == rCond.GetChar( nPos ) && + '!' == rCond.GetChar( nPos = 0 ) && '(' == rCond.GetChar( ++nPos )) + { + // dann teste mal ob es dann eine komplette Klammerung ist + --nLen; ++nPos; + nCnt = 0; + while( nPos < nLen ) + switch( rCond.GetChar( nPos++ ) ) + { + case '(': ++nCnt; break; + case ')': if( !nCnt-- ) + nPos = nLen; + break; + } + } + + if( !nCnt ) + rCond = rCond.Copy( 2, rCond.Len() - 3); + else + rCond.InsertAscii( "!(", 0 ) += ')'; +} + +void lcl_sw3io__ConvertNumLRSpace( SwTxtNode& rTxtNd, const SwNumRule& rNumRule, + BYTE nLevel, BOOL bTabStop ) +{ + if( nLevel == NO_NUMBERING ) + return; + + nLevel = GetRealLevel( nLevel ); + USHORT nNumLSpace = rNumRule.Get( nLevel ).GetAbsLSpace(); + + // Wenn im Absatz der Einzug eingestellt ist, dann will + // man den wieder Erreichen, sonst den der NumRule. + const SfxPoolItem *pItem; + const SvxLRSpaceItem *pParaLRSpace = 0; + const SwAttrSet *pAttrSet = rTxtNd.GetpSwAttrSet(); + if( pAttrSet && + SFX_ITEM_SET == pAttrSet->GetItemState( RES_LR_SPACE, FALSE, &pItem ) ) + pParaLRSpace = (const SvxLRSpaceItem *)pItem; + USHORT nWishLSpace = pParaLRSpace ? pParaLRSpace->GetTxtLeft() : nNumLSpace; + + // Dazu muss man den folgenden Wert im Absatz einstellen + const SvxLRSpaceItem& rCollLRSpace = rTxtNd.GetAnyFmtColl().GetLRSpace(); + USHORT nOldLSpace = pParaLRSpace ? pParaLRSpace->GetTxtLeft() + : rCollLRSpace.GetTxtLeft(); + USHORT nNewLSpace; + if( rNumRule.IsAbsSpaces() ) + nNewLSpace = rCollLRSpace.GetTxtLeft(); + else + nNewLSpace = nWishLSpace > nNumLSpace ? nWishLSpace - nNumLSpace : 0U; + + // Wenn der neue Wert zufaellig der der Vorlage ist und der + // rechte Einzug auch mit dem der Vorlage ueberseinstimmt, + // dann braucht bzw. darf man das Absatz-Attribut nicht + // setzen, sonst muss man es setzen. + if( nNewLSpace == rCollLRSpace.GetTxtLeft() && + (!pParaLRSpace || pParaLRSpace->GetRight() == rCollLRSpace.GetRight()) ) + { + if( pParaLRSpace ) + rTxtNd.ResetAttr( RES_LR_SPACE ); + } + else + { + if( !pParaLRSpace ) + pParaLRSpace = &rCollLRSpace; + SvxLRSpaceItem aLRSpace( *pParaLRSpace ); + short nFirst = aLRSpace.GetTxtFirstLineOfst(); + if( nFirst < 0 && (USHORT)-nFirst > nNewLSpace ) + aLRSpace.SetTxtFirstLineOfst( -(short)nNewLSpace ); + aLRSpace.SetTxtLeft( nNewLSpace ); + ((SwCntntNode&)rTxtNd).SetAttr( aLRSpace ); + } + + if( bTabStop && nOldLSpace != nNewLSpace ) + lcl_sw3io__ConvertNumTabStop( rTxtNd, + (long)nOldLSpace - (long)nNewLSpace, + TRUE ); +} + |