[ooo-build-commit] Branch 'ooo/OOO320' - chart2/source scaddins/source sc/source

Jan Holesovsky kendy at kemper.freedesktop.org
Mon Oct 26 20:22:32 PDT 2009


 chart2/source/controller/chartapiwrapper/TitleWrapper.cxx                |    2 
 chart2/source/controller/chartapiwrapper/WrappedTextRotationProperty.cxx |   14 ++
 chart2/source/controller/chartapiwrapper/WrappedTextRotationProperty.hxx |    7 +
 sc/source/core/data/bcaslot.cxx                                          |   59 ++++++++++
 sc/source/core/inc/bcaslot.hxx                                           |    1 
 sc/source/core/tool/compiler.cxx                                         |   34 +++--
 sc/source/ui/docshell/externalrefmgr.cxx                                 |   22 ++-
 scaddins/source/analysis/analysishelper.cxx                              |    8 -
 8 files changed, 118 insertions(+), 29 deletions(-)

New commits:
commit 0cfce2e4bb12b44737aeb6bc8e1e01b5cc3d8607
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Mon Oct 26 16:21:22 2009 +0000

    CWS-TOOLING: integrate CWS calc32stopper3_OOO320
    2009-10-12 14:26:09 +0200 er  r276833 : disable dump again
    2009-10-12 13:46:57 +0200 er  r276832 : #i102294# setValue: yet another DST glitch
    2009-10-12 13:21:48 +0200 iha  r276828 : #i105767# Y axis vanishes in case of zero rotated axis title
    2009-10-08 01:49:20 +0200 er  r276772 : NextSymbol: actually do reset ODF reference detection on file/sheet separator
    2009-10-08 00:18:58 +0200 er  r276771 : #i101639# use TabIDs in cached RangeArrays, not RefData Tabs
    2009-10-07 19:25:47 +0200 er  r276767 : #i105200# UpdateBroadcastAreas: hash key changes, remove area from all slots and reinsert
    2009-10-05 17:20:44 +0200 er  r276690 : #i105365# SI prefixes for ang, ang3, m/h, m/hr
    2009-10-05 16:21:29 +0200 er  r276686 : #i105161 intersection has higher precedence than union

diff --git a/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx b/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx
index f3ccf09..3b0438f 100644
--- a/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx
+++ b/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx
@@ -505,7 +505,7 @@ const std::vector< WrappedProperty* > TitleWrapper::createWrappedProperties()
     ::std::vector< ::chart::WrappedProperty* > aWrappedProperties;
     
     aWrappedProperties.push_back( new WrappedTitleStringProperty( m_spChart2ModelContact->m_xContext ) );
-    aWrappedProperties.push_back( new WrappedTextRotationProperty() );
+    aWrappedProperties.push_back( new WrappedTextRotationProperty( m_eTitleType==TitleHelper::Y_AXIS_TITLE || m_eTitleType==TitleHelper::X_AXIS_TITLE ) );
     aWrappedProperties.push_back( new WrappedStackedTextProperty() );
     WrappedCharacterHeightProperty::addWrappedProperties( aWrappedProperties, this );
     WrappedAutomaticPositionProperties::addWrappedProperties( aWrappedProperties );
diff --git a/chart2/source/controller/chartapiwrapper/WrappedTextRotationProperty.cxx b/chart2/source/controller/chartapiwrapper/WrappedTextRotationProperty.cxx
index b02c4fb..55b4f43 100644
--- a/chart2/source/controller/chartapiwrapper/WrappedTextRotationProperty.cxx
+++ b/chart2/source/controller/chartapiwrapper/WrappedTextRotationProperty.cxx
@@ -33,7 +33,9 @@
 
 #include "WrappedTextRotationProperty.hxx"
 #include "macros.hxx"
+#include <com/sun/star/beans/XPropertyState.hpp>
 
+using namespace ::com::sun::star;
 using ::com::sun::star::uno::Any;
 using ::rtl::OUString;
 
@@ -43,13 +45,23 @@ namespace chart
 {
 //.............................................................................
 
-WrappedTextRotationProperty::WrappedTextRotationProperty()
+WrappedTextRotationProperty::WrappedTextRotationProperty( bool bDirectState )
     : ::chart::WrappedProperty( C2U( "TextRotation" ), C2U( "TextRotation" ) )
+    , m_bDirectState( bDirectState )
 {
 }
 WrappedTextRotationProperty::~WrappedTextRotationProperty()
 {
 }
+
+beans::PropertyState WrappedTextRotationProperty::getPropertyState( const uno::Reference< beans::XPropertyState >& xInnerPropertyState ) const
+                        throw (beans::UnknownPropertyException, uno::RuntimeException)
+{
+    if( m_bDirectState )
+        return beans::PropertyState_DIRECT_VALUE;
+    return WrappedProperty::getPropertyState( xInnerPropertyState );
+}
+
 Any WrappedTextRotationProperty::convertInnerToOuterValue( const Any& rInnerValue ) const
 {
     Any aRet;
diff --git a/chart2/source/controller/chartapiwrapper/WrappedTextRotationProperty.hxx b/chart2/source/controller/chartapiwrapper/WrappedTextRotationProperty.hxx
index 94013f0..6e7df47 100644
--- a/chart2/source/controller/chartapiwrapper/WrappedTextRotationProperty.hxx
+++ b/chart2/source/controller/chartapiwrapper/WrappedTextRotationProperty.hxx
@@ -40,12 +40,17 @@ namespace chart
 class WrappedTextRotationProperty : public WrappedProperty
 {
 public:
-    WrappedTextRotationProperty();
+    WrappedTextRotationProperty( bool bDirectState=false );
     virtual ~WrappedTextRotationProperty();
 
+    virtual ::com::sun::star::beans::PropertyState getPropertyState( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyState >& xInnerPropertyState ) const
+                        throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
+
 protected:
     virtual ::com::sun::star::uno::Any convertInnerToOuterValue( const ::com::sun::star::uno::Any& rInnerValue ) const;
     virtual ::com::sun::star::uno::Any convertOuterToInnerValue( const ::com::sun::star::uno::Any& rOuterValue ) const;
+
+    bool m_bDirectState;
 };
 
 //.............................................................................
diff --git a/sc/source/core/data/bcaslot.cxx b/sc/source/core/data/bcaslot.cxx
index 29f54e8..9a07109 100644
--- a/sc/source/core/data/bcaslot.cxx
+++ b/sc/source/core/data/bcaslot.cxx
@@ -353,6 +353,21 @@ void ScBroadcastAreaSlot::UpdateRemove( UpdateRefMode eUpdateRefMode,
 }
 
 
+void ScBroadcastAreaSlot::UpdateRemoveArea( ScBroadcastArea* pArea )
+{
+    ScBroadcastAreas::iterator aIter( aBroadcastAreaTbl.find( pArea));
+    if (aIter == aBroadcastAreaTbl.end())
+        return;
+    if (*aIter != pArea)
+        DBG_ERRORFILE( "UpdateRemoveArea: area pointer mismatch");
+    else
+    {
+        aBroadcastAreaTbl.erase( aIter);
+        pArea->DecRef();
+    }
+}
+
+
 void ScBroadcastAreaSlot::UpdateInsert( ScBroadcastArea* pArea )
 {
     ::std::pair< ScBroadcastAreas::iterator, bool > aPair = 
@@ -732,6 +747,50 @@ void ScBroadcastAreaSlotMachine::UpdateBroadcastAreas(
         }
     }
 
+    // Updating an area's range will modify the hash key, remove areas from all 
+    // affected slots. Will be reinserted later with the updated range.
+    ScBroadcastArea* pChain = pUpdateChain;
+    while (pChain)
+    {
+        ScBroadcastArea* pArea = pChain;
+        pChain = pArea->GetUpdateChainNext();
+        ScRange aRange( pArea->GetRange());
+        // remove from slots
+        for (SCTAB nTab = aRange.aStart.Tab(); nTab <= aRange.aEnd.Tab() && pArea->GetRef(); ++nTab)
+        {
+            TableSlotsMap::iterator iTab( aTableSlotsMap.find( nTab));
+            if (iTab == aTableSlotsMap.end())
+            {
+                DBG_ERRORFILE( "UpdateBroadcastAreas: Where's the TableSlot?!?");
+                continue;   // for
+            }
+            ScBroadcastAreaSlot** ppSlots = (*iTab).second->getSlots();
+            SCSIZE nStart, nEnd, nRowBreak;
+            ComputeAreaPoints( aRange, nStart, nEnd, nRowBreak );
+            SCSIZE nOff = nStart;
+            SCSIZE nBreak = nOff + nRowBreak;
+            ScBroadcastAreaSlot** pp = ppSlots + nOff;
+            while ( nOff <= nEnd && pArea->GetRef() )
+            {
+                if (*pp)
+                    (*pp)->UpdateRemoveArea( pArea);
+                if ( nOff < nBreak )
+                {
+                    ++nOff;
+                    ++pp;
+                }
+                else
+                {
+                    nStart += BCA_SLOTS_ROW;
+                    nOff = nStart;
+                    pp = ppSlots + nOff;
+                    nBreak = nOff + nRowBreak;
+                }
+            }
+        }
+        
+    }
+
     // shift sheets
     if (nDz)
     {
diff --git a/sc/source/core/inc/bcaslot.hxx b/sc/source/core/inc/bcaslot.hxx
index 5c24873..d9fae0c 100644
--- a/sc/source/core/inc/bcaslot.hxx
+++ b/sc/source/core/inc/bcaslot.hxx
@@ -192,6 +192,7 @@ public:
     void				UpdateRemove( UpdateRefMode eUpdateRefMode,
                                         const ScRange& rRange,
                                         SCsCOL nDx, SCsROW nDy, SCsTAB nDz );
+    void                UpdateRemoveArea( ScBroadcastArea* pArea );
     void				UpdateInsert( ScBroadcastArea* pArea );
 };
 
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index 3ca7c20..09678ee 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -2278,14 +2278,16 @@ Label_MaskStateMachine:
                     static const int kQuote     = (1 << 4);
                     // Past ' closing quote.
                     static const int kClose     = (1 << 5);
+                    // Encountered # file/sheet separator.
+                    static const int kFileSep   = (1 << 6);
                     // Past . sheet name separator.
-                    static const int kPast      = (1 << 6);
+                    static const int kPast      = (1 << 7);
                     // Marked name $$ follows sheet name separator, detected
                     // while we're still on the separator. Will be cleared when
                     // entering the name.
-                    static const int kMarkAhead = (1 << 7);
+                    static const int kMarkAhead = (1 << 8);
                     // In marked defined name.
-                    static const int kDefName   = (1 << 8);
+                    static const int kDefName   = (1 << 9);
 
                     bool bAddToSymbol = true;
                     if ((nMask & SC_COMPILER_C_ODF_RBRACKET) && !(nRefInName & kOpen))
@@ -2309,7 +2311,9 @@ Label_MaskStateMachine:
                     {
                         // Not in col/row yet.
 
-                        if ('$' == c && '$' == pSrc[0] && !(nRefInName & kOpen))
+                        if (SC_COMPILER_FILE_TAB_SEP == c && (nRefInName & kFileSep))
+                            nRefInName = 0;
+                        else if ('$' == c && '$' == pSrc[0] && !(nRefInName & kOpen))
                         {
                             nRefInName &= ~kMarkAhead;
                             if (!(nRefInName & kDefName))
@@ -2356,16 +2360,20 @@ Label_MaskStateMachine:
                             }
                             else
                             {
-                                if ('\'' == pSrc[0])
-                                {
-                                    // escapes embedded quote
-                                    nRefInName |= kQuote;
-                                }
-                                else
+                                switch (pSrc[0])
                                 {
-                                    // quote not followed by quote => close
-                                    nRefInName |= kClose;
-                                    nRefInName &= ~kOpen;
+                                    case '\'':
+                                        // escapes embedded quote
+                                        nRefInName |= kQuote;
+                                        break;
+                                    case SC_COMPILER_FILE_TAB_SEP:
+                                        // sheet name should follow
+                                        nRefInName |= kFileSep;
+                                        // fallthru
+                                    default:
+                                        // quote not followed by quote => close
+                                        nRefInName |= kClose;
+                                        nRefInName &= ~kOpen;
                                 }
                                 bAddToSymbol = !(nRefInName & kDefName);
                             }
diff --git a/sc/source/ui/docshell/externalrefmgr.cxx b/sc/source/ui/docshell/externalrefmgr.cxx
index 813a6f9..01b2fcd 100644
--- a/sc/source/ui/docshell/externalrefmgr.cxx
+++ b/sc/source/ui/docshell/externalrefmgr.cxx
@@ -384,11 +384,6 @@ ScExternalRefCache::TokenArrayRef ScExternalRefCache::getCellRangeData(
         return TokenArrayRef();
 
     DocItem& rDoc = itrDoc->second;
-    RangeArrayMap::const_iterator itrRange = rDoc.maRangeArrays.find(rRange);
-    if (itrRange != rDoc.maRangeArrays.end())
-    {
-        return itrRange->second;
-    }
 
     TableNameIndexMap::iterator itrTabId = rDoc.maTableNameIndex.find(
         ScGlobal::pCharClass->upper(rTabName));
@@ -410,6 +405,13 @@ ScExternalRefCache::TokenArrayRef ScExternalRefCache::getCellRangeData(
         // not all tables are cached.
         return TokenArrayRef();
 
+    ScRange aCacheRange( nCol1, nRow1, static_cast<SCTAB>(nTabFirstId), nCol2, nRow2, static_cast<SCTAB>(nTabLastId));
+    RangeArrayMap::const_iterator itrRange = rDoc.maRangeArrays.find( aCacheRange);
+    if (itrRange != rDoc.maRangeArrays.end())
+    {
+        return itrRange->second;
+    }
+
     TokenArrayRef pArray(new ScTokenArray);
     bool bFirstTab = true;
     for (size_t nTab = nTabFirstId; nTab <= nTabLastId; ++nTab)
@@ -462,7 +464,7 @@ ScExternalRefCache::TokenArrayRef ScExternalRefCache::getCellRangeData(
 
         bFirstTab = false;
     }
-    rDoc.maRangeArrays.insert(RangeArrayMap::value_type(rRange, pArray));
+    rDoc.maRangeArrays.insert( RangeArrayMap::value_type( aCacheRange, pArray));
     return pArray;
 }
 
@@ -545,13 +547,13 @@ void ScExternalRefCache::setCellRangeData(sal_uInt16 nFileId, const ScRange& rRa
         return;
     }
 
-    size_t nTab1 = itrTabName->second;
+    size_t nTabFirstId = itrTabName->second;
     SCROW nRow1 = rRange.aStart.Row(), nRow2 = rRange.aEnd.Row();
     SCCOL nCol1 = rRange.aStart.Col(), nCol2 = rRange.aEnd.Col();
     vector<SingleRangeData>::const_iterator itrDataBeg = rData.begin(), itrDataEnd = rData.end();
     for (vector<SingleRangeData>::const_iterator itrData = itrDataBeg; itrData != itrDataEnd; ++itrData)
     {
-        size_t i = nTab1 + ::std::distance(itrDataBeg, itrData);
+        size_t i = nTabFirstId + ::std::distance(itrDataBeg, itrData);
         TableTypeRef& pTabData = rDoc.maTables[i];
         if (!pTabData.get())
             pTabData.reset(new Table);
@@ -575,7 +577,9 @@ void ScExternalRefCache::setCellRangeData(sal_uInt16 nFileId, const ScRange& rRa
         }
     }
 
-    rDoc.maRangeArrays.insert(RangeArrayMap::value_type(rRange, pArray));
+    size_t nTabLastId = nTabFirstId + rRange.aEnd.Tab() - rRange.aStart.Tab();
+    ScRange aCacheRange( nCol1, nRow1, static_cast<SCTAB>(nTabFirstId), nCol2, nRow2, static_cast<SCTAB>(nTabLastId));
+    rDoc.maRangeArrays.insert( RangeArrayMap::value_type( aCacheRange, pArray));
 }
 
 bool ScExternalRefCache::isDocInitialized(sal_uInt16 nFileId)
diff --git a/scaddins/source/analysis/analysishelper.cxx b/scaddins/source/analysis/analysishelper.cxx
index 249db0a..2b91408 100644
--- a/scaddins/source/analysis/analysishelper.cxx
+++ b/scaddins/source/analysis/analysishelper.cxx
@@ -2427,7 +2427,7 @@ ConvertDataList::ConvertDataList( void )
     NEWD( "in",         3.9370078740157480E01,  CDC_Length ); // Inch               39,37007874015748031496062992126
     NEWD( "ft",         3.2808398950131234E00,  CDC_Length ); // Foot               3,2808398950131233595800524934383
     NEWD( "yd",         1.0936132983377078E00,  CDC_Length ); // Yard               1,0936132983377077865266841644794
-    NEWD( "ang",        1.0000000000000000E10,  CDC_Length ); // Angstroem
+    NEWDP( "ang",       1.0000000000000000E10,  CDC_Length ); // Angstroem
     NEWD( "Pica",       2.8346456692913386E03,  CDC_Length ); // Pica (1/72 Inch)   2834,6456692913385826771653543307
     NEWD( "ell",        8.748906E-01,           CDC_Length ); // *** Ell
     NEWDP( "parsec",    3.240779E-17,           CDC_Length ); // *** Parsec
@@ -2519,7 +2519,7 @@ ConvertDataList::ConvertDataList( void )
     NEWD( "in3",        6.1023744094732284E01,  CDC_Volume ); // *** Cubic Inch
     NEWD( "ft3",        3.5314666721488590E-02, CDC_Volume ); // *** Cubic Foot
     NEWD( "yd3",        1.3079506193143922E-03, CDC_Volume ); // *** Cubic Yard
-    NEWD( "ang3",       1.0000000000000000E27,  CDC_Volume ); // *** Cubic Angstroem
+    NEWDP( "ang3",      1.0000000000000000E27,  CDC_Volume ); // *** Cubic Angstroem
     NEWD( "Pica3",      2.2776990435870636E07,  CDC_Volume ); // *** Cubic Pica
     NEWD( "barrel",     6.289811E-03,           CDC_Volume ); // *** Barrel (=42gal?)
     NEWD( "bushel",     2.837759E-02,           CDC_Volume ); // *** Bushel
@@ -2557,8 +2557,8 @@ ConvertDataList::ConvertDataList( void )
     // SPEED: 1 Meter per Second is...
     NEWDP( "m/s",   1.0000000000000000E00,  CDC_Speed ); // *** Meters per Second
     NEWDP( "m/sec", 1.0000000000000000E00,  CDC_Speed ); // *** Meters per Second also
-    NEWD( "m/h",    3.6000000000000000E03,  CDC_Speed ); // *** Meters per Hour
-    NEWD( "m/hr",   3.6000000000000000E03,  CDC_Speed ); // *** Meters per Hour also
+    NEWDP( "m/h",   3.6000000000000000E03,  CDC_Speed ); // *** Meters per Hour
+    NEWDP( "m/hr",  3.6000000000000000E03,  CDC_Speed ); // *** Meters per Hour also
     NEWD( "mph",    2.2369362920544023E00,  CDC_Speed ); // *** Britsh Miles per Hour
     NEWD( "kn",     1.9438444924406048E00,  CDC_Speed ); // *** Knot = Nautical Miles per Hour
     NEWD( "admkn",  1.9438446603753486E00,  CDC_Speed ); // *** Admiralty Knot


More information about the ooo-build-commit mailing list