[Libreoffice-commits] core.git: Branch 'libreoffice-5-2' - sw/inc sw/source
Michael Stahl
mstahl at redhat.com
Tue Jun 7 07:21:34 UTC 2016
sw/inc/doc.hxx | 2 +-
sw/inc/fesh.hxx | 3 ++-
sw/source/core/docnode/ndtbl.cxx | 7 ++++++-
sw/source/core/frmedt/fetab.cxx | 13 ++++++++-----
sw/source/core/inc/UndoTable.hxx | 1 +
sw/source/core/undo/untbl.cxx | 13 ++++++++++---
6 files changed, 28 insertions(+), 11 deletions(-)
New commits:
commit 212ebeb225fae10db4dbb4c4a1a4f3fd2d100f42
Author: Michael Stahl <mstahl at redhat.com>
Date: Mon May 30 23:01:04 2016 +0200
tdf#98226: fix undo of table AutoFormat
The new call to SwTable::SetTableStyleName() was not recorded in
SwUndoTableAutoFormat and hence persisted even after Undo.
(regression from 73f4a06c0bce51c7c8b9ae9adfdc7ffac27d06b4)
Change-Id: Ia7f769dafa62f02ff8e4b0596b48266190c7a69b
(cherry picked from commit 7b042d2865c5bb2c2dde1dd47de124bc0df61ae8)
Reviewed-on: https://gerrit.libreoffice.org/25983
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx
index afed50a..e9b3be5 100644
--- a/sw/inc/doc.hxx
+++ b/sw/inc/doc.hxx
@@ -1246,7 +1246,7 @@ public:
/// AutoFormat for table/table selection.
/// @param bResetDirect Reset direct formatting that might be applied to the cells.
- bool SetTableAutoFormat(const SwSelBoxes& rBoxes, const SwTableAutoFormat& rNew, bool bResetDirect = false);
+ bool SetTableAutoFormat(const SwSelBoxes& rBoxes, const SwTableAutoFormat& rNew, bool bResetDirect = false, bool isSetStyleName = false);
// Query attributes.
bool GetTableAutoFormat( const SwSelBoxes& rBoxes, SwTableAutoFormat& rGet );
diff --git a/sw/inc/fesh.hxx b/sw/inc/fesh.hxx
index 52e7719..ac85192 100644
--- a/sw/inc/fesh.hxx
+++ b/sw/inc/fesh.hxx
@@ -727,7 +727,8 @@ public:
/// Update the direct formatting according to the current table style.
/// @param pTableNode Table node to update. When nullptr, current cursor position is used.
/// @param bResetDirect Reset direct formatting that might be applied to the cells.
- bool UpdateTableStyleFormatting(SwTableNode *pTableNode = nullptr, bool bResetDirect = false);
+ /// @param pStyleName new style to apply
+ bool UpdateTableStyleFormatting(SwTableNode *pTableNode = nullptr, bool bResetDirect = false, OUString const* pStyleName = nullptr);
bool GetTableAutoFormat( SwTableAutoFormat& rGet );
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
index c01455a..e120801 100644
--- a/sw/source/core/docnode/ndtbl.cxx
+++ b/sw/source/core/docnode/ndtbl.cxx
@@ -3741,7 +3741,7 @@ static bool lcl_SetAFormatBox(FndBox_ & rBox, SetAFormatTabPara *pSetPara, bool
return true;
}
-bool SwDoc::SetTableAutoFormat(const SwSelBoxes& rBoxes, const SwTableAutoFormat& rNew, bool bResetDirect)
+bool SwDoc::SetTableAutoFormat(const SwSelBoxes& rBoxes, const SwTableAutoFormat& rNew, bool bResetDirect, bool const isSetStyleName)
{
OSL_ENSURE( !rBoxes.empty(), "No valid Box list" );
SwTableNode* pTableNd = const_cast<SwTableNode*>(rBoxes[0]->GetSttNd()->FindTableNode());
@@ -3780,6 +3780,11 @@ bool SwDoc::SetTableAutoFormat(const SwSelBoxes& rBoxes, const SwTableAutoFormat
GetIDocumentUndoRedo().DoUndo(false);
}
+ if (isSetStyleName)
+ { // tdf#98226 do this here where undo can record it
+ pTableNd->GetTable().SetTableStyleName(rNew.GetName());
+ }
+
rNew.RestoreTableProperties(table);
SetAFormatTabPara aPara( rNew );
diff --git a/sw/source/core/frmedt/fetab.cxx b/sw/source/core/frmedt/fetab.cxx
index d0fd94d..fc6108b 100644
--- a/sw/source/core/frmedt/fetab.cxx
+++ b/sw/source/core/frmedt/fetab.cxx
@@ -1186,11 +1186,11 @@ bool SwFEShell::SetTableStyle(const SwTableAutoFormat& rStyle)
return false;
// set the name & update
- pTableNode->GetTable().SetTableStyleName(rStyle.GetName());
- return UpdateTableStyleFormatting(pTableNode);
+ return UpdateTableStyleFormatting(pTableNode, false, &rStyle.GetName());
}
-bool SwFEShell::UpdateTableStyleFormatting(SwTableNode *pTableNode, bool bResetDirect)
+bool SwFEShell::UpdateTableStyleFormatting(SwTableNode *pTableNode,
+ bool bResetDirect, OUString const*const pStyleName)
{
if (!pTableNode)
{
@@ -1199,7 +1199,9 @@ bool SwFEShell::UpdateTableStyleFormatting(SwTableNode *pTableNode, bool bResetD
return false;
}
- OUString aTableStyleName(pTableNode->GetTable().GetTableStyleName());
+ OUString const aTableStyleName((pStyleName)
+ ? *pStyleName
+ : pTableNode->GetTable().GetTableStyleName());
SwTableAutoFormat* pTableStyle = GetDoc()->GetTableStyles().FindAutoFormat(aTableStyleName);
if (!pTableStyle)
return false;
@@ -1227,7 +1229,8 @@ bool SwFEShell::UpdateTableStyleFormatting(SwTableNode *pTableNode, bool bResetD
{
SET_CURR_SHELL( this );
StartAllAction();
- bRet = GetDoc()->SetTableAutoFormat(aBoxes, *pTableStyle, bResetDirect);
+ bRet = GetDoc()->SetTableAutoFormat(
+ aBoxes, *pTableStyle, bResetDirect, pStyleName != nullptr);
DELETEZ( pLastCols );
DELETEZ( pLastRows );
EndAllActionAndCall();
diff --git a/sw/source/core/inc/UndoTable.hxx b/sw/source/core/inc/UndoTable.hxx
index 427e489..7266ca9 100644
--- a/sw/source/core/inc/UndoTable.hxx
+++ b/sw/source/core/inc/UndoTable.hxx
@@ -142,6 +142,7 @@ class SwUndoTableNumFormat;
class SwUndoTableAutoFormat : public SwUndo
{
+ OUString m_TableStyleName;
sal_uLong nSttNode;
SaveTable* pSaveTable;
std::vector< std::shared_ptr<SwUndoTableNumFormat> > m_Undos;
diff --git a/sw/source/core/undo/untbl.cxx b/sw/source/core/undo/untbl.cxx
index c6c1e69..e270b8c4 100644
--- a/sw/source/core/undo/untbl.cxx
+++ b/sw/source/core/undo/untbl.cxx
@@ -1409,9 +1409,10 @@ void SwUndoAttrTable::RedoImpl(::sw::UndoRedoContext & rContext)
// UndoObject for AutoFormat on Table
SwUndoTableAutoFormat::SwUndoTableAutoFormat( const SwTableNode& rTableNd,
const SwTableAutoFormat& rAFormat )
- : SwUndo( UNDO_TABLE_AUTOFMT ),
- nSttNode( rTableNd.GetIndex() ),
- bSaveContentAttr( false )
+ : SwUndo( UNDO_TABLE_AUTOFMT )
+ , m_TableStyleName(rTableNd.GetTable().GetTableStyleName())
+ , nSttNode( rTableNd.GetIndex() )
+ , bSaveContentAttr( false )
, m_nRepeatHeading(rTableNd.GetTable().GetRowsToRepeat())
{
pSaveTable = new SaveTable( rTableNd.GetTable() );
@@ -1444,6 +1445,12 @@ SwUndoTableAutoFormat::UndoRedo(bool const bUndo, ::sw::UndoRedoContext & rConte
OSL_ENSURE( pTableNd, "no TableNode" );
SwTable& table = pTableNd->GetTable();
+ if (table.GetTableStyleName() != m_TableStyleName)
+ {
+ OUString const temp(table.GetTableStyleName());
+ table.SetTableStyleName(m_TableStyleName);
+ m_TableStyleName = temp;
+ }
SaveTable* pOrig = new SaveTable( table );
// than go also over the ContentNodes of the EndBoxes and collect
// all paragraph attributes
More information about the Libreoffice-commits
mailing list