[Libreoffice-commits] core.git: Branch 'feature/table-style' - 8 commits - sw/inc sw/source
Alex Ivan
alexnivan at yahoo.com
Thu Aug 29 09:57:24 PDT 2013
sw/inc/doc.hxx | 3 +++
sw/source/core/doc/docnew.cxx | 5 +++++
sw/source/core/doc/swtblfmt.cxx | 3 +++
sw/source/core/doc/tblafmt.cxx | 9 +++------
sw/source/core/doc/tblrwcl.cxx | 8 +++++++-
sw/source/core/docnode/ndcopy.cxx | 9 ++++++++-
sw/source/core/docnode/ndtbl.cxx | 14 ++++++++++++++
sw/source/core/undo/untbl.cxx | 13 +++++++++++--
sw/source/ui/table/tautofmt.cxx | 4 +---
9 files changed, 55 insertions(+), 13 deletions(-)
New commits:
commit 452435c85c5fbe1e62ec81bc39deccb646a78bf6
Author: Alex Ivan <alexnivan at yahoo.com>
Date: Thu Aug 29 19:02:57 2013 +0300
Reapply table style after merging tables
The undo part was inadvertedly already fixed since it used the
same mechanics as some of the previously fixed undo actions.
Change-Id: I75380513945a6b84fa8f18ab77c756b4e8c358c1
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
index 8133065..d67ca3a 100644
--- a/sw/source/core/docnode/ndtbl.cxx
+++ b/sw/source/core/docnode/ndtbl.cxx
@@ -3390,6 +3390,9 @@ sal_Bool SwDoc::MergeTable( const SwPosition& rPos, sal_Bool bWithPrev, sal_uInt
if( !pDelTblNd )
return sal_False;
+ SwTableFmt* pStyle = (SwTableFmt*)pTblNd->GetTable().GetTableFmt()->GetRegisteredIn();
+ SwTable& rTable = (bWithPrev ? pDelTblNd : pTblNd)->GetTable();
+
if( pTblNd->GetTable().ISA( SwDDETable ) ||
pDelTblNd->GetTable().ISA( SwDDETable ))
return sal_False;
@@ -3427,6 +3430,8 @@ sal_Bool SwDoc::MergeTable( const SwPosition& rPos, sal_Bool bWithPrev, sal_uInt
}
if( bRet )
{
+ SwTableFmt::AssignFormatParents( pStyle, rTable );
+
SetModified();
SetFieldsDirty( true, NULL, 0 );
}
commit 758c691d749b3e2770a4b7a14579e5bbfde5114a
Author: Alex Ivan <alexnivan at yahoo.com>
Date: Thu Aug 29 18:15:44 2013 +0300
Reapply table style after spliting table and undo
Change-Id: I32fea8b4679809070a47368de65d57ce5df7ed9d
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
index e6d5821..8133065 100644
--- a/sw/source/core/docnode/ndtbl.cxx
+++ b/sw/source/core/docnode/ndtbl.cxx
@@ -3153,6 +3153,9 @@ sal_Bool SwDoc::SplitTable( const SwPosition& rPos, sal_uInt16 eHdlnMode,
// TL_CHART2: need to inform chart of probably changed cell names
UpdateCharts( rTbl.GetFrmFmt()->GetName() );
+ SwTableFmt::AssignFormatParents( (SwTableFmt*)rTbl.GetTableFmt()->GetRegisteredIn(), rTbl );
+ SwTableFmt::AssignFormatParents( (SwTableFmt*)rTbl.GetTableFmt()->GetRegisteredIn(), pNew->GetTable() );
+
SetFieldsDirty( true, NULL, 0 );
return 0 != pNew;
diff --git a/sw/source/core/undo/untbl.cxx b/sw/source/core/undo/untbl.cxx
index 661ed33..5fa3d2a 100644
--- a/sw/source/core/undo/untbl.cxx
+++ b/sw/source/core/undo/untbl.cxx
@@ -2927,6 +2927,12 @@ void SwUndoSplitTbl::UndoImpl(::sw::UndoRedoContext & rContext)
pTblNd->GetTable().RestoreRowSpan( *mpSaveRowSpan );
}
ClearFEShellTabCols();
+
+ pTblNd = rIdx.GetNode().FindTableNode();
+ if( pTblNd )
+ SwTableFmt::AssignFormatParents( (SwTableFmt*)pTblNd->GetTable().
+ GetTableFmt()->GetRegisteredIn(),
+ pTblNd->GetTable() );
}
void SwUndoSplitTbl::RedoImpl(::sw::UndoRedoContext & rContext)
commit 49d18eb95929b4d0fadfaa5ba553049922bd4fb4
Author: Alex Ivan <alexnivan at yahoo.com>
Date: Thu Aug 29 15:26:02 2013 +0300
Reapply table styles after merging/spliting cells and corresponding undos
Change-Id: I0a0f1cd1ec05487230af568ab3350de04d98bfb6
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
index 0a09ccd..e6d5821 100644
--- a/sw/source/core/docnode/ndtbl.cxx
+++ b/sw/source/core/docnode/ndtbl.cxx
@@ -2112,6 +2112,8 @@ sal_Bool SwDoc::SplitTbl( const SwSelBoxes& rBoxes, sal_Bool bVert, sal_uInt16 n
delete pUndo;
}
+ SwTableFmt::AssignFormatParents( (SwTableFmt*)rTbl.GetTableFmt()->GetRegisteredIn(), rTbl );
+
return bRet;
}
@@ -2217,6 +2219,10 @@ sal_uInt16 SwDoc::MergeTbl( SwPaM& rPam )
::ClearFEShellTabCols();
SetRedlineMode_intern( eOld );
}
+
+ SwTableFmt::AssignFormatParents( (SwTableFmt*)rTable.GetTableFmt()->GetRegisteredIn(),
+ rTable );
+
GetIDocumentUndoRedo().EndUndo( UNDO_TABLE_MERGE, NULL );
return nRet;
}
diff --git a/sw/source/core/undo/untbl.cxx b/sw/source/core/undo/untbl.cxx
index afba0c2..661ed33 100644
--- a/sw/source/core/undo/untbl.cxx
+++ b/sw/source/core/undo/untbl.cxx
@@ -2076,6 +2076,9 @@ CHECKTABLE(pTblNd->GetTable())
CHECKTABLE(pTblNd->GetTable())
ClearFEShellTabCols();
+
+ SwTableFmt::AssignFormatParents( (SwTableFmt*)pTblNd->GetTable().GetTableFmt()->GetRegisteredIn(),
+ pTblNd->GetTable() );
}
void SwUndoTblMerge::RedoImpl(::sw::UndoRedoContext & rContext)
commit 453ddd7267b539e755cdc63eb8cbd6fa24ec4998
Author: Alex Ivan <alexnivan at yahoo.com>
Date: Wed Aug 28 18:52:39 2013 +0300
Fix copy-pasting table with no table style
Change-Id: I11eee9b3a7762dd2500129994e4da61b5b149520
diff --git a/sw/source/core/docnode/ndcopy.cxx b/sw/source/core/docnode/ndcopy.cxx
index 692d23e..370807d 100644
--- a/sw/source/core/docnode/ndcopy.cxx
+++ b/sw/source/core/docnode/ndcopy.cxx
@@ -429,11 +429,11 @@ SwTableNode* SwTableNode::MakeCopy( SwDoc* pDoc, const SwNodeIndex& rIdx ) const
}
SwTableFmt* pStyle = (SwTableFmt*)GetTable().GetTableFmt()->GetRegisteredIn();
- SwTableFmt* pActualStyle = pDoc->FindTblFmtByName( pStyle->GetName(), sal_True );
+ SwTableFmt* pActualStyle = pStyle ? pDoc->FindTblFmtByName( pStyle->GetName() , sal_True ) : 0;
if( !pActualStyle )
pActualStyle = pStyle;
- SwFrmFmt* pTblFmt = pDoc->MakeTblFrmFmt( sTblName, pStyle ? pStyle : pDoc->GetDfltFrmFmt() );
+ SwFrmFmt* pTblFmt = pDoc->MakeTblFrmFmt( sTblName, pActualStyle ? pActualStyle : pDoc->GetDfltFrmFmt() );
pTblFmt->CopyAttrs( *GetTable().GetFrmFmt() );
SwTableNode* pTblNd = new SwTableNode( rIdx );
SwEndNode* pEndNd = new SwEndNode( rIdx, *pTblNd );
commit 5766905d06fbc4d280d7f5d94b5167b5d42324b2
Author: Alex Ivan <alexnivan at yahoo.com>
Date: Wed Aug 28 16:09:44 2013 +0300
Replace String with OUString in table style undo
Change-Id: Ibc66d8ea44ac294832cf7c937d7e03fba4ad635b
diff --git a/sw/source/core/undo/untbl.cxx b/sw/source/core/undo/untbl.cxx
index 8181640..afba0c2 100644
--- a/sw/source/core/undo/untbl.cxx
+++ b/sw/source/core/undo/untbl.cxx
@@ -116,7 +116,7 @@ class _SaveTable
SfxItemSet aTblSet;
_SaveLine* pLine;
const SwTable* pSwTable;
- String sSaveFmtName;
+ OUString sSaveFmtName;
SfxItemSets aSets;
SwFrmFmts aFrmFmts;
sal_uInt16 nLineCount;
@@ -978,7 +978,7 @@ void _SaveTable::RestoreAttr( SwTable& rTbl, bool bMdfyBox )
pLn->RestoreAttr( *rTbl.GetTabLines()[ n ], *this );
}
- if( !sSaveFmtName.Len() )
+ if( sSaveFmtName.isEmpty() )
SwTableFmt::RestoreTableProperties( NULL, rTbl );
else
{
commit 33d2dde3bf0f754ec07a093135fabf07ea7cac06
Author: Alex Ivan <alexnivan at yahoo.com>
Date: Wed Aug 28 15:40:28 2013 +0300
Apply table style copying from writer to writer
After the table is copied to the new doc, we search for a style
with the same name in this doc, and, if one exists, we apply that
one, else, we apply the one from the clipboard.
Change-Id: I8e3b6b15efa9d7a267cb48223a6f0d62dde46d6f
diff --git a/sw/source/core/doc/tblrwcl.cxx b/sw/source/core/doc/tblrwcl.cxx
index 70560a7..53514b1 100644
--- a/sw/source/core/doc/tblrwcl.cxx
+++ b/sw/source/core/doc/tblrwcl.cxx
@@ -46,6 +46,7 @@
#include <cellatr.hxx>
#include <mvsave.hxx>
#include <swtblfmt.hxx>
+#include <tblafmt.hxx>
#include <swddetbl.hxx>
#include <poolfmt.hxx>
#include <tblrwcl.hxx>
@@ -2152,10 +2153,15 @@ bool SwTable::MakeCopy( SwDoc* pInsDoc, const SwPosition& rPos,
pInsDoc->CopyTxtColl( *pSrcDoc->GetTxtCollFromPool( RES_POOLCOLL_TABLE_HDLN ) );
}
+ SwTableFmt* pStyle = (SwTableFmt*)GetTableFmt()->GetRegisteredIn();
+ SwTableAutoFmt* pAutoFmt = 0;
+ if( pStyle )
+ pAutoFmt = new SwTableAutoFmt( pStyle->GetName(), pStyle );
+
SwTable* pNewTbl = (SwTable*)pInsDoc->InsertTable(
SwInsertTableOptions( tabopts::HEADLINE_NO_BORDER, 1 ),
rPos, 1, 1, GetFrmFmt()->GetHoriOrient().GetHoriOrient(),
- 0, 0, sal_False, IsNewModel() );
+ pAutoFmt, 0, sal_False, IsNewModel() );
if( !pNewTbl )
return false;
diff --git a/sw/source/core/docnode/ndcopy.cxx b/sw/source/core/docnode/ndcopy.cxx
index 7df0ae4..692d23e 100644
--- a/sw/source/core/docnode/ndcopy.cxx
+++ b/sw/source/core/docnode/ndcopy.cxx
@@ -428,7 +428,12 @@ SwTableNode* SwTableNode::MakeCopy( SwDoc* pDoc, const SwNodeIndex& rIdx ) const
}
}
- SwFrmFmt* pTblFmt = pDoc->MakeTblFrmFmt( sTblName, pDoc->GetDfltFrmFmt() );
+ SwTableFmt* pStyle = (SwTableFmt*)GetTable().GetTableFmt()->GetRegisteredIn();
+ SwTableFmt* pActualStyle = pDoc->FindTblFmtByName( pStyle->GetName(), sal_True );
+ if( !pActualStyle )
+ pActualStyle = pStyle;
+
+ SwFrmFmt* pTblFmt = pDoc->MakeTblFrmFmt( sTblName, pStyle ? pStyle : pDoc->GetDfltFrmFmt() );
pTblFmt->CopyAttrs( *GetTable().GetFrmFmt() );
SwTableNode* pTblNd = new SwTableNode( rIdx );
SwEndNode* pEndNd = new SwEndNode( rIdx, *pTblNd );
@@ -491,6 +496,8 @@ SwTableNode* SwTableNode::MakeCopy( SwDoc* pDoc, const SwNodeIndex& rIdx ) const
if( pDDEType )
pDDEType->IncRefCnt();
+ SwTableFmt::AssignFormatParents( pActualStyle, rTbl );
+
CHECK_TABLE( GetTable() );
return pTblNd;
}
commit 574579ae5c940377ff5125cf7ca360fe3cf7d1e6
Author: Alex Ivan <alexnivan at yahoo.com>
Date: Tue Aug 27 15:12:23 2013 +0300
Load predifined table styles at document creation
Until now, the styles were loaded and deleted every time the
AutoFormat dialog was opened/closed. Now, they are loaded once
at document creation, and unloaded when in the document dtor.
Change-Id: I7cc8cfa38c7c8c196e303e542736e937ac0023a8
diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx
index e3eeb61..0ae40c8 100644
--- a/sw/inc/doc.hxx
+++ b/sw/inc/doc.hxx
@@ -163,6 +163,7 @@ class SwTOXTypes;
class SwTabCols;
class SwTable;
class SwTableAutoFmt;
+class SwTableAutoFmtTbl;
class SwTableBox;
class SwTableBoxFmt;
class SwTableFmt;
@@ -310,6 +311,7 @@ class SW_DLLPUBLIC SwDoc :
SwFrmFmts *mpSpzFrmFmtTbl;
SwSectionFmts *mpSectionFmtTbl;
SwFrmFmts *mpTblFrmFmtTbl; ///< For tables
+ SwTableAutoFmtTbl *mpTblStyleTbl; ///< Table styles
SwTxtFmtColls *mpTxtFmtCollTbl; ///< FormatCollections
SwGrfFmtColls *mpGrfFmtCollTbl;
@@ -1283,6 +1285,7 @@ public:
SwTableFmt* MakeTblFrmFmt(const String &rFmtName, SwFrmFmt *pDerivedFrom);
void DelTblFrmFmt( SwTableFmt* pFmt );
SwTableFmt* FindTblFmtByName( const String& rName, sal_Bool bAll = sal_False ) const;
+ SwTableAutoFmtTbl* GetTableStyles() { return mpTblStyleTbl; };
/** Access to frames.
Iterate over Flys - forr Basic-Collections. */
diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx
index 88707bb..9c699b3 100644
--- a/sw/source/core/doc/docnew.cxx
+++ b/sw/source/core/doc/docnew.cxx
@@ -89,6 +89,7 @@
#include <UndoManager.hxx>
#include <unochart.hxx>
#include <fldbas.hxx>
+#include <tblafmt.hxx>
#include <cmdid.h> // for the default printer in SetJob
@@ -354,6 +355,9 @@ SwDoc::SwDoc()
mpFrmFmtTbl->push_back(mpDfltFrmFmt);
mpCharFmtTbl->push_back(mpDfltCharFmt);
+ mpTblStyleTbl = new SwTableAutoFmtTbl( this );
+ mpTblStyleTbl->Load();
+
/* FmtColls */
// TXT
mpTxtFmtCollTbl->push_back(mpDfltTxtFmtColl);
@@ -656,6 +660,7 @@ SwDoc::~SwDoc()
delete mpCharFmtTbl;
delete mpSectionFmtTbl;
delete mpTblFrmFmtTbl;
+ delete mpTblStyleTbl;
delete mpDfltTxtFmtColl;
delete mpDfltGrfFmtColl;
delete mpNumRuleTbl;
diff --git a/sw/source/core/doc/tblafmt.cxx b/sw/source/core/doc/tblafmt.cxx
index 976aa0a..5ec240b 100644
--- a/sw/source/core/doc/tblafmt.cxx
+++ b/sw/source/core/doc/tblafmt.cxx
@@ -961,13 +961,10 @@ SwTableAutoFmtTbl::SwTableAutoFmtTbl(SwDoc* pDoc)
: m_pImpl(new Impl)
, m_pDoc( pDoc)
{
- String sNm;
- // FIXME Yuk! we are creating the table styles ATM, but in the targetted
- // ideal, the table styles are created with the document
+ OUString sNm;
sNm = SwStyleNameMapper::GetUIName( RES_POOLCOLL_STANDARD, sNm );
- SwTableFmt* pStyle = pDoc->FindTblFmtByName(sNm);
- if ( !pStyle )
- pStyle = pDoc->MakeTblFrmFmt( sNm, pDoc->GetDfltFrmFmt() );
+ SwTableFmt* pStyle = pDoc->MakeTblFrmFmt( sNm, pDoc->GetDfltFrmFmt() );
+
SwTableAutoFmt* pNewTableAutoFmt = new SwTableAutoFmt( sNm, pStyle );
SwTableBoxFmt* pNewBoxFmt = pDoc->MakeTableBoxFmt();
diff --git a/sw/source/ui/table/tautofmt.cxx b/sw/source/ui/table/tautofmt.cxx
index da75280..dc68eb2 100644
--- a/sw/source/ui/table/tautofmt.cxx
+++ b/sw/source/ui/table/tautofmt.cxx
@@ -170,15 +170,13 @@ SwAutoFormatDlg::SwAutoFormatDlg( Window* pParent, SwWrtShell* pWrtShell,
m_pWndPreview->DetectRTL(pWrtShell);
- pTableTbl = new SwTableAutoFmtTbl(pWrtShell->GetDoc());
- pTableTbl->Load();
+ pTableTbl = pWrtShell->GetDoc()->GetTableStyles();
Init(pSelFmt);
}
SwAutoFormatDlg::~SwAutoFormatDlg()
{
- delete pTableTbl;
}
void SwAutoFormatDlg::Init( const SwTableAutoFmt* pSelFmt )
commit 03877216d708eaeb0fad205aacaec892fe4a3800
Author: Alex Ivan <alexnivan at yahoo.com>
Date: Fri Aug 23 16:33:36 2013 +0300
Add some more security to format parent assigning
Change-Id: I3f250f88ae68d6604bb4da0e9ae78ccefabf96e9
diff --git a/sw/source/core/doc/swtblfmt.cxx b/sw/source/core/doc/swtblfmt.cxx
index 823f073..ee5c3f0 100644
--- a/sw/source/core/doc/swtblfmt.cxx
+++ b/sw/source/core/doc/swtblfmt.cxx
@@ -276,6 +276,9 @@ void SwTableFmt::AssignFormatParents( SwTableFmt* pSrcFmt, SwTable &rTable )
if( !pHardFmt )
return;
+ if( pSrcFmt && pSrcFmt->IsDefault() )
+ return;
+
if( pSrcFmt )
pHardFmt->GetAttrSet().SetParent( &pSrcFmt->GetAttrSet() );
else
More information about the Libreoffice-commits
mailing list