oox/source/token/properties.txt | 1 sc/source/filter/inc/drawingbase.hxx | 4 - sc/source/filter/oox/drawingbase.cxx | 28 ------------- sc/source/filter/oox/drawingfragment.cxx | 3 - sc/source/filter/oox/sheetdatabuffer.cxx | 2 sc/source/filter/oox/worksheethelper.cxx | 18 -------- sc/source/ui/unoobj/docuno.cxx | 64 ------------------------------- 7 files changed, 2 insertions(+), 118 deletions(-)
New commits: commit 764752f5d85cb7c86ad21340dfdda4b62754790c Author: Noel Power <noel.po...@novell.com> Date: Mon Jun 4 18:00:36 2012 +0100 better import xlsx heights don't call UpdateAllRowHeights when IsAdjustHeightEnabled property is set and additionally set manual heights for *all* imported row heights ( same afaics xls import does ) - certainly this improves import ( also see documents attached in i#94028, i#93609 ) Change-Id: Id8aff727587ed4fa19fd0897aaf25b2202737084 diff --git a/sc/source/filter/oox/sheetdatabuffer.cxx b/sc/source/filter/oox/sheetdatabuffer.cxx index 6d4e305..2a04f8a 100644 --- a/sc/source/filter/oox/sheetdatabuffer.cxx +++ b/sc/source/filter/oox/sheetdatabuffer.cxx @@ -793,8 +793,6 @@ void SheetDataBuffer::applyCellMerging( const CellRangeAddress& rRange ) { if( const EditTextObject* pEditObj = static_cast< const ScEditCell* >( rDoc.GetCell( rStart ) )->GetData() ) bTextWrap = pEditObj->GetParagraphCount() > 1; - if( bTextWrap ) - setManualRowHeight( rStart.Row() ); } } } diff --git a/sc/source/filter/oox/worksheethelper.cxx b/sc/source/filter/oox/worksheethelper.cxx index 43c1b33..48dc7d6 100644 --- a/sc/source/filter/oox/worksheethelper.cxx +++ b/sc/source/filter/oox/worksheethelper.cxx @@ -342,8 +342,6 @@ public: @descr Row default formatting is converted directly, other settings are cached and converted in the finalizeImport() call. */ void setRowModel( const RowModel& rModel ); - /** Specifies that the passed row needs to set its height manually. */ - void setManualRowHeight( sal_Int32 nRow ); /** Initial conversion before importing the worksheet. */ void initializeWorksheetImport(); @@ -401,7 +399,6 @@ private: RowModelRangeMap maRowModels; /// Ranges of rows sorted by first row index. HyperlinkModelList maHyperlinks; /// Cell ranges containing hyperlinks. ValidationModelList maValidations; /// Cell ranges containing data validation settings. - ValueRangeSet maManualRowHeights; /// Rows that need manual height independent from own settings. SheetDataBuffer maSheetData; /// Buffer for cell contents and cell formatting. CondFormatBuffer maCondFormats; /// Buffer for conditional formatting. CommentsBuffer maComments; /// Buffer for all cell comments in this sheet. @@ -938,11 +935,6 @@ void WorksheetGlobals::setRowModel( const RowModel& rModel ) lclUpdateProgressBar( mxRowProgress, maUsedArea, nRow ); } -void WorksheetGlobals::setManualRowHeight( sal_Int32 nRow ) -{ - maManualRowHeights.insert( nRow ); -} - void WorksheetGlobals::initializeWorksheetImport() { // set default cell style for unused cells @@ -1236,10 +1228,7 @@ void WorksheetGlobals::convertRows( OutlineLevelVec& orRowLevels, custom height, otherwise get all rows specified in the class member maManualRowHeights that are inside the passed row model. */ ValueRangeVector aManualRows; - if( rModel.mbCustomHeight ) - aManualRows.push_back( rRowRange ); - else - aManualRows = maManualRowHeights.getIntersection( rRowRange ); + aManualRows.push_back( rRowRange ); for( ValueRangeVector::const_iterator aIt = aManualRows.begin(), aEnd = aManualRows.end(); aIt != aEnd; ++aIt ) { PropertySet aPropSet( getRows( *aIt ) ); @@ -1551,11 +1540,6 @@ void WorksheetHelper::setRowModel( const RowModel& rModel ) mrSheetGlob.setRowModel( rModel ); } -void WorksheetHelper::setManualRowHeight( sal_Int32 nRow ) -{ - mrSheetGlob.setManualRowHeight( nRow ); -} - void WorksheetHelper::putValue( const CellAddress& rAddress, double fValue ) const { ScAddress aAddress; diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx index a7589d8..2220e2d 100644 --- a/sc/source/ui/unoobj/docuno.cxx +++ b/sc/source/ui/unoobj/docuno.cxx @@ -1683,11 +1683,7 @@ void SAL_CALL ScModelObj::setPropertyValue( bool bOldAdjustHeightEnabled = pDoc->IsAdjustHeightEnabled(); bool bAdjustHeightEnabled = ScUnoHelpFunctions::GetBoolFromAny( aValue ); if( bOldAdjustHeightEnabled != bAdjustHeightEnabled ) - { pDoc->EnableAdjustHeight( bAdjustHeightEnabled ); - if( bAdjustHeightEnabled ) - pDocShell->UpdateAllRowHeights(); - } } else if ( aString.EqualsAscii( SC_UNO_ISEXECUTELINKENABLED ) ) { commit d59a707f6e9308c2b89ebf4e71693175c37b7ed6 Author: Noel Power <noel.po...@novell.com> Date: Mon Jun 4 14:49:31 2012 +0100 remove anchor to cell shape (re)position hack this change manaully reverts c07e9299bb2c8d5477669568b12708bd2ff12684 & 4908c16a73b397f83c327789f113658c1ea4d904 Change-Id: Ia8656631f84709430c8e94e8d9dfa961e81d5746 diff --git a/oox/source/token/properties.txt b/oox/source/token/properties.txt index 7330203..f2442e6 100644 --- a/oox/source/token/properties.txt +++ b/oox/source/token/properties.txt @@ -9,7 +9,6 @@ AdjustLuminance AdjustmentValues Address Align -Anchor AnchorPosition ApplyFormDesignMode AreaLinks diff --git a/sc/source/filter/inc/drawingbase.hxx b/sc/source/filter/inc/drawingbase.hxx index 339d1b5..9da0985 100644 --- a/sc/source/filter/inc/drawingbase.hxx +++ b/sc/source/filter/inc/drawingbase.hxx @@ -109,10 +109,6 @@ public: /** Calculates the resulting shape anchor in 1/100 mm. */ ::com::sun::star::awt::Rectangle calcAnchorRectHmm( const ::com::sun::star::awt::Size& rPageSizeHmm ) const; - /** Returns the 'from' cell if it exists */ - ::com::sun::star::uno::Reference< ::com::sun::star::table::XCell > getFromCell() const; - /** Applies Cell Anchor to an XShape if needed*/ - void applyToXShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape>& rxShape ); private: /** Converts the passed anchor to an absolute position in EMUs. */ ::oox::drawingml::EmuPoint calcCellAnchorEmu( const CellAnchorModel& rModel ) const; diff --git a/sc/source/filter/oox/drawingbase.cxx b/sc/source/filter/oox/drawingbase.cxx index 1cf511c..98b61a2 100644 --- a/sc/source/filter/oox/drawingbase.cxx +++ b/sc/source/filter/oox/drawingbase.cxx @@ -266,34 +266,6 @@ Rectangle ShapeAnchor::calcAnchorRectHmm( const Size& rPageSizeHmm ) const return Rectangle( lclEmuToHmm( aAnchorRect.X ), lclEmuToHmm( aAnchorRect.Y ), lclEmuToHmm( aAnchorRect.Width ), lclEmuToHmm( aAnchorRect.Height ) ); } -::com::sun::star::uno::Reference< ::com::sun::star::table::XCell > -ShapeAnchor::getFromCell() const -{ - CellAddress aAddress; - aAddress.Sheet = getSheetIndex(); - aAddress.Row = maFrom.mnRow; - aAddress.Column = maFrom.mnCol; - return getCell( aAddress ); -} - -void -ShapeAnchor::applyToXShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape>& rxShape ) -{ - if ( ( meAnchorType == ANCHOR_TWOCELL || meAnchorType == ANCHOR_ONECELL ) && getFromCell().is() ) - { - PropertySet aShapeProp( rxShape ); - aShapeProp.setProperty( PROP_Anchor, getFromCell() ); - CellAnchorModel offSets; - offSets.mnColOffset = maFrom.mnColOffset; - offSets.mnRowOffset = maFrom.mnRowOffset; - EmuPoint aPos = calcCellAnchorEmu( offSets ); - aShapeProp.setProperty( PROP_HoriOrientPosition, lclEmuToHmm( aPos.X ) ); - aShapeProp.setProperty( PROP_VertOrientPosition, lclEmuToHmm( aPos.Y ) ); - } -} - -// private -------------------------------------------------------------------- - EmuPoint ShapeAnchor::calcCellAnchorEmu( const CellAnchorModel& rModel ) const { // calculate position of top-left edge of the cell diff --git a/sc/source/filter/oox/drawingfragment.cxx b/sc/source/filter/oox/drawingfragment.cxx index 9b7d07a..73e6b47 100644 --- a/sc/source/filter/oox/drawingfragment.cxx +++ b/sc/source/filter/oox/drawingfragment.cxx @@ -277,8 +277,7 @@ void DrawingFragment::onEndElement() basegfx::B2DHomMatrix aTransformation; mxShape->addShape( getOoxFilter(), &getTheme(), mxDrawPage, aTransformation, &aShapeRectEmu32 ); - // apply Cell anchoring if necessary - mxAnchor->applyToXShape( mxShape->getXShape() ); + /* Collect all shape positions in the WorksheetHelper base class. But first, scale EMUs to 1/100 mm. */ Rectangle aShapeRectHmm( diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx index a1e7a1e..a7589d8 100644 --- a/sc/source/ui/unoobj/docuno.cxx +++ b/sc/source/ui/unoobj/docuno.cxx @@ -194,55 +194,6 @@ const SfxItemPropertyMapEntry* lcl_GetRowsPropertyMap() return aRowsPropertyMap_Impl; } -struct OrientationInfo -{ - OrientationInfo() : mnVert( 0 ), mnHori( 0 ) {} - uno::Reference< beans::XPropertySet > mxShape; - sal_Int32 mnVert; - sal_Int32 mnHori; -}; - -void lcl_captureShapeOrientationInfo( std::vector< OrientationInfo >& infos, ScModelObj& rModel ) -{ - rtl::OUString sHori( RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_HORIPOS ) ); - rtl::OUString sVert( RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_VERTPOS ) ); - - uno::Reference<container::XIndexAccess> xPages( rModel.getDrawPages(), uno::UNO_QUERY ); - if ( xPages.is() ) - { - for ( sal_Int32 nIndex = 0, nPages = xPages->getCount(); nIndex < nPages; ++nIndex ) - { - uno::Reference<container::XIndexAccess> xShapes( xPages->getByIndex( nIndex ), uno::UNO_QUERY ); - for ( sal_Int32 nShapeIndex = 0, nShapes = xShapes->getCount(); nShapeIndex < nShapes; ++nShapeIndex ) - { - uno::Reference< beans::XPropertySet > xShape( xShapes->getByIndex( nShapeIndex ), uno::UNO_QUERY ); - uno::Reference< table::XCell > xCell( xShape->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_ANCHOR ) ) ), uno::UNO_QUERY ); - // only capture orientation if the shape is anchored to cell - if ( xShape.is() && xCell.is() ) - { - uno::Reference< beans::XPropertySetInfo > xPropInfo = xShape->getPropertySetInfo(); - if ( xPropInfo.is() && xPropInfo->hasPropertyByName( sHori ) && xPropInfo->hasPropertyByName( sVert ) ) - { - OrientationInfo aShape; - aShape.mxShape = xShape; - xShape->getPropertyValue( sHori ) >>= aShape.mnHori; - xShape->getPropertyValue( sVert ) >>= aShape.mnVert; - infos.push_back( aShape ); - } - } - } - } - } -} - -void lcl_applyShapeOrientationInfo( std::vector< OrientationInfo >& infos ) -{ - for ( std::vector< OrientationInfo >::iterator it = infos.begin(), it_end = infos.end(); it != it_end; ++it ) - { - it->mxShape->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_HORIPOS ) ), uno::makeAny( it->mnHori ) ); - it->mxShape->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_VERTPOS ) ), uno::makeAny( it->mnVert ) ); - } -} using sc::HMMToTwips; using sc::TwipsToHMM; @@ -1735,18 +1686,7 @@ void SAL_CALL ScModelObj::setPropertyValue( { pDoc->EnableAdjustHeight( bAdjustHeightEnabled ); if( bAdjustHeightEnabled ) - { - // during import ( e.g. oox ) shapes anchored by cell lose - // any additional Hori/Vert orientation ( which offsets the - // shape position relative to the cell ) when - // UpdateAllRowHeights is called. Save Hori/Vert values - // before calling UpdateAllRowHeights and re-apply them - // after - std::vector< OrientationInfo > savedOrientations; - lcl_captureShapeOrientationInfo( savedOrientations, *this ); pDocShell->UpdateAllRowHeights(); - lcl_applyShapeOrientationInfo( savedOrientations ); - } } } else if ( aString.EqualsAscii( SC_UNO_ISEXECUTELINKENABLED ) ) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits