summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-04-03 12:39:07 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2015-04-08 14:38:15 +0000
commit6c51365d7062d5aaa5b6e0f6e7c7fbfd2a9ebda6 (patch)
tree86eacae9827bcfd9fba36eab153a95da2f5ff4a5
parentfd083e392651a2c381ab1fe8b9a1f2a1ec534354 (diff)
Resolves: tdf#87548 don't create a new list for each multiselection portion
create one list and share it among all the subsections possibly a regression from/triggered by author Oliver-Rainer Wittmann <orw@apache.org> 2014-03-18 14:33:39 (GMT) Resolves: #i124371# When changing the numbering or bullet styling... of a set of paragraph which have more than one different List Style applied create a new List Style and put the paragraphs into a new list. (cherry picked from commit 0087ca89e3905009ed947c651f3dc70f3d61ea93) (cherry picked from commit db41e274747e6f1d3eee2bd5efb3321cfcbd6b75) Conflicts: sw/source/core/doc/docnum.cxx Change-Id: I9416b97d6afe323ac99150fdcc23f71ecea98a58 Reviewed-on: https://gerrit.libreoffice.org/15139 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r--sw/inc/doc.hxx8
-rw-r--r--sw/source/core/doc/docnum.cxx8
-rw-r--r--sw/source/core/edit/ednumber.cxx18
3 files changed, 24 insertions, 10 deletions
diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx
index f3cc3ba29b33..dc0bc6b3fe93 100644
--- a/sw/inc/doc.hxx
+++ b/sw/inc/doc.hxx
@@ -1438,10 +1438,12 @@ public:
Parameters <bCreateNewList> and <sContinuedListId>:
<bCreateNewList> indicates, if a new list is created by applying the given list style.
If <bCreateNewList> equals false, <sContinuedListId> may contain the
- list Id of a list, which has to be continued by applying the given list style */
- void SetNumRule( const SwPaM&,
+ list Id of a list, which has to be continued by applying the given list style
+
+ Returns the set ListId if bSetItem is true */
+ OUString SetNumRule( const SwPaM&,
const SwNumRule&,
- const bool bCreateNewList,
+ bool bCreateNewList,
const OUString& sContinuedListId = OUString(),
bool bSetItem = true,
const bool bResetIndentAttrs = false );
diff --git a/sw/source/core/doc/docnum.cxx b/sw/source/core/doc/docnum.cxx
index bf7b4f2ccb7e..e109b40c8bff 100644
--- a/sw/source/core/doc/docnum.cxx
+++ b/sw/source/core/doc/docnum.cxx
@@ -823,13 +823,15 @@ static void lcl_ChgNumRule( SwDoc& rDoc, const SwNumRule& rRule )
rDoc.UpdateNumRule();
}
-void SwDoc::SetNumRule( const SwPaM& rPam,
+OUString SwDoc::SetNumRule( const SwPaM& rPam,
const SwNumRule& rRule,
const bool bCreateNewList,
const OUString& sContinuedListId,
bool bSetItem,
const bool bResetIndentAttrs )
{
+ OUString sListId;
+
SwUndoInsNum * pUndo = NULL;
if (GetIDocumentUndoRedo().DoesUndo())
{
@@ -863,7 +865,6 @@ void SwDoc::SetNumRule( const SwPaM& rPam,
if ( bSetItem )
{
- OUString sListId;
if ( bCreateNewList )
{
if ( bNewNumRuleCreated )
@@ -942,8 +943,9 @@ void SwDoc::SetNumRule( const SwPaM& rPam,
}
SetModified();
-}
+ return sListId;
+}
void SwDoc::SetCounted(const SwPaM & rPam, bool bCounted)
{
diff --git a/sw/source/core/edit/ednumber.cxx b/sw/source/core/edit/ednumber.cxx
index c86790175399..e5e9d3e16321 100644
--- a/sw/source/core/edit/ednumber.cxx
+++ b/sw/source/core/edit/ednumber.cxx
@@ -734,8 +734,8 @@ const SwNumRule* SwEditShell::GetNumRuleAtCurrentSelection() const
}
void SwEditShell::SetCurNumRule( const SwNumRule& rRule,
- const bool bCreateNewList,
- const OUString& sContinuedListId,
+ bool bCreateNewList,
+ const OUString& rContinuedListId,
const bool bResetIndentAttrs )
{
StartAllAction();
@@ -747,19 +747,29 @@ void SwEditShell::SetCurNumRule( const SwNumRule& rRule,
{
SwPamRanges aRangeArr( *pCrsr );
SwPaM aPam( *pCrsr->GetPoint() );
+ OUString sContinuedListId(rContinuedListId);
for( sal_uInt16 n = 0; n < aRangeArr.Count(); ++n )
{
aRangeArr.SetPam( n, aPam );
- GetDoc()->SetNumRule( aPam, rRule,
+ OUString sListId = GetDoc()->SetNumRule( aPam, rRule,
bCreateNewList, sContinuedListId,
true, bResetIndentAttrs );
+
+ //tdf#87548 On creating a new list for a multi-selection only
+ //create a single new list for the multi-selection, not one per selection
+ if (bCreateNewList)
+ {
+ sContinuedListId = sListId;
+ bCreateNewList = false;
+ }
+
GetDoc()->SetCounted( aPam, true );
}
}
else
{
GetDoc()->SetNumRule( *pCrsr, rRule,
- bCreateNewList, sContinuedListId,
+ bCreateNewList, rContinuedListId,
true, bResetIndentAttrs );
GetDoc()->SetCounted( *pCrsr, true );
}