Kaydet (Commit) ee41ad34 authored tarafından Troy Rollo's avatar Troy Rollo Kaydeden (comit) Michael Stahl

fdo#33960: sw: fix cross reference fields some more

Change-Id: Ia0a34c8fa475f9dea609962997bce9169d9b8878
üst 2492604c
...@@ -38,28 +38,20 @@ public class CheckCrossReferences { ...@@ -38,28 +38,20 @@ public class CheckCrossReferences {
public com.sun.star.text.XTextField getNextField() public com.sun.star.text.XTextField getNextField()
throws com.sun.star.uno.Exception throws com.sun.star.uno.Exception
{ {
if ( xPortionEnum != null ) { while (true) {
while ( xPortionEnum.hasMoreElements() ) { while (xPortionEnum == null) {
com.sun.star.beans.XPropertySet xPortionProps = if (!xParaEnum.hasMoreElements())
UnoRuntime.queryInterface( fail("Cannot retrieve next field.");
com.sun.star.beans.XPropertySet.class , xPortionEnum.nextElement());
final String sPortionType =
xPortionProps.getPropertyValue( "TextPortionType" ).toString();
if ( sPortionType.equals( "TextField") ) {
com.sun.star.text.XTextField xField = UnoRuntime.queryInterface(
com.sun.star.text.XTextField.class,
xPortionProps.getPropertyValue( "TextField" ) );
assertNotNull("Cannot retrieve next field.", xField);
return xField;
}
}
}
while ( xParaEnum.hasMoreElements() ) {
com.sun.star.container.XEnumerationAccess aPara = com.sun.star.container.XEnumerationAccess aPara =
UnoRuntime.queryInterface( UnoRuntime.queryInterface(
com.sun.star.container.XEnumerationAccess.class, xParaEnum.nextElement()); com.sun.star.container.XEnumerationAccess.class, xParaEnum.nextElement());
xPortionEnum = aPara.createEnumeration(); xPortionEnum = aPara.createEnumeration();
}
if ( xPortionEnum == null )
break;
while ( xPortionEnum.hasMoreElements() ) { while ( xPortionEnum.hasMoreElements() ) {
com.sun.star.beans.XPropertySet xPortionProps = com.sun.star.beans.XPropertySet xPortionProps =
UnoRuntime.queryInterface( UnoRuntime.queryInterface(
...@@ -74,9 +66,9 @@ public class CheckCrossReferences { ...@@ -74,9 +66,9 @@ public class CheckCrossReferences {
return xField; return xField;
} }
} }
xPortionEnum = null;
} }
fail("Cannot retrieve next field.");
return null; // unreachable return null; // unreachable
} }
...@@ -135,6 +127,12 @@ public class CheckCrossReferences { ...@@ -135,6 +127,12 @@ public class CheckCrossReferences {
final String FldResult4 = "1"; final String FldResult4 = "1";
final String FldResult5 = "1"; final String FldResult5 = "1";
final String FldResult6 = "A.1"; final String FldResult6 = "A.1";
final String FldResult7 = "2(a)";
final String FldResult8 = "2(b)";
final String FldResult9 = "2";
final String FldResult10 = "1(a)";
final String FldResult11 = "(b)";
final String FldResult12 = "(a)";
// variables for current field // variables for current field
com.sun.star.text.XTextField xField = null; com.sun.star.text.XTextField xField = null;
...@@ -175,6 +173,42 @@ public class CheckCrossReferences { ...@@ -175,6 +173,42 @@ public class CheckCrossReferences {
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FldResult6 ); checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FldResult6 );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FldResult4 ); checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FldResult4 );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FldResult6 ); checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FldResult6 );
xField = getNextField();
xProps = getFieldProps( xField );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FldResult7 );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FldResult12 );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FldResult7 );
xField = getNextField();
xProps = getFieldProps( xField );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FldResult8 );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FldResult11 );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FldResult8 );
xField = getNextField();
xProps = getFieldProps( xField );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FldResult9 );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FldResult9 );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FldResult9 );
xField = getNextField();
xProps = getFieldProps( xField );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FldResult4 );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FldResult4 );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FldResult4 );
xField = getNextField();
xProps = getFieldProps( xField );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FldResult10 );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FldResult12 );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FldResult10 );
xField = getNextField();
xProps = getFieldProps( xField );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER, FldResult12 );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_NO_CONTEXT, FldResult12 );
checkField( xField, xProps, com.sun.star.text.ReferenceFieldPart.NUMBER_FULL_CONTEXT, FldResult7 );
} }
// insert a certain cross-reference bookmark and a reference field to this bookmark // insert a certain cross-reference bookmark and a reference field to this bookmark
......
...@@ -730,7 +730,6 @@ OUString SwNumRule::MakeRefNumString( const SwNodeNum& rNodeNum, ...@@ -730,7 +730,6 @@ OUString SwNumRule::MakeRefNumString( const SwNodeNum& rNodeNum,
if ( rNodeNum.GetLevelInListTree() >= 0 ) if ( rNodeNum.GetLevelInListTree() >= 0 )
{ {
bool bOldHadPrefix = true; bool bOldHadPrefix = true;
bool bFirstIteration = true;
OUString sOldPrefix; OUString sOldPrefix;
const SwNodeNum* pWorkingNodeNum( &rNodeNum ); const SwNodeNum* pWorkingNodeNum( &rNodeNum );
...@@ -768,20 +767,14 @@ OUString SwNumRule::MakeRefNumString( const SwNodeNum& rNodeNum, ...@@ -768,20 +767,14 @@ OUString SwNumRule::MakeRefNumString( const SwNodeNum& rNodeNum,
aExtremities.nPrefixChars -= nStrip; aExtremities.nPrefixChars -= nStrip;
} }
if ((bFirstIteration || bOldHadPrefix) && if (bOldHadPrefix &&
aExtremities.nSuffixChars && aExtremities.nSuffixChars &&
!aExtremities.nPrefixChars !aExtremities.nPrefixChars
) )
{ {
nStrip = 0; nStrip = 0;
const sal_Int32 nLastPos = aPrevStr.getLength() - 1;
while (nStrip < aExtremities.nSuffixChars) while (nStrip < aExtremities.nSuffixChars)
{ {
const sal_Unicode cur = aPrevStr[nLastPos-nStrip];
if (!bFirstIteration && '\t' != cur && ' ' != cur)
{
break;
}
++nStrip; ++nStrip;
} }
if (nStrip) if (nStrip)
...@@ -789,7 +782,7 @@ OUString SwNumRule::MakeRefNumString( const SwNodeNum& rNodeNum, ...@@ -789,7 +782,7 @@ OUString SwNumRule::MakeRefNumString( const SwNodeNum& rNodeNum,
aPrevStr = aPrevStr.copy(0, aPrevStr.getLength()-nStrip); aPrevStr = aPrevStr.copy(0, aPrevStr.getLength()-nStrip);
} }
} }
else if (!sOldPrefix.isEmpty()) else if (!aExtremities.nSuffixChars && !bOldHadPrefix)
{ {
aRefNumStr = sOldPrefix + aRefNumStr; aRefNumStr = sOldPrefix + aRefNumStr;
} }
...@@ -799,11 +792,6 @@ OUString SwNumRule::MakeRefNumString( const SwNodeNum& rNodeNum, ...@@ -799,11 +792,6 @@ OUString SwNumRule::MakeRefNumString( const SwNodeNum& rNodeNum,
aRefNumStr = aPrevStr + aRefNumStr; aRefNumStr = aPrevStr + aRefNumStr;
} }
else if ( !aRefNumStr.isEmpty() )
{
sOldPrefix += " ";
bOldHadPrefix = true;
}
if ( bInclSuperiorNumLabels && pWorkingNodeNum->GetLevelInListTree() > 0 ) if ( bInclSuperiorNumLabels && pWorkingNodeNum->GetLevelInListTree() > 0 )
{ {
...@@ -820,7 +808,6 @@ OUString SwNumRule::MakeRefNumString( const SwNodeNum& rNodeNum, ...@@ -820,7 +808,6 @@ OUString SwNumRule::MakeRefNumString( const SwNodeNum& rNodeNum,
{ {
break; break;
} }
bFirstIteration = false;
} while ( pWorkingNodeNum && } while ( pWorkingNodeNum &&
pWorkingNodeNum->GetLevelInListTree() >= 0 && pWorkingNodeNum->GetLevelInListTree() >= 0 &&
static_cast<sal_uInt8>(pWorkingNodeNum->GetLevelInListTree()) >= nRestrictInclToThisLevel ); static_cast<sal_uInt8>(pWorkingNodeNum->GetLevelInListTree()) >= nRestrictInclToThisLevel );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment