[Libreoffice-commits] core.git: 2 commits - svx/source
Caolán McNamara
caolanm at redhat.com
Wed Dec 11 04:58:17 PST 2013
svx/source/table/accessibletableshape.cxx | 1 +
svx/source/table/svdotable.cxx | 20 +++++++++++++++++++-
2 files changed, 20 insertions(+), 1 deletion(-)
New commits:
commit 1c28065d8fe3e9a1394a7ecfc29e95a9639a1012
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed Dec 11 11:57:34 2013 +0000
disposed but not dtored
just die when you are supposed to, without this endless amounts of accessiblity
cells remain after sorting slides with tables in them
Change-Id: Ice9a86b8b806e58f9bf871341a38f7729798dda9
diff --git a/svx/source/table/accessibletableshape.cxx b/svx/source/table/accessibletableshape.cxx
index b423a75..9d1ab93 100644
--- a/svx/source/table/accessibletableshape.cxx
+++ b/svx/source/table/accessibletableshape.cxx
@@ -132,6 +132,7 @@ void AccessibleTableShapeImpl::dispose()
{
(*iter).second->dispose();
}
+ maChildMap.clear();
Reference< XModifyListener > xListener( this );
mxTable->removeModifyListener( xListener );
mxTable.clear();
commit 0b8e2e5efe20519e8b5563314bac0cbb84a3b967
Author: Caolán McNamara <caolanm at redhat.com>
Date: Tue Dec 10 16:54:59 2013 +0000
correctly dispose to avoid cyclic dependencies
accessibility cruft is still listening to dead tables so crashes in
slidesorting in main panel if moved slide has tables in it after visiting slide
sorter once.
Change-Id: I09f9a73b01fb2ddf059402146acdc7bd823798b9
diff --git a/svx/source/table/svdotable.cxx b/svx/source/table/svdotable.cxx
index 1cc828e..9009aa6 100644
--- a/svx/source/table/svdotable.cxx
+++ b/svx/source/table/svdotable.cxx
@@ -266,9 +266,9 @@ void SdrTableObjImpl::init( SdrTableObj* pTable, sal_Int32 nColumns, sal_Int32 n
mpTableObj = pTable;
mxTable = new TableModel( pTable );
mxTable->init( nColumns, nRows );
- mpLayouter = new TableLayouter( mxTable );
Reference< XModifyListener > xListener( static_cast< ::com::sun::star::util::XModifyListener* >(this) );
mxTable->addModifyListener( xListener );
+ mpLayouter = new TableLayouter( mxTable );
LayoutTable( mpTableObj->aRect, true, true );
mpTableObj->maLogicRect = mpTableObj->aRect;
}
@@ -279,6 +279,8 @@ SdrTableObjImpl& SdrTableObjImpl::operator=( const SdrTableObjImpl& rSource )
{
if (this != &rSource)
{
+ disconnectTableStyle();
+
if( mpLayouter )
{
delete mpLayouter;
@@ -303,6 +305,8 @@ SdrTableObjImpl& SdrTableObjImpl::operator=( const SdrTableObjImpl& rSource )
ApplyCellStyles();
mpTableObj->aRect = mpTableObj->maLogicRect;
LayoutTable( mpTableObj->aRect, false, false );
+
+ connectTableStyle();
}
return *this;
}
@@ -449,8 +453,22 @@ bool SdrTableObjImpl::ApplyCellStyles()
void SdrTableObjImpl::dispose()
{
+ disconnectTableStyle();
+ mxTableStyle.clear();
+
+ if( mpLayouter )
+ {
+ delete mpLayouter;
+ mpLayouter = 0;
+ }
+
if( mxTable.is() )
+ {
+ Reference< XModifyListener > xListener( static_cast< ::com::sun::star::util::XModifyListener* >(this) );
+ mxTable->removeModifyListener( xListener );
mxTable->dispose();
+ mxTable.clear();
+ }
}
// -----------------------------------------------------------------------------
More information about the Libreoffice-commits
mailing list