i18npool/qa/cppunit/test_breakiterator.cxx | 94 ++++++++++++++++++----------- sw/inc/hintids.hxx | 2 sw/qa/core/swdoc-test.cxx | 20 ++++++ sw/source/core/crsr/crsrsh.cxx | 6 - sw/source/core/edit/edlingu.cxx | 18 ++--- sw/source/core/txtnode/ndtxt.cxx | 2 sw/source/core/txtnode/thints.cxx | 6 - sw/source/core/txtnode/txtedt.cxx | 10 +-- sw/source/filter/rtf/swparrtf.cxx | 2 sw/source/filter/ww8/ww8par.cxx | 8 +- sw/source/ui/fldui/fldmgr.cxx | 9 +- sw/source/ui/inc/wrtsh.hxx | 2 sw/source/ui/uiview/viewling.cxx | 9 +- sw/source/ui/wrtsh/wrtsh2.cxx | 11 +++ 14 files changed, 126 insertions(+), 73 deletions(-)
New commits: commit b0f170d7df9cff12535d2ecfd146b32b745a8ef8 Author: Caolán McNamara <caol...@redhat.com> Date: Wed Jul 18 17:00:52 2012 +0100 0xFFF9 is a better choice for CH_TXTATR_INWORD than 0x0002. a) the default properties for the code point make it not split a word it appears in into two different words in any break mode we have. Which is what we want from a CH_TXTATR_INWORD b) unicode TR#20 gives for the interlinear annotation anchor: "What to do if detected: In a proxy context or browser context, remove U+FFF9", so when we need to strip it from text to run that text through e.g. the spellchecker or word counting then there's a solid precedent for stripping it In addition I *do* want the footnote placeholder to break the word it appears in, that gives the desired wordcount and cursor travelling behaviour The BREAKWORD and other *random* selection of CH_TXTATR are still odd choices, and there's way too many of them. Change-Id: I930ff8ff806af448829bc1a1ae6cb92053e9a284 diff --git a/i18npool/qa/cppunit/test_breakiterator.cxx b/i18npool/qa/cppunit/test_breakiterator.cxx index 56f117e..b72deda 100644 --- a/i18npool/qa/cppunit/test_breakiterator.cxx +++ b/i18npool/qa/cppunit/test_breakiterator.cxx @@ -252,7 +252,7 @@ void TestBreakIterator::testWordBoundaries() } } - sal_Unicode aJoinTests[] = { 'X', 0x200C, 0x200D, 0x2060, 0xFEFF, 0xFFF9 }; + sal_Unicode aJoinTests[] = { 'X', 0x200C, 0x200D, 0x2060, 0xFEFF, 0xFFF9, 0xFFFA, 0xFFFB }; for (int mode = i18n::WordType::ANY_WORD; mode <= i18n::WordType::WORD_COUNT; ++mode) { //make sure that in all cases isBeginWord and isEndWord matches getWordBoundary diff --git a/sw/inc/hintids.hxx b/sw/inc/hintids.hxx index 9428072..9ea4bc4 100644 --- a/sw/inc/hintids.hxx +++ b/sw/inc/hintids.hxx @@ -35,7 +35,7 @@ // For SwTxtHints without end index the following char is added: #define CH_TXTATR_BREAKWORD ((sal_Unicode)0x01) -#define CH_TXTATR_INWORD ((sal_Unicode)0x02) +#define CH_TXTATR_INWORD ((sal_Unicode)0xFFF9) #define CH_TXTATR_TAB ((sal_Unicode)'\t') #define CH_TXTATR_NEWLINE ((sal_Unicode)'\n') #define CH_TXT_ATR_FIELDSTART ((sal_Unicode)0x04) diff --git a/sw/qa/core/swdoc-test.cxx b/sw/qa/core/swdoc-test.cxx index 49b0930..8c06e25 100644 --- a/sw/qa/core/swdoc-test.cxx +++ b/sw/qa/core/swdoc-test.cxx @@ -60,6 +60,7 @@ #include "swtypes.hxx" #include "fmtftn.hxx" #include "fmtrfmrk.hxx" +#include "fmtfld.hxx" SO2_DECL_REF(SwDocShell) SO2_IMPL_REF(SwDocShell) @@ -366,6 +367,25 @@ void SwDocTest::testSwScanner() pTxtNode->CountWords(aDocStat, 0, pTxtNode->Len()); CPPUNIT_ASSERT(aDocStat.nWord == 1); CPPUNIT_ASSERT_MESSAGE("refmark anchor should not be counted", aDocStat.nChar == 11); + + m_pDoc->AppendTxtNode(*aPaM.GetPoint()); + m_pDoc->InsertString(aPaM, rtl::OUString("Apple")); + + DateTime aDate(DateTime::SYSTEM); + SwPostItField aPostIt( + (SwPostItFieldType*)m_pDoc->GetSysFldType(RES_POSTITFLD), rtl::OUString("An Author"), + rtl::OUString("Some Text"), rtl::OUString("WhatEver"), aDate ); + m_pDoc->InsertPoolItem(aPaM, SwFmtFld(aPostIt), 0); + + m_pDoc->InsertString(aPaM, rtl::OUString("Apple")); + pTxtNode = aPaM.GetNode()->GetTxtNode(); + aDocStat.Reset(); + pTxtNode->CountWords(aDocStat, 0, pTxtNode->Len()); + CPPUNIT_ASSERT(aDocStat.nWord == 1); + CPPUNIT_ASSERT_MESSAGE("postit anchor should effectively not exist", aDocStat.nChar == 10); + CPPUNIT_ASSERT(pTxtNode->Len() == 11); + + aDocStat.Reset(); } //See https://bugs.freedesktop.org/show_bug.cgi?id=46757 diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx index 54d0bb9..31bd6da 100644 --- a/sw/source/core/crsr/crsrsh.cxx +++ b/sw/source/core/crsr/crsrsh.cxx @@ -3369,9 +3369,9 @@ void SwCrsrShell::GetSmartTagTerm( const Point& rPt, SwRect& rSelectRect, Pop(sal_False); // make sure the selection build later from the data below does not - // include footnotes and other "in word" character to the left and - // right in order to preserve those. Therefore count those "in - // words" in order to modify the selection accordingly. + // include "in word" character to the left and right in order to + // preserve those. Therefore count those "in words" in order to + // modify the selection accordingly. const sal_Unicode* pChar = aText.GetBuffer(); xub_StrLen nLeft = 0; while (pChar && *pChar++ == CH_TXTATR_INWORD) diff --git a/sw/source/core/edit/edlingu.cxx b/sw/source/core/edit/edlingu.cxx index a5e6f9f..ffe27d3 100644 --- a/sw/source/core/edit/edlingu.cxx +++ b/sw/source/core/edit/edlingu.cxx @@ -1049,11 +1049,10 @@ uno::Reference< XSpellAlternatives > xub_StrLen nLineEnd = GetCrsr()->GetPoint()->nContent.GetIndex(); Pop(sal_False); - // make sure the selection build later from the - // data below does not include footnotes and other - // "in word" character to the left and right in order - // to preserve those. Therefore count those "in words" - // in order to modify the selection accordingly. + // make sure the selection build later from the data below does + // not "in word" character to the left and right in order to + // preserve those. Therefore count those "in words" in order to + // modify the selection accordingly. const sal_Unicode* pChar = aText.GetBuffer(); xub_StrLen nLeft = 0; while (pChar && *pChar++ == CH_TXTATR_INWORD) @@ -1179,11 +1178,10 @@ bool SwEditShell::GetGrammarCorrection( xub_StrLen nLineEnd = GetCrsr()->GetPoint()->nContent.GetIndex(); Pop(sal_False); - // make sure the selection build later from the - // data below does not include footnotes and other - // "in word" character to the left and right in order - // to preserve those. Therefore count those "in words" - // in order to modify the selection accordingly. + // make sure the selection build later from the data below does + // not include "in word" character to the left and right in + // order to preserve those. Therefore count those "in words" in + // order to modify the selection accordingly. const sal_Unicode* pChar = aText.GetBuffer(); xub_StrLen nLeft = 0; while (pChar && *pChar++ == CH_TXTATR_INWORD) diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx index 85336a8..0f24ecf 100644 --- a/sw/source/core/txtnode/ndtxt.cxx +++ b/sw/source/core/txtnode/ndtxt.cxx @@ -1377,7 +1377,7 @@ void lcl_CopyHint( const sal_uInt16 nWhich, const SwTxtAttr * const pHt, case RES_TXTATR_META: case RES_TXTATR_METAFIELD: OSL_ENSURE(pNewHt, "copying Meta should not fail!"); - OSL_ENSURE(pDest && (CH_TXTATR_INWORD == + OSL_ENSURE(pDest && (CH_TXTATR_BREAKWORD == pDest->GetTxt().GetChar(*pNewHt->GetStart())), "missing CH_TXTATR?"); break; diff --git a/sw/source/core/txtnode/thints.cxx b/sw/source/core/txtnode/thints.cxx index fd419ef..a1afcde 100644 --- a/sw/source/core/txtnode/thints.cxx +++ b/sw/source/core/txtnode/thints.cxx @@ -3013,16 +3013,16 @@ sal_Unicode GetCharOfTxtAttr( const SwTxtAttr& rAttr ) sal_Unicode cRet = CH_TXTATR_BREAKWORD; switch ( rAttr.Which() ) { - case RES_TXTATR_FTN: case RES_TXTATR_REFMARK: case RES_TXTATR_TOXMARK: - case RES_TXTATR_META: - case RES_TXTATR_METAFIELD: cRet = CH_TXTATR_INWORD; break; case RES_TXTATR_FIELD: case RES_TXTATR_FLYCNT: + case RES_TXTATR_FTN: + case RES_TXTATR_META: + case RES_TXTATR_METAFIELD: { cRet = CH_TXTATR_BREAKWORD; diff --git a/sw/source/core/txtnode/txtedt.cxx b/sw/source/core/txtnode/txtedt.cxx index 26716a7..7da33e9 100644 --- a/sw/source/core/txtnode/txtedt.cxx +++ b/sw/source/core/txtnode/txtedt.cxx @@ -942,11 +942,11 @@ sal_uInt16 SwTxtNode::Spell(SwSpellArgs* pArgs) } else { - // make sure the selection build later from the - // data below does not include footnotes and other - // "in word" character to the left and right in order - // to preserve those. Therefore count those "in words" - // in order to modify the selection accordingly. + // make sure the selection build later from the data + // below does not include "in word" character to the + // left and right in order to preserve those. Therefore + // count those "in words" in order to modify the + // selection accordingly. const sal_Unicode* pChar = rWord.GetBuffer(); xub_StrLen nLeft = 0; while (pChar && *pChar++ == CH_TXTATR_INWORD) diff --git a/sw/source/filter/rtf/swparrtf.cxx b/sw/source/filter/rtf/swparrtf.cxx index a7ca886..8b53d6d 100644 --- a/sw/source/filter/rtf/swparrtf.cxx +++ b/sw/source/filter/rtf/swparrtf.cxx @@ -3566,7 +3566,7 @@ void SwRTFParser::ReadHeaderFooter( int nToken, SwPageDesc* pPageDesc ) pPam->GetPoint()->nContent--; nPos--; aFtnNote.SetNumStr(rtl::OUString(pTxtNd->GetTxt().GetChar(nPos))); - ((String&)pTxtNd->GetTxt()).SetChar( nPos, CH_TXTATR_INWORD ); + ((String&)pTxtNd->GetTxt()).SetChar( nPos, CH_TXTATR_BREAKWORD ); bDelFirstChar = sal_True; } diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx index 9920890..6acf843 100644 --- a/sw/source/filter/ww8/ww8par.cxx +++ b/sw/source/filter/ww8/ww8par.cxx @@ -3159,7 +3159,7 @@ bool SwWW8ImplReader::ReadChar(long nPosCp, long nCpOfs) break; case 0x2: // Auto-Footnote-Number, should be replaced by SwWW8ImplReader::End_Ftn later if (!maFtnStack.empty()) - cInsert = CH_TXTATR_INWORD; + cInsert = 0x2; break; #if OSL_DEBUG_LEVEL > 1 default: diff --git a/sw/source/ui/uiview/viewling.cxx b/sw/source/ui/uiview/viewling.cxx index 1722998..ae8c234 100644 --- a/sw/source/ui/uiview/viewling.cxx +++ b/sw/source/ui/uiview/viewling.cxx @@ -533,11 +533,10 @@ void SwView::InsertThesaurusSynonym( const String &rSynonmText, const String &rL pWrtShell->SelWrd(); - // make sure the selection build later from the - // data below does not include footnotes and other - // "in word" character to the left and right in order - // to preserve those. Therefore count those "in words" - // in order to modify the selection accordingly. + // make sure the selection build later from the data below does not + // include "in word" character to the left and right in order to + // preserve those. Therefore count those "in words" in order to modify + // the selection accordingly. const sal_Unicode* pChar = rLookUpText.GetBuffer(); xub_StrLen nLeft = 0; while (pChar && *pChar++ == CH_TXTATR_INWORD) commit 165640076df65971eb01f887a3c285cd6eb61d94 Author: Caolán McNamara <caol...@redhat.com> Date: Wed Jul 18 10:20:32 2012 +0100 Related: fdo#38244 include ODF_COMMENTRANGE in annotation undo/redo make sure that insert->comment and undo/redo includes the insertion of the dummy odfcomment from fdo#38244 Change-Id: Ib46afb194462a3bbfbe3b8e228ad04e522e64535 diff --git a/sw/source/ui/fldui/fldmgr.cxx b/sw/source/ui/fldui/fldmgr.cxx index e465e9f..ed483c1 100644 --- a/sw/source/ui/fldui/fldmgr.cxx +++ b/sw/source/ui/fldui/fldmgr.cxx @@ -59,7 +59,6 @@ #include <svl/zforlist.hxx> #include <svl/zformat.hxx> #include <vcl/mnemonic.hxx> -#include <xmloff/odffields.hxx> #include <view.hxx> #include <wrtsh.hxx> // active window #include <doc.hxx> // active window @@ -1379,14 +1378,14 @@ sal_Bool SwFldMgr::InsertFld( const SwInsertFld_Data& rData, SwPaM *pPam ) // insert pCurShell->StartAllAction(); + SwPaM *pCommentRange = NULL; if (pPam && *pPam->GetPoint() != *pPam->GetMark() && rData.nTypeId == TYP_POSTITFLD) { - // If an annotation field is inserted, take care of the relevant fieldmark. - IDocumentMarkAccess* pMarksAccess = pCurShell->GetDoc()->getIDocumentMarkAccess(); - pMarksAccess->makeFieldBookmark(*pPam, OUString(), ODF_COMMENTRANGE); + // If an annotation field will be inserted, pass through the affected range + pCommentRange = pPam; } - pCurShell->Insert(*pFld); + pCurShell->Insert(*pFld, pCommentRange); if(bExp && bEvalExp) pCurShell->UpdateExpFlds(sal_True); diff --git a/sw/source/ui/inc/wrtsh.hxx b/sw/source/ui/inc/wrtsh.hxx index 59431b4..f2e1e3c 100644 --- a/sw/source/ui/inc/wrtsh.hxx +++ b/sw/source/ui/inc/wrtsh.hxx @@ -296,7 +296,7 @@ typedef sal_Bool (SwWrtShell:: *FNSimpleMove)(); int IntelligentCut(int nSelectionType, sal_Bool bCut = sal_True); // edit - void Insert(SwField &); + void Insert(SwField &, SwPaM *pCommentRange = NULL); void Insert(const String &); // graphic void Insert( const String &rPath, const String &rFilter, diff --git a/sw/source/ui/wrtsh/wrtsh2.cxx b/sw/source/ui/wrtsh/wrtsh2.cxx index 16196cc..f6dda8c 100644 --- a/sw/source/ui/wrtsh/wrtsh2.cxx +++ b/sw/source/ui/wrtsh/wrtsh2.cxx @@ -72,7 +72,9 @@ #include <com/sun/star/document/XDocumentProperties.hpp> #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> -void SwWrtShell::Insert(SwField &rFld) +#include <xmloff/odffields.hxx> + +void SwWrtShell::Insert(SwField &rFld, SwPaM *pCommentRange) { ResetCursorStack(); if(!CanInsert()) @@ -84,6 +86,13 @@ void SwWrtShell::Insert(SwField &rFld) StartUndo(UNDO_INSERT, &aRewriter); + if (pCommentRange && GetDoc()) + { + // If an annotation field is inserted, take care of the relevant fieldmark. + IDocumentMarkAccess* pMarksAccess = GetDoc()->getIDocumentMarkAccess(); + pMarksAccess->makeFieldBookmark(*pCommentRange, OUString(), ODF_COMMENTRANGE); + } + bool bDeleted = false; if( HasSelection() ) { commit 8a9244afe9954e0f8e801a41d83e3c2084c620de Author: Caolán McNamara <caol...@redhat.com> Date: Wed Jul 18 08:49:33 2012 +0100 expand cInsert to unicode at compile time Change-Id: I74a7f905c69912d527dafc2212bf37f97bb78dc4 diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx index 246d151..9920890 100644 --- a/sw/source/filter/ww8/ww8par.cxx +++ b/sw/source/filter/ww8/ww8par.cxx @@ -3019,7 +3019,7 @@ bool SwWW8ImplReader::ReadChar(long nPosCp, long nCpOfs) nWCharVal = nBCode; } - sal_Char cInsert = '\x0'; + sal_Unicode cInsert = '\x0'; bool bRet = false; //xushanchuan add for issue106569 if ( 0xc != nWCharVal ) @@ -3170,7 +3170,7 @@ bool SwWW8ImplReader::ReadChar(long nPosCp, long nCpOfs) if( '\x0' != cInsert ) { - rtl::OUString sInsert(&cInsert, 1, RTL_TEXTENCODING_MS_1252); + rtl::OUString sInsert(cInsert); emulateMSWordAddTextToParagraph(sInsert); } if (!maApos.back()) //a para end in apo doesn't count commit 1a0d0762ea6d89ee8138b536140b84d65603d04f Author: Caolán McNamara <caol...@redhat.com> Date: Tue Jul 17 22:36:36 2012 +0100 beef up the join and break tests Change-Id: Ia34c2f18cfa84447578604ff27a9145d17bf354a diff --git a/i18npool/qa/cppunit/test_breakiterator.cxx b/i18npool/qa/cppunit/test_breakiterator.cxx index 28f46b1..56f117e 100644 --- a/i18npool/qa/cppunit/test_breakiterator.cxx +++ b/i18npool/qa/cppunit/test_breakiterator.cxx @@ -222,16 +222,14 @@ void TestBreakIterator::testWordBoundaries() } //See https://bugs.freedesktop.org/show_bug.cgi?id=49629 + sal_Unicode aBreakTests[] = { ' ', 1, 2, 3, 4, 5, 6, 7, 0x91, 0x92, 0x200B, 0xE8FF, 0xF8FF }; for (int mode = i18n::WordType::ANY_WORD; mode <= i18n::WordType::WORD_COUNT; ++mode) { //make sure that in all cases isBeginWord and isEndWord matches getWordBoundary - // - //test "Word", then "Word\x01" then "Word\x02" - for (sal_Unicode i = 0; i < 3; ++i) + for (size_t i = 0; i < SAL_N_ELEMENTS(aBreakTests); ++i) { ::rtl::OUString aTest("Word"); - if (i > 0) - aTest += rtl::OUString(i) + rtl::OUString("Word"); + aTest += rtl::OUString(aBreakTests[i]) + rtl::OUString("Word"); aBounds = m_xBreak->getWordBoundary(aTest, 0, aLocale, mode, true); switch (mode) { @@ -254,6 +252,35 @@ void TestBreakIterator::testWordBoundaries() } } + sal_Unicode aJoinTests[] = { 'X', 0x200C, 0x200D, 0x2060, 0xFEFF, 0xFFF9 }; + for (int mode = i18n::WordType::ANY_WORD; mode <= i18n::WordType::WORD_COUNT; ++mode) + { + //make sure that in all cases isBeginWord and isEndWord matches getWordBoundary + for (size_t i = 0; i < SAL_N_ELEMENTS(aJoinTests); ++i) + { + ::rtl::OUString aTest("Word"); + aTest += rtl::OUString(aJoinTests[i]) + rtl::OUString("Word"); + aBounds = m_xBreak->getWordBoundary(aTest, 0, aLocale, mode, true); + switch (mode) + { + case i18n::WordType::ANY_WORD: + CPPUNIT_ASSERT(aBounds.startPos == 0 && aBounds.endPos == 9); + break; + case i18n::WordType::ANYWORD_IGNOREWHITESPACES: + CPPUNIT_ASSERT(aBounds.startPos == 0 && aBounds.endPos == 9); + break; + case i18n::WordType::DICTIONARY_WORD: + CPPUNIT_ASSERT(aBounds.startPos == 0 && aBounds.endPos == 9); + break; + case i18n::WordType::WORD_COUNT: + CPPUNIT_ASSERT(aBounds.startPos == 0 && aBounds.endPos == 9); + break; + } + + CPPUNIT_ASSERT(m_xBreak->isBeginWord(aTest, aBounds.startPos, aLocale, mode)); + CPPUNIT_ASSERT(m_xBreak->isEndWord(aTest, aBounds.endPos, aLocale, mode)); + } + } } //See http://qa.openoffice.org/issues/show_bug.cgi?id=111152 commit b4f077af546e5e54ed6f12edaae88b69ac052bdf Author: Caolán McNamara <caol...@redhat.com> Date: Tue Jul 17 21:26:56 2012 +0100 move test to right category Change-Id: If2cb8da2a24331cc01fed85750747fff3d2fc8e0 diff --git a/i18npool/qa/cppunit/test_breakiterator.cxx b/i18npool/qa/cppunit/test_breakiterator.cxx index 3ed44fc..28f46b1 100644 --- a/i18npool/qa/cppunit/test_breakiterator.cxx +++ b/i18npool/qa/cppunit/test_breakiterator.cxx @@ -125,39 +125,6 @@ void TestBreakIterator::testLineBreaking() CPPUNIT_ASSERT_MESSAGE("Expected a break at the the start of the word", aResult.breakIndex == aWord.getLength()+1); } } - - //See https://bugs.freedesktop.org/show_bug.cgi?id=49629 - for (int mode = i18n::WordType::ANY_WORD; mode <= i18n::WordType::WORD_COUNT; ++mode) - { - //make sure that in all cases isBeginWord and isEndWord matches getWordBoundary - // - //test "Word", then "Word\x01" then "Word\x02" - for (sal_Unicode i = 0; i < 3; ++i) - { - ::rtl::OUString aTest("Word"); - if (i > 0) - aTest += rtl::OUString(i) + rtl::OUString("Word"); - i18n::Boundary aBounds = m_xBreak->getWordBoundary(aTest, 0, aLocale, mode, true); - switch (mode) - { - case i18n::WordType::ANY_WORD: - CPPUNIT_ASSERT(aBounds.startPos == 0 && aBounds.endPos == 4); - break; - case i18n::WordType::ANYWORD_IGNOREWHITESPACES: - CPPUNIT_ASSERT(aBounds.startPos == 0 && aBounds.endPos == 4); - break; - case i18n::WordType::DICTIONARY_WORD: - CPPUNIT_ASSERT(aBounds.startPos == 0 && aBounds.endPos == 4); - break; - case i18n::WordType::WORD_COUNT: - CPPUNIT_ASSERT(aBounds.startPos == 0 && aBounds.endPos == 4); - break; - } - - CPPUNIT_ASSERT(m_xBreak->isBeginWord(aTest, aBounds.startPos, aLocale, mode)); - CPPUNIT_ASSERT(m_xBreak->isEndWord(aTest, aBounds.endPos, aLocale, mode)); - } - } } //See https://bugs.freedesktop.org/show_bug.cgi?id=49629 @@ -253,6 +220,40 @@ void TestBreakIterator::testWordBoundaries() aBounds = m_xBreak->getWordBoundary(aTest, 90, aLocale, i18n::WordType::DICTIONARY_WORD, false); CPPUNIT_ASSERT(aBounds.startPos == 88 && aBounds.endPos == 92); } + + //See https://bugs.freedesktop.org/show_bug.cgi?id=49629 + for (int mode = i18n::WordType::ANY_WORD; mode <= i18n::WordType::WORD_COUNT; ++mode) + { + //make sure that in all cases isBeginWord and isEndWord matches getWordBoundary + // + //test "Word", then "Word\x01" then "Word\x02" + for (sal_Unicode i = 0; i < 3; ++i) + { + ::rtl::OUString aTest("Word"); + if (i > 0) + aTest += rtl::OUString(i) + rtl::OUString("Word"); + aBounds = m_xBreak->getWordBoundary(aTest, 0, aLocale, mode, true); + switch (mode) + { + case i18n::WordType::ANY_WORD: + CPPUNIT_ASSERT(aBounds.startPos == 0 && aBounds.endPos == 4); + break; + case i18n::WordType::ANYWORD_IGNOREWHITESPACES: + CPPUNIT_ASSERT(aBounds.startPos == 0 && aBounds.endPos == 4); + break; + case i18n::WordType::DICTIONARY_WORD: + CPPUNIT_ASSERT(aBounds.startPos == 0 && aBounds.endPos == 4); + break; + case i18n::WordType::WORD_COUNT: + CPPUNIT_ASSERT(aBounds.startPos == 0 && aBounds.endPos == 4); + break; + } + + CPPUNIT_ASSERT(m_xBreak->isBeginWord(aTest, aBounds.startPos, aLocale, mode)); + CPPUNIT_ASSERT(m_xBreak->isEndWord(aTest, aBounds.endPos, aLocale, mode)); + } + } + } //See http://qa.openoffice.org/issues/show_bug.cgi?id=111152 commit f1eab266dc8036267e163cd897df95dfd4d20df5 Author: Caolán McNamara <caol...@redhat.com> Date: Tue Jul 17 20:48:39 2012 +0100 translate comment, use CH_TXTATR_INWORD Change-Id: I68943de82574897ae787035f35439747510bf88d diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx index a710f7a..246d151 100644 --- a/sw/source/filter/ww8/ww8par.cxx +++ b/sw/source/filter/ww8/ww8par.cxx @@ -3157,10 +3157,10 @@ bool SwWW8ImplReader::ReadChar(long nPosCp, long nCpOfs) case 0x5: // Annotation reference case 0x13: break; - case 0x2: + case 0x2: // Auto-Footnote-Number, should be replaced by SwWW8ImplReader::End_Ftn later if (!maFtnStack.empty()) - cInsert = 0x2; - break; // Auto-Fussnoten-Nummer + cInsert = CH_TXTATR_INWORD; + break; #if OSL_DEBUG_LEVEL > 1 default: ::std::clog << "<unknownValue val=\"" << nWCharVal << "\">" << ::std::endl;
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits