[Libreoffice-commits] core.git: Branch 'feature/formula-core-rework' - 47 commits - basic/qa basic/source bin/lint-ui.py bin/update_pch.sh cui/uiconfig desktop/uiconfig drawinglayer/source extras/source helpcontent2 ios/CustomTarget_Viewer_app.mk ios/experimental libcdr/ExternalPackage_libcdr.mk libcdr/ExternalProject_libcdr.mk liblangtag/liblangtag-0.4.0-cross.patch liblangtag/liblangtag-0.4.0-msc-configure.patch liblangtag/UnpackedTarball_langtag.mk libmspub/ExternalPackage_libmspub.mk libmspub/ExternalProject_libmspub.mk libmwaw/ExternalPackage_libmwaw.mk libmwaw/ExternalProject_libmwaw.mk oox/inc package/source padmin/uiconfig sal/inc sc/inc sc/qa sc/source sfx2/inc sfx2/source solenv/bin svl/inc svl/source svtools/source svx/inc svx/source sw/inc sw/qa sw/source sw/uiconfig ucb/source vcl/inc vcl/source vcl/unx xmloff/source

Kohei Yoshida kohei.yoshida at gmail.com
Fri Mar 15 21:59:01 PDT 2013


Rebased ref, commits from common ancestor:
commit 6b6f260203878973a2e5c74c4ce0d2d08423d906
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Mar 15 22:40:26 2013 -0400

    Revert "cleanup sqlflex and sqlbison options"
    
    This reverts commit b659d7c33fcacdbbef86557e78f071abf94bead2.
    
    That commit appears to have broken the build on Linux. Reverting it
    fixes it.
    
    Change-Id: I70d62c04e9fb284ed2c360c0976d0cbeafc2ddc2

diff --git a/connectivity/Library_dbtools.mk b/connectivity/Library_dbtools.mk
index 4228eb9..1e063ea 100644
--- a/connectivity/Library_dbtools.mk
+++ b/connectivity/Library_dbtools.mk
@@ -66,6 +66,8 @@ $(eval $(call gb_Library_use_libraries,dbtools,\
 ))
 endif
 
+#connectivity/source/commontools/RowFunctionParser.cxx disable optimization?
+
 $(eval $(call gb_Library_add_noexception_objects,dbtools,\
 	connectivity/source/simpledbt/refbase \
 ))
@@ -74,10 +76,16 @@ $(eval $(call gb_Library_add_grammars,dbtools,\
 	connectivity/source/parse/sqlbison \
 ))
 
+$(call gb_YaccTarget_get_target,connectivity/source/parse/sqlbison) : T_YACCFLAGS := -d -l -pSQLyy -bsql
+
 $(eval $(call gb_Library_add_scanners,dbtools,\
-	connectivity/source/parse/sqlflex \
+connectivity/source/parse/sqlflex \
 ))
 
+$(call gb_LexTarget_get_scanner_target,connectivity/source/parse/sqlflex) : T_LEXFLAGS := -i -8 -PSQLyy -L
+
+
+
 $(eval $(call gb_Library_add_exception_objects,dbtools,\
 	connectivity/source/commontools/AutoRetrievingBase \
 	connectivity/source/commontools/BlobHelper \
diff --git a/connectivity/source/parse/sqlbison.y b/connectivity/source/parse/sqlbison.y
index 017428b..0bb7c31 100644
--- a/connectivity/source/parse/sqlbison.y
+++ b/connectivity/source/parse/sqlbison.y
@@ -1,8 +1,4 @@
 %token-table
-%defines
-%no-lines
-%define api.prefix SQLyy
-%file-prefix "sql"
 %{
 /*
  * This file is part of the LibreOffice project.
diff --git a/connectivity/source/parse/sqlflex.l b/connectivity/source/parse/sqlflex.l
index 1ded0e2..d17128e 100644
--- a/connectivity/source/parse/sqlflex.l
+++ b/connectivity/source/parse/sqlflex.l
@@ -1,6 +1,3 @@
-%option case-insensitive
-%option 8bit
-%option prefix="SQLyy"
 %{
 
 //
commit d02f456d02e1c92f6fa0a5402c18cd2409e43f91
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Mar 15 22:12:04 2013 -0400

    Remove incorrect comment.
    
    Change-Id: I2b6773e0b8203d7781ac8037b5d51ebb5bba5047

diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index a4a2fc3..f5a7802 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -98,10 +98,9 @@ class ScColumn
     // values; either the reall text widths or TEXTWIDTH_DIRTY.
     TextWidthType maTextWidths;
 
-    // Empty elements represent unknown script types. For now, we store script
-    // type values as unsigned shorts. Once multi_type_vector supports char
-    // and unsigned char (due in 0.7.2), we can switch to that to save storage
-    // space.
+    // For now, we store script type values as unsigned shorts. Once
+    // multi_type_vector supports char and unsigned char (due in 0.7.2), we
+    // can switch to that to save storage space.
     ScriptType maScriptTypes;
 
     SCCOL           nCol;
commit e595fb27c6ba64fd5112d4fd919067f0205ccffa
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Mar 15 21:22:02 2013 -0400

    Actually unknown script type doesn't equal empty script type (0).
    
    Let's differentiate the two types.  A new cell starts with an unknown
    script type, whereas empty cells have a script type of 0 (empty).
    
    Change-Id: Id66857100ed213c5cfc37e48789448d94e97a5d2

diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index 404dc48..e8a39ad 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -61,23 +61,23 @@ ScNeededSizeOptions::ScNeededSizeOptions() :
 
 void ScColumn::SwapScriptTypes( ScriptType& rSrc, SCROW nSrcRow, ScriptType& rDest, SCROW nDestRow )
 {
-    unsigned short nSrcVal = SC_SCRIPTTYPE_UNKNOWN;
-    unsigned short nDestVal = SC_SCRIPTTYPE_UNKNOWN;
+    unsigned short nSrcVal = 0;
+    unsigned short nDestVal = 0;
 
     if (!rSrc.is_empty(nSrcRow))
         nSrcVal = rSrc.get<unsigned short>(nSrcRow);
     if (!rDest.is_empty(nDestRow))
         nDestVal = rDest.get<unsigned short>(nDestRow);
 
-    if (nDestVal == SC_SCRIPTTYPE_UNKNOWN)
-        rSrc.set_empty(nSrcRow, nSrcRow);
-    else
+    if (nDestVal)
         rSrc.set(nSrcRow, nDestVal);
-
-    if (nSrcVal == SC_SCRIPTTYPE_UNKNOWN)
-        rDest.set_empty(nDestRow, nDestRow);
     else
+        rSrc.set_empty(nSrcRow, nSrcRow);
+
+    if (nSrcVal)
         rDest.set(nDestRow, nSrcVal);
+    else
+        rDest.set_empty(nDestRow, nDestRow);
 }
 
 ScColumn::ScColumn() :
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index 92263af..3301542 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -1509,7 +1509,7 @@ void ScColumn::SetTextWidth(SCROW nRow, unsigned short nWidth)
 sal_uInt8 ScColumn::GetScriptType( SCROW nRow ) const
 {
     if (!ValidRow(nRow) || maScriptTypes.is_empty(nRow))
-        return SC_SCRIPTTYPE_UNKNOWN;
+        return 0;
 
     return maScriptTypes.get<unsigned short>(nRow);
 }
@@ -1519,8 +1519,7 @@ void ScColumn::SetScriptType( SCROW nRow, sal_uInt8 nType )
     if (!ValidRow(nRow))
         return;
 
-    if (nType == SC_SCRIPTTYPE_UNKNOWN)
-        // empty element represents unknown script type.
+    if (!nType)
         maScriptTypes.set_empty(nRow, nRow);
     else
         maScriptTypes.set<unsigned short>(nRow, nType);
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 3c1dc96..28340a2 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -97,7 +97,7 @@ void ScColumn::Insert( SCROW nRow, ScBaseCell* pNewCell )
         }
 
         maTextWidths.set<unsigned short>(nRow, TEXTWIDTH_DIRTY);
-        maScriptTypes.set_empty(nRow, nRow); // empty element represents unknown script state.
+        maScriptTypes.set<unsigned short>(nRow, SC_SCRIPTTYPE_UNKNOWN);
         CellStorageModified();
     }
     // When we insert from the Clipboard we still have wrong (old) References!
@@ -143,7 +143,7 @@ void ScColumn::Append( SCROW nRow, ScBaseCell* pCell )
     maItems.back().nRow  = nRow;
 
     maTextWidths.set<unsigned short>(nRow, TEXTWIDTH_DIRTY);
-    maScriptTypes.set_empty(nRow, nRow); // empty element represents unknown script state.
+    maScriptTypes.set<unsigned short>(nRow, SC_SCRIPTTYPE_UNKNOWN);
     CellStorageModified();
 }
 
@@ -1447,7 +1447,7 @@ bool ScColumn::SetString( SCROW nRow, SCTAB nTabP, const String& rString,
                 pOldCell->Delete();
                 maItems[i].pCell = pNewCell; // Replace
                 maTextWidths.set<unsigned short>(nRow, TEXTWIDTH_DIRTY);
-                maScriptTypes.set_empty(nRow, nRow); // empty element represents unknown script state.
+                maScriptTypes.set<unsigned short>(nRow, SC_SCRIPTTYPE_UNKNOWN);
                 CellStorageModified();
 
                 if ( pNewCell->GetCellType() == CELLTYPE_FORMULA )
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index 1d75d56..16d4277 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -5717,7 +5717,7 @@ sal_uInt8 ScDocument::GetScriptType( const ScAddress& rPos ) const
     if (ValidTab(nTab) && nTab < static_cast<SCTAB>(maTabs.size()) && maTabs[nTab])
         return maTabs[nTab]->GetScriptType(rPos.Col(), rPos.Row());
 
-    return SC_SCRIPTTYPE_UNKNOWN;
+    return 0;
 }
 
 void ScDocument::SetScriptType( const ScAddress& rPos, sal_uInt8 nType )
diff --git a/sc/source/core/data/table1.cxx b/sc/source/core/data/table1.cxx
index cfe0e57..38d705c 100644
--- a/sc/source/core/data/table1.cxx
+++ b/sc/source/core/data/table1.cxx
@@ -2083,7 +2083,7 @@ sal_uLong ScTable::AddCondFormat( ScConditionalFormat* pNew )
 sal_uInt8 ScTable::GetScriptType( SCCOL nCol, SCROW nRow ) const
 {
     if (!ValidCol(nCol))
-        return SC_SCRIPTTYPE_UNKNOWN;
+        return 0;
 
     return aCol[nCol].GetScriptType(nRow);
 }
commit e022d9eb46f5de13306da4a61b9899c79cf6170b
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Mar 15 20:51:17 2013 -0400

    ScBaseCell::nScriptType is no more.
    
    Change-Id: Ic523bc5f8bf2c678cb7cf2115848d16845d2eeeb

diff --git a/sc/inc/cell.hxx b/sc/inc/cell.hxx
index 214fa2d..4f09baa 100644
--- a/sc/inc/cell.hxx
+++ b/sc/inc/cell.hxx
@@ -100,9 +100,6 @@ public:
         Returns false for formula cells returning nothing, use HasEmptyData() for that. */
     bool            IsBlank() const;
 
-    inline sal_uInt8     GetScriptType() const { return nScriptType; }
-    inline void     SetScriptType( sal_uInt8 nNew ) { nScriptType = nNew; }
-
     /** Returns true, if the cell contains a broadcaster. */
     inline bool     HasBroadcaster() const { return mpBroadcaster != 0; }
     /** Returns the pointer to the cell broadcaster. */
@@ -144,7 +141,6 @@ private:
 
 protected:
     sal_uInt8            eCellType;      // enum CellType - sal_uInt8 spart Speicher
-    sal_uInt8            nScriptType;
 };
 
 // ============================================================================
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index d4425d5..175bf14 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -1176,9 +1176,8 @@ public:
     SC_DLLPUBLIC const ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator >& GetBreakIterator();
     bool            HasStringWeakCharacters( const rtl::OUString& rString );
     SC_DLLPUBLIC sal_uInt8          GetStringScriptType( const rtl::OUString& rString );
-    SC_DLLPUBLIC sal_uInt8          GetCellScriptType( ScBaseCell* pCell, sal_uLong nNumberFormat );
+    SC_DLLPUBLIC sal_uInt8 GetCellScriptType( const ScAddress& rPos, ScBaseCell* pCell, sal_uLong nNumberFormat );
     SC_DLLPUBLIC sal_uInt8 GetScriptType( SCCOL nCol, SCROW nRow, SCTAB nTab, ScBaseCell* pCell );
-    sal_uInt8 GetScriptType( SCCOL nCol, SCROW nRow, SCTAB nTab ) const;
 
     bool            HasDetectiveOperations() const;
     void            AddDetectiveOperation( const ScDetOpData& rData );
diff --git a/sc/source/core/data/cell.cxx b/sc/source/core/data/cell.cxx
index 0b990a8..e37fbd2 100644
--- a/sc/source/core/data/cell.cxx
+++ b/sc/source/core/data/cell.cxx
@@ -70,15 +70,13 @@ IMPL_FIXEDMEMPOOL_NEWDEL( ScNoteCell )
 
 ScBaseCell::ScBaseCell( CellType eNewType ) :
     mpBroadcaster( 0 ),
-    eCellType( sal::static_int_cast<sal_uInt8>(eNewType) ),
-    nScriptType( SC_SCRIPTTYPE_UNKNOWN )
+    eCellType( sal::static_int_cast<sal_uInt8>(eNewType) )
 {
 }
 
 ScBaseCell::ScBaseCell( const ScBaseCell& rCell ) :
     mpBroadcaster( 0 ),
-    eCellType( rCell.eCellType ),
-    nScriptType( SC_SCRIPTTYPE_UNKNOWN )
+    eCellType( rCell.eCellType )
 {
 }
 
@@ -1002,7 +1000,7 @@ void ScFormulaCell::Compile( const rtl::OUString& rFormula, bool bNoListening,
     {
         bChanged = true;
         pDocument->SetTextWidth(aPos, TEXTWIDTH_DIRTY);
-        SetScriptType( SC_SCRIPTTYPE_UNKNOWN );
+        pDocument->SetScriptType(aPos, SC_SCRIPTTYPE_UNKNOWN);
     }
     if ( bWasInFormulaTree )
         pDocument->PutInFormulaTree( this );
@@ -1096,7 +1094,7 @@ void ScFormulaCell::CompileXML( ScProgress& rProgress )
     {
         bChanged = true;
         pDocument->SetTextWidth(aPos, TEXTWIDTH_DIRTY);
-        SetScriptType( SC_SCRIPTTYPE_UNKNOWN );
+        pDocument->SetScriptType(aPos, SC_SCRIPTTYPE_UNKNOWN);
     }
 
     //  Same as in Load: after loading, it must be known if ocMacro is in any formula
@@ -1367,7 +1365,7 @@ void ScFormulaCell::Interpret()
                             pIterCell->aResult.SetResultError( errNoConvergence);
                             pIterCell->bChanged = true;
                             pDocument->SetTextWidth(pIterCell->aPos, TEXTWIDTH_DIRTY);
-                            pIterCell->SetScriptType( SC_SCRIPTTYPE_UNKNOWN);
+                            pDocument->SetScriptType(pIterCell->aPos, SC_SCRIPTTYPE_UNKNOWN);
                         }
                     }
                     // End this iteration and remove entries.
@@ -1662,7 +1660,7 @@ void ScFormulaCell::InterpretTail( ScInterpretTailParameter eTailParam )
         if( bChanged )
         {
             pDocument->SetTextWidth(aPos, TEXTWIDTH_DIRTY);
-            SetScriptType( SC_SCRIPTTYPE_UNKNOWN );
+            pDocument->SetScriptType(aPos, SC_SCRIPTTYPE_UNKNOWN);
         }
         if (bContentChanged && pDocument->IsStreamValid(aPos.Tab()))
         {
diff --git a/sc/source/core/data/documen6.cxx b/sc/source/core/data/documen6.cxx
index d0b5aa2..507f7f9 100644
--- a/sc/source/core/data/documen6.cxx
+++ b/sc/source/core/data/documen6.cxx
@@ -114,12 +114,12 @@ sal_uInt8 ScDocument::GetStringScriptType( const rtl::OUString& rString )
     return nRet;
 }
 
-sal_uInt8 ScDocument::GetCellScriptType( ScBaseCell* pCell, sal_uLong nNumberFormat )
+sal_uInt8 ScDocument::GetCellScriptType( const ScAddress& rPos, ScBaseCell* pCell, sal_uLong nNumberFormat )
 {
     if ( !pCell )
         return 0;       // empty
 
-    sal_uInt8 nStored = pCell->GetScriptType();
+    sal_uInt8 nStored = GetScriptType(rPos);
     if ( nStored != SC_SCRIPTTYPE_UNKNOWN )         // stored value valid?
         return nStored;                             // use stored value
 
@@ -129,25 +129,17 @@ sal_uInt8 ScDocument::GetCellScriptType( ScBaseCell* pCell, sal_uLong nNumberFor
 
     sal_uInt8 nRet = GetStringScriptType( aStr );
 
-    pCell->SetScriptType( nRet );       // store for later calls
+    SetScriptType(rPos, nRet);       // store for later calls
 
     return nRet;
 }
 
 sal_uInt8 ScDocument::GetScriptType( SCCOL nCol, SCROW nRow, SCTAB nTab, ScBaseCell* pCell )
 {
-    // if cell is not passed, take from document
-
-    if (!pCell)
-    {
-        pCell = GetCell( ScAddress( nCol, nRow, nTab ) );
-        if ( !pCell )
-            return 0;       // empty
-    }
-
     // if script type is set, don't have to get number formats
 
-    sal_uInt8 nStored = pCell->GetScriptType();
+    ScAddress aPos(nCol, nRow, nTab);
+    sal_uInt8 nStored = GetScriptType(aPos);
     if ( nStored != SC_SCRIPTTYPE_UNKNOWN )         // stored value valid?
         return nStored;                             // use stored value
 
@@ -160,7 +152,8 @@ sal_uInt8 ScDocument::GetScriptType( SCCOL nCol, SCROW nRow, SCTAB nTab, ScBaseC
         pCondSet = GetCondResult( nCol, nRow, nTab );
 
     sal_uLong nFormat = pPattern->GetNumberFormat( xPoolHelper->GetFormTable(), pCondSet );
-    return GetCellScriptType( pCell, nFormat );
+
+    return GetCellScriptType(aPos, pCell, nFormat);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index b366aa4..1d75d56 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -5784,12 +5784,4 @@ void ScDocument::SetAutoNameCache(  ScAutoNameCache* pCache )
     pAutoNameCache = pCache;
 }
 
-sal_uInt8 ScDocument::GetScriptType( SCCOL nCol, SCROW nRow, SCTAB nTab ) const
-{
-    if (!ValidTab(nTab) || nTab >= static_cast<SCTAB>(maTabs.size()) || !maTabs[nTab])
-        return SC_SCRIPTTYPE_UNKNOWN;
-
-    return maTabs[nTab]->GetScriptType(nCol, nRow);
-}
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/table5.cxx b/sc/source/core/data/table5.cxx
index 264bba8..474cc19 100644
--- a/sc/source/core/data/table5.cxx
+++ b/sc/source/core/data/table5.cxx
@@ -1159,7 +1159,7 @@ void ScTable::InvalidateTextWidth( const ScAddress* pAdrFrom, const ScAddress* p
         rCol.SetTextWidth(nRow, TEXTWIDTH_DIRTY);
 
         if ( bNumFormatChanged )
-            pCell->SetScriptType( SC_SCRIPTTYPE_UNKNOWN );
+            rCol.SetScriptType(nRow, SC_SCRIPTTYPE_UNKNOWN);
 
         if ( bBroadcast )
         {   // nur bei CalcAsShown
@@ -1201,7 +1201,7 @@ void ScTable::InvalidateTextWidth( const ScAddress* pAdrFrom, const ScAddress* p
             }
 
             if ( bNumFormatChanged )
-                pCell->SetScriptType( SC_SCRIPTTYPE_UNKNOWN );
+                aCol[nCol].SetScriptType(nRow, SC_SCRIPTTYPE_UNKNOWN);
 
             if ( bBroadcast )
             {   // nur bei CalcAsShown
diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx
index e7464af..7126f14 100644
--- a/sc/source/filter/xml/xmlcelli.cxx
+++ b/sc/source/filter/xml/xmlcelli.cxx
@@ -1093,9 +1093,10 @@ void ScXMLTableRowCellContext::PutValueCell( const ScAddress& rCurrentPos )
         // will be reset when the style is applied.
 
         ScBaseCell* pNewCell = new ScValueCell(fValue);
+        ScDocument* pDoc = rXMLImport.GetDocument();
         if ( rXMLImport.IsLatinDefaultStyle() )
-            pNewCell->SetScriptType( SCRIPTTYPE_LATIN );
-        rXMLImport.GetDocument()->PutCell(
+            pDoc->SetScriptType(rCurrentPos, SCRIPTTYPE_LATIN);
+        pDoc->PutCell(
             rCurrentPos.Col(), rCurrentPos.Row(),
             rCurrentPos.Tab(), pNewCell );
     }
diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx
index 5f537df..2f53d18 100644
--- a/sc/source/ui/view/output2.cxx
+++ b/sc/source/ui/view/output2.cxx
@@ -1598,7 +1598,8 @@ void ScOutputData::DrawStrings( sal_Bool bPixelToLogic )
                     }
 
                     sal_uInt8 nScript = mpDoc->GetCellScriptType(
-                        pCell, pPattern->GetNumberFormat(mpDoc->GetFormatTable(), pCondSet));
+                        ScAddress(nCellX, nCellY, nTab), pCell,
+                        pPattern->GetNumberFormat(mpDoc->GetFormatTable(), pCondSet));
 
                     if (nScript == 0)
                         nScript = ScGlobal::GetDefaultScriptType();
commit 083c0a26ee765cb4753249178559ae84e12a7227
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Mar 15 20:14:57 2013 -0400

    Accessor methods in ScDocument for cell text's script types.
    
    Change-Id: I23349ba6411bd74247e150f871f363b0eacda0a2

diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index cb8aac7..d4425d5 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -1849,6 +1849,9 @@ public:
     sal_uInt16 GetTextWidth( const ScAddress& rPos ) const;
     void SetTextWidth( const ScAddress& rPos, sal_uInt16 nWidth );
 
+    sal_uInt8 GetScriptType( const ScAddress& rPos ) const;
+    void SetScriptType( const ScAddress& rPos, sal_uInt8 nType );
+
 private: // CLOOK-Impl-methods
 
     /**
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index ec9c7c6..b366aa4 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -5711,6 +5711,22 @@ void ScDocument::SetTextWidth( const ScAddress& rPos, sal_uInt16 nWidth )
         maTabs[nTab]->SetTextWidth(rPos.Col(), rPos.Row(), nWidth);
 }
 
+sal_uInt8 ScDocument::GetScriptType( const ScAddress& rPos ) const
+{
+    SCTAB nTab = rPos.Tab();
+    if (ValidTab(nTab) && nTab < static_cast<SCTAB>(maTabs.size()) && maTabs[nTab])
+        return maTabs[nTab]->GetScriptType(rPos.Col(), rPos.Row());
+
+    return SC_SCRIPTTYPE_UNKNOWN;
+}
+
+void ScDocument::SetScriptType( const ScAddress& rPos, sal_uInt8 nType )
+{
+    SCTAB nTab = rPos.Tab();
+    if (ValidTab(nTab) && nTab < static_cast<SCTAB>(maTabs.size()) && maTabs[nTab])
+        maTabs[nTab]->SetScriptType(rPos.Col(), rPos.Row(), nType);
+}
+
 void ScDocument::EnableUndo( bool bVal )
 {
     // The undo manager increases lock count every time undo is disabled.
commit 61dc77d7ecfdd72770d5b20db39e6c46cfdbd4a8
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Mar 15 17:55:55 2013 -0400

    More script type handling.
    
    Basically I'm just following maTextWidths' call sites. Some things are
    handled differently though for script types, since empty elements may
    correspond with either empty or non-empty cells (unlike the text width
    array).
    
    Change-Id: If98bcb81e9048b24d75b2bc9fc972a7d74cbbf89

diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 1b01787..a4a2fc3 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -128,6 +128,8 @@ friend class ScColumnTextWidthIterator;
     ScColumn(const ScColumn&); // disabled
     ScColumn& operator= (const ScColumn&); // disabled
 
+    static void SwapScriptTypes( ScriptType& rSrc, SCROW nSrcRow, ScriptType& rDest, SCROW nDestRow );
+
 public:
                 ScColumn();
                 ~ScColumn();
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index c73fa94..404dc48 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -59,6 +59,27 @@ ScNeededSizeOptions::ScNeededSizeOptions() :
 {
 }
 
+void ScColumn::SwapScriptTypes( ScriptType& rSrc, SCROW nSrcRow, ScriptType& rDest, SCROW nDestRow )
+{
+    unsigned short nSrcVal = SC_SCRIPTTYPE_UNKNOWN;
+    unsigned short nDestVal = SC_SCRIPTTYPE_UNKNOWN;
+
+    if (!rSrc.is_empty(nSrcRow))
+        nSrcVal = rSrc.get<unsigned short>(nSrcRow);
+    if (!rDest.is_empty(nDestRow))
+        nDestVal = rDest.get<unsigned short>(nDestRow);
+
+    if (nDestVal == SC_SCRIPTTYPE_UNKNOWN)
+        rSrc.set_empty(nSrcRow, nSrcRow);
+    else
+        rSrc.set(nSrcRow, nDestVal);
+
+    if (nSrcVal == SC_SCRIPTTYPE_UNKNOWN)
+        rDest.set_empty(nDestRow, nDestRow);
+    else
+        rDest.set(nDestRow, nSrcVal);
+}
+
 ScColumn::ScColumn() :
     maTextWidths(MAXROWCOUNT),
     maScriptTypes(MAXROWCOUNT),
@@ -865,10 +886,7 @@ void ScColumn::SwapRow(SCROW nRow1, SCROW nRow2)
             maTextWidths.set<unsigned short>(nRow2, nVal1);
 
             // Swap script types.
-            nVal1 = maScriptTypes.get<unsigned short>(nRow1);
-            nVal2 = maScriptTypes.get<unsigned short>(nRow2);
-            maScriptTypes.set(nRow1, nVal2);
-            maScriptTypes.set(nRow2, nVal1);
+            SwapScriptTypes(maScriptTypes, nRow1, maScriptTypes, nRow2);
 
             CellStorageModified();
         }
@@ -1028,10 +1046,7 @@ void ScColumn::SwapCell( SCROW nRow, ScColumn& rCol)
         rCol.maTextWidths.set<unsigned short>(nRow, nVal1);
 
         // Swap script types.
-        nVal1 = maScriptTypes.get<unsigned short>(nRow);
-        nVal2 = rCol.maScriptTypes.get<unsigned short>(nRow);
-        maScriptTypes.set(nRow, nVal2);
-        rCol.maScriptTypes.set(nRow, nVal1);
+        SwapScriptTypes(maScriptTypes, nRow, rCol.maScriptTypes, nRow);
 
         CellStorageModified();
         rCol.CellStorageModified();
@@ -1206,7 +1221,10 @@ void ScColumn::InsertRow( SCROW nStartRow, SCSIZE nSize )
     pDocument->SetAutoCalc( bOldAutoCalc );
 
     maTextWidths.insert_empty(nStartRow, nSize);
+    maTextWidths.resize(MAXROWCOUNT);
     maScriptTypes.insert_empty(nStartRow, nSize);
+    maScriptTypes.resize(MAXROWCOUNT);
+
     CellStorageModified();
 }
 
@@ -1615,6 +1633,7 @@ void ScColumn::SwapCol(ScColumn& rCol)
 {
     maItems.swap(rCol.maItems);
     maTextWidths.swap(rCol.maTextWidths);
+    maScriptTypes.swap(rCol.maScriptTypes);
 
     CellStorageModified();
     rCol.CellStorageModified();
@@ -1718,6 +1737,7 @@ void ScColumn::MoveTo(SCROW nStartRow, SCROW nEndRow, ScColumn& rCol)
         if (bErased)
         {
             maTextWidths.set_empty(nStartRow, nEndRow);
+            maScriptTypes.set_empty(nStartRow, nEndRow);
             CellStorageModified();
         }
     }
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 9537bf6..3c1dc96 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -97,6 +97,7 @@ void ScColumn::Insert( SCROW nRow, ScBaseCell* pNewCell )
         }
 
         maTextWidths.set<unsigned short>(nRow, TEXTWIDTH_DIRTY);
+        maScriptTypes.set_empty(nRow, nRow); // empty element represents unknown script state.
         CellStorageModified();
     }
     // When we insert from the Clipboard we still have wrong (old) References!
@@ -142,6 +143,7 @@ void ScColumn::Append( SCROW nRow, ScBaseCell* pCell )
     maItems.back().nRow  = nRow;
 
     maTextWidths.set<unsigned short>(nRow, TEXTWIDTH_DIRTY);
+    maScriptTypes.set_empty(nRow, nRow); // empty element represents unknown script state.
     CellStorageModified();
 }
 
@@ -166,6 +168,7 @@ void ScColumn::Delete( SCROW nRow )
             pNoteCell->Delete();
             maItems.erase( maItems.begin() + nIndex);
             maTextWidths.set_empty(nRow, nRow);
+            maScriptTypes.set_empty(nRow, nRow);
             // Should we free memory here (delta)? It'll be slower!
         }
         pCell->EndListeningTo( pDocument );
@@ -190,6 +193,7 @@ void ScColumn::DeleteAtIndex( SCSIZE nIndex )
     pCell->Delete();
 
     maTextWidths.set_empty(nRow, nRow);
+    maScriptTypes.set_empty(nRow, nRow);
     CellStorageModified();
 }
 
@@ -203,6 +207,8 @@ void ScColumn::FreeAll()
     // Text width should keep a logical empty range of 0-MAXROW when the cell array is empty.
     maTextWidths.clear();
     maTextWidths.resize(MAXROWCOUNT);
+    maScriptTypes.clear();
+    maScriptTypes.resize(MAXROWCOUNT);
     CellStorageModified();
 }
 
@@ -264,6 +270,8 @@ void ScColumn::DeleteRow( SCROW nStartRow, SCSIZE nSize )
     // Shift the text width array too (before the broadcast).
     maTextWidths.erase(nStartRow, nEndRow);
     maTextWidths.resize(MAXROWCOUNT);
+    maScriptTypes.erase(nStartRow, nEndRow);
+    maScriptTypes.resize(MAXROWCOUNT);
 
     ScAddress aAdr( nCol, 0, nTab );
     ScHint aHint( SC_HINT_DATACHANGED, aAdr, NULL ); // only areas (ScBaseCell* == NULL)
@@ -508,6 +516,7 @@ void ScColumn::DeleteRange( SCSIZE nStartIndex, SCSIZE nEndIndex, sal_uInt16 nDe
             maItems.erase(itErase, itEraseEnd);
 
             maTextWidths.set_empty(nStartRow, nEndRow);
+            maScriptTypes.set_empty(nStartRow, nEndRow);
 
             nEndSegment = nStartSegment;
         }
@@ -1438,6 +1447,7 @@ bool ScColumn::SetString( SCROW nRow, SCTAB nTabP, const String& rString,
                 pOldCell->Delete();
                 maItems[i].pCell = pNewCell; // Replace
                 maTextWidths.set<unsigned short>(nRow, TEXTWIDTH_DIRTY);
+                maScriptTypes.set_empty(nRow, nRow); // empty element represents unknown script state.
                 CellStorageModified();
 
                 if ( pNewCell->GetCellType() == CELLTYPE_FORMULA )
commit 86f704a2e984073c217dd549836bec9265afad58
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Mar 15 16:46:36 2013 -0400

    Started handling the cell text script types. Still work in progress.
    
    Change-Id: I6af668894d61d33de6697fe45fce1515520d4bfa

diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 2469a6c..1b01787 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -418,6 +418,8 @@ private:
      * Call this only from those methods where maItems is modified directly.
      */
     void CellStorageModified();
+
+    void CopyScriptTypesToDocument(SCROW nRow1, SCROW nRow2, ScColumn& rDestCol) const;
 };
 
 
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index b472e9e..c73fa94 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -863,6 +863,13 @@ void ScColumn::SwapRow(SCROW nRow1, SCROW nRow2)
             unsigned short nVal2 = maTextWidths.get<unsigned short>(nRow2);
             maTextWidths.set<unsigned short>(nRow1, nVal2);
             maTextWidths.set<unsigned short>(nRow2, nVal1);
+
+            // Swap script types.
+            nVal1 = maScriptTypes.get<unsigned short>(nRow1);
+            nVal2 = maScriptTypes.get<unsigned short>(nRow2);
+            maScriptTypes.set(nRow1, nVal2);
+            maScriptTypes.set(nRow2, nVal1);
+
             CellStorageModified();
         }
         else
@@ -881,6 +888,7 @@ void ScColumn::SwapRow(SCROW nRow1, SCROW nRow2)
                 // remove ColEntry at old position
                 maItems.erase( maItems.begin() + nIndex1 );
                 maTextWidths.set_empty(nRow1, nRow1);
+                maScriptTypes.set_empty(nRow1, nRow1);
             }
 
             // Empty text width at the cell 1 position.  For now, we don't
@@ -1019,6 +1027,12 @@ void ScColumn::SwapCell( SCROW nRow, ScColumn& rCol)
         maTextWidths.set<unsigned short>(nRow, nVal2);
         rCol.maTextWidths.set<unsigned short>(nRow, nVal1);
 
+        // Swap script types.
+        nVal1 = maScriptTypes.get<unsigned short>(nRow);
+        nVal2 = rCol.maScriptTypes.get<unsigned short>(nRow);
+        maScriptTypes.set(nRow, nVal2);
+        rCol.maScriptTypes.set(nRow, nVal1);
+
         CellStorageModified();
         rCol.CellStorageModified();
     }
@@ -1038,6 +1052,7 @@ void ScColumn::SwapCell( SCROW nRow, ScColumn& rCol)
         }
 
         maTextWidths.set_empty(nRow, nRow);
+        maScriptTypes.set_empty(nRow, nRow);
         CellStorageModified();
 
         // We don't transfer the text width to the destination column because
@@ -1191,6 +1206,7 @@ void ScColumn::InsertRow( SCROW nStartRow, SCSIZE nSize )
     pDocument->SetAutoCalc( bOldAutoCalc );
 
     maTextWidths.insert_empty(nStartRow, nSize);
+    maScriptTypes.insert_empty(nStartRow, nSize);
     CellStorageModified();
 }
 
@@ -1276,6 +1292,8 @@ void ScColumn::CopyStaticToDocument(SCROW nRow1, SCROW nRow2, ScColumn& rDestCol
     if (nRow1 > nRow2)
         return;
 
+    CopyScriptTypesToDocument(nRow1, nRow2, rDestCol);
+
     // First, clear the destination column for the row range specified.
     std::vector<ColEntry>::iterator it, itEnd;
 
@@ -1353,6 +1371,8 @@ void ScColumn::CopyStaticToDocument(SCROW nRow1, SCROW nRow2, ScColumn& rDestCol
     // destination column shouldn't have any cells within the specified range.
     it = std::find_if(rDestCol.maItems.begin(), rDestCol.maItems.end(), FindAboveRow(nRow2));
     rDestCol.maItems.insert(it, aCopied.begin(), aCopied.end());
+
+    // Set text width values dirty for all non-empty cell positions.
     it = aCopied.begin();
     itEnd = aCopied.end();
     for (; it != itEnd; ++it)
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index 2715fb9..92263af 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -1433,6 +1433,69 @@ void ScColumn::CellStorageModified()
 #endif
 }
 
+void ScColumn::CopyScriptTypesToDocument(SCROW nRow1, SCROW nRow2, ScColumn& rDestCol) const
+{
+    rDestCol.maScriptTypes.set_empty(nRow1, nRow2); // Empty the destination range first.
+
+    ScriptType::const_iterator itBlk = maScriptTypes.begin(), itBlkEnd = maScriptTypes.end();
+
+    // Locate the top row position.
+    size_t nOffsetInBlock = 0;
+    size_t nBlockStart = 0, nBlockEnd = 0, nRowPos = static_cast<size_t>(nRow1);
+    for (; itBlk != itBlkEnd; ++itBlk)
+    {
+        nBlockEnd = nBlockStart + itBlk->size;
+        if (nBlockStart <= nRowPos && nRowPos <= nBlockEnd)
+        {
+            // Found.
+            nOffsetInBlock = nRowPos - nBlockStart;
+            break;
+        }
+    }
+
+    if (itBlk == itBlkEnd)
+        // Specified range not found. Bail out.
+        return;
+
+    nRowPos = static_cast<size_t>(nRow2); // End row position.
+
+    // Keep copying until we hit the end row position.
+    mdds::mtv::ushort_element_block::const_iterator itData, itDataEnd;
+    for (; itBlk != itBlkEnd; ++itBlk, nBlockStart = nBlockEnd, nOffsetInBlock = 0)
+    {
+        nBlockEnd = nBlockStart + itBlk->size;
+        if (!itBlk->data)
+        {
+            // Empty block.
+            if (nBlockStart <= nRowPos && nRowPos <= nBlockEnd)
+                // This block contains the end row.
+                rDestCol.maScriptTypes.set_empty(nBlockStart + nOffsetInBlock, nRowPos);
+            else
+                rDestCol.maScriptTypes.set_empty(nBlockStart + nOffsetInBlock, nBlockEnd-1);
+
+            continue;
+        }
+
+        // Non-empty block.
+        itData = mdds::mtv::ushort_element_block::begin(*itBlk->data);
+        itDataEnd = mdds::mtv::ushort_element_block::end(*itBlk->data);
+        std::advance(itData, nOffsetInBlock);
+
+        if (nBlockStart <= nRowPos && nRowPos <= nBlockEnd)
+        {
+            // This block contains the end row. Only copy partially.
+            size_t nOffset = nRowPos - nBlockStart + 1;
+            itDataEnd = mdds::mtv::ushort_element_block::begin(*itBlk->data);
+            std::advance(itDataEnd, nOffset);
+
+            rDestCol.maScriptTypes.set(nBlockStart + nOffsetInBlock, itData, itDataEnd);
+            break;
+        }
+
+        rDestCol.maScriptTypes.set(nBlockStart + nOffsetInBlock, itData, itDataEnd);
+    }
+}
+
 unsigned short ScColumn::GetTextWidth(SCROW nRow) const
 {
     return maTextWidths.get<unsigned short>(nRow);
commit a9ec5f51e13adef2cc2d03e8073e9b6013598309
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Mar 15 15:15:57 2013 -0400

    Unit test to catch the out-of-sync text width bug I just fixed today.
    
    Change-Id: I82d4199d7f8b7ba2dadb734a808dac53e845538f

diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index f34dfb5..ec94652 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -6102,6 +6102,22 @@ void Test::testCellTextWidth()
         CPPUNIT_ASSERT_MESSAGE("Iterator should have ended.", !pIter->hasCell());
     }
 
+    // Delete row 2 which shifts all cells below row 2 upward. After this, we
+    // should only have cells at rows 0 and 17.
+    m_pDoc->DeleteRow(0, 0, MAXCOL, MAXTAB, 2, 1);
+    {
+        // Full range again.
+        pIter.reset(new ScColumnTextWidthIterator(*m_pDoc, aTopCell, MAXROW));
+        SCROW aRows[] = { 0, 17 };
+        size_t n = SAL_N_ELEMENTS(aRows);
+        for (size_t i = 0; i < n; ++i, pIter->next())
+        {
+            CPPUNIT_ASSERT_MESSAGE("Cell expected, but not there.", pIter->hasCell());
+            CPPUNIT_ASSERT_EQUAL(aRows[i], pIter->getPos());
+        }
+        CPPUNIT_ASSERT_MESSAGE("Iterator should have ended.", !pIter->hasCell());
+    }
+
     m_pDoc->DeleteTab(0);
 }
 
commit 6b51a4e7a3f511fc1dce0b21fe7926d303e9afbf
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Mar 15 15:06:25 2013 -0400

    Set up new container to store cell text's script type.
    
    Change-Id: I0330dea1b2f85a8ba12cb232ab8b4263607ba225

diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index dd14b6a..2469a6c 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -91,12 +91,19 @@ struct ColEntry
 class ScColumn
 {
     typedef mdds::multi_type_vector<mdds::mtv::element_block_func> TextWidthType;
+    typedef mdds::multi_type_vector<mdds::mtv::element_block_func> ScriptType;
 
     // Only stores empty or unsigned short values.  Empty values correspond
     // with empty cells. All non-empty cell positions must have unsigned short
     // values; either the reall text widths or TEXTWIDTH_DIRTY.
     TextWidthType maTextWidths;
 
+    // Empty elements represent unknown script types. For now, we store script
+    // type values as unsigned shorts. Once multi_type_vector supports char
+    // and unsigned char (due in 0.7.2), we can switch to that to save storage
+    // space.
+    ScriptType maScriptTypes;
+
     SCCOL           nCol;
     SCTAB           nTab;
 
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index a53c8a8..b472e9e 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -61,6 +61,7 @@ ScNeededSizeOptions::ScNeededSizeOptions() :
 
 ScColumn::ScColumn() :
     maTextWidths(MAXROWCOUNT),
+    maScriptTypes(MAXROWCOUNT),
     nCol( 0 ),
     pAttrArray( NULL ),
     pDocument( NULL )
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index 84cc89d..2715fb9 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -1445,18 +1445,22 @@ void ScColumn::SetTextWidth(SCROW nRow, unsigned short nWidth)
 
 sal_uInt8 ScColumn::GetScriptType( SCROW nRow ) const
 {
-    if (!ValidRow(nRow))
+    if (!ValidRow(nRow) || maScriptTypes.is_empty(nRow))
         return SC_SCRIPTTYPE_UNKNOWN;
 
-    return SC_SCRIPTTYPE_UNKNOWN;
+    return maScriptTypes.get<unsigned short>(nRow);
 }
 
-void ScColumn::SetScriptType( SCROW nRow, sal_uInt8 /*nType*/ )
+void ScColumn::SetScriptType( SCROW nRow, sal_uInt8 nType )
 {
     if (!ValidRow(nRow))
         return;
 
-    // TODO: Implement this.
+    if (nType == SC_SCRIPTTYPE_UNKNOWN)
+        // empty element represents unknown script type.
+        maScriptTypes.set_empty(nRow, nRow);
+    else
+        maScriptTypes.set<unsigned short>(nRow, nType);
 }
 
 void ScColumn::FindDataAreaPos(SCROW& rRow, bool bDown) const
commit e7c6d50cbe5f4b78294d046299c153f2e4b50498
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Mar 15 14:32:02 2013 -0400

    Actually these should be MAXROWCOUNT; MAXROW would be one element too short.
    
    Change-Id: Id0be194bef04a5f32e1624c6c6910db7ec3ddb36

diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 0ba6f01..9537bf6 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -202,7 +202,7 @@ void ScColumn::FreeAll()
 
     // Text width should keep a logical empty range of 0-MAXROW when the cell array is empty.
     maTextWidths.clear();
-    maTextWidths.resize(MAXROW);
+    maTextWidths.resize(MAXROWCOUNT);
     CellStorageModified();
 }
 
@@ -263,7 +263,7 @@ void ScColumn::DeleteRow( SCROW nStartRow, SCSIZE nSize )
 
     // Shift the text width array too (before the broadcast).
     maTextWidths.erase(nStartRow, nEndRow);
-    maTextWidths.resize(MAXROW);
+    maTextWidths.resize(MAXROWCOUNT);
 
     ScAddress aAdr( nCol, 0, nTab );
     ScHint aHint( SC_HINT_DATACHANGED, aAdr, NULL ); // only areas (ScBaseCell* == NULL)
commit 4adcb80e0a69e2d1724ecd7aad521c994e2303dc
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Fri Mar 15 12:39:59 2013 -0400

    Flush buffer before aborting; else we may not see the output at all.
    
    Change-Id: Iae5e604d6f947c8ab7853ef5cc2cfbe9566fea0c

diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index a1a84bb..84cc89d 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -1397,12 +1397,14 @@ void ScColumn::CellStorageModified()
         if (maTextWidths.empty())
         {
             cout << "ScColumn::CellStorageModified: Text width array is empty, but shouldn't." << endl;
+            cout.flush();
             abort();
         }
 
         if (maTextWidths.block_size() != 1 || maTextWidths.begin()->type != mdds::mtv::element_type_empty)
         {
             cout << "ScColumn::CellStorageModified: When the cell array is empty, the text with array should consist of one empty block." << endl;
+            cout.flush();
             abort();
         }
 
commit a1a0830d1ac3ffabbe35bd8a0264b64f1f7a9d67
Author: Armin Le Grand <alg at apache.org>
Date:   Wed May 30 13:44:19 2012 +0000

    Resolves: #i119601# support for transparency in PNG export dialog
    
    Added support for transparency in PNG export dialog and support for alpha
    channnel
    
    Conflicts:
    	svtools/source/filter/exportdialog.cxx
    
    Change-Id: I324bfd6a34803478bf17f113e015620056c90567

diff --git a/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx b/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx
index 30540ce..92e21d6 100644
--- a/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx
+++ b/drawinglayer/source/drawinglayeruno/xprimitive2drenderer.cxx
@@ -145,7 +145,7 @@ namespace drawinglayer
                     }
 
                     const geometry::ViewInformation2D aViewInformation2D(aViewInformationSequence);
-                    const double fFactor100th_mmToInch(2.54/1000.0);
+                    const double fFactor100th_mmToInch(1.0 / (2.54 * 1000.0));
                     const sal_uInt32 nDiscreteWidth(basegfx::fround((fWidth * fFactor100th_mmToInch) * DPI_X));
                     const sal_uInt32 nDiscreteHeight(basegfx::fround((fHeight * fFactor100th_mmToInch) * DPI_Y));
 
diff --git a/svtools/source/filter/exportdialog.cxx b/svtools/source/filter/exportdialog.cxx
index fdf73d6..b8942d5 100644
--- a/svtools/source/filter/exportdialog.cxx
+++ b/svtools/source/filter/exportdialog.cxx
@@ -263,6 +263,10 @@ uno::Sequence< beans::PropertyValue > ExportDialog::GetFilterData( sal_Bool bUpd
             if ( mpCbInterlaced->IsChecked() )
                 nInterlace++;
             pFilterOptions->WriteInt32(OUString("Interlaced"), nInterlace);
+            sal_Int32 nValue = 0;
+            if ( mpCbSaveTransparency->IsChecked() )
+                nValue++;
+            pFilterOptions->WriteInt32(OUString("Translucent"), nValue);
         }
         break;
 
@@ -782,6 +786,7 @@ void ExportDialog::createFilterOptions()
             sal_Int32 nCompression = mpFilterOptionsItem->ReadInt32(OUString("Compression"), 6);
             if ( ( nCompression < 1 ) || ( nCompression > 9 ) )
                 nCompression = 6;
+
             get(mpSbCompression, "compressionpngsb");
             get(mpNfCompression, "compressionpngnf-nospin");
             mpSbCompression->SetRangeMin( 1 );
@@ -793,7 +798,11 @@ void ExportDialog::createFilterOptions()
 
             // Interlaced
             mpMode->Show();
-            mpCbInterlaced->Check( mpFilterOptionsItem->ReadInt32(OUString("Interlaced"), 0) != 0);
+            mpCbInterlaced->Check(mpFilterOptionsItem->ReadInt32(OUString("Interlaced"), 0) != 0);
+
+            // Transparency
+            mpDrawingObjects->Show();
+            mpCbSaveTransparency->Check(mpFilterOptionsItem->ReadInt32(OUString("Translucent"), 1) != 0);
         }
         break;
         case FORMAT_BMP :
@@ -820,9 +829,11 @@ void ExportDialog::createFilterOptions()
         break;
         case FORMAT_GIF :
         {
+            // Interlaced
             mpMode->Show();
             mpCbInterlaced->Check(mpFilterOptionsItem->ReadInt32(OUString("Interlaced"), 1) != 0);
 
+            // Transparency
             mpDrawingObjects->Show();
             mpCbSaveTransparency->Check(mpFilterOptionsItem->ReadInt32(OUString("Translucent"), 1) != 0);
         }
diff --git a/svx/source/unodraw/UnoGraphicExporter.cxx b/svx/source/unodraw/UnoGraphicExporter.cxx
index 6efefc7..150094d 100644
--- a/svx/source/unodraw/UnoGraphicExporter.cxx
+++ b/svx/source/unodraw/UnoGraphicExporter.cxx
@@ -207,34 +207,46 @@ namespace svx
     */
     BitmapEx GetBitmapFromMetaFile( const GDIMetaFile& rMtf, sal_Bool bTransparent, const Size* pSize )
     {
-        Graphic     aGraphic( rMtf );
-        BitmapEx    aBmpEx;
-
-        // #i102089# support user's settings of AA and LineSnap when the MetaFile gets
-        // rasterconverted to a bitmap
-        const SvtOptionsDrawinglayer aDrawinglayerOpt;
-        const GraphicConversionParameters aParameters(
-            pSize ? *pSize : Size(0, 0),
-            true, // allow unlimited size
-            aDrawinglayerOpt.IsAntiAliasing(),
-            aDrawinglayerOpt.IsSnapHorVerLinesToDiscrete());
-
-        if( bTransparent )
+        BitmapEx aBmpEx;
+
+        if(bTransparent)
         {
-            Graphic aMaskGraphic(rMtf.GetMonochromeMtf(COL_BLACK));
-            Bitmap  aMaskBmp(aMaskGraphic.GetBitmap(aParameters));
+            // use new primitive conversion tooling
+            basegfx::B2DRange aRange(basegfx::B2DPoint(0.0, 0.0));
+
+            if(pSize)
+            {
+                // use 100th mm for primitive bitmap converter tool, input is pixel
+                // use a real OutDev to get the correct DPI, the static LogicToLogic assumes 72dpi which is wrong (!)
+                const Size aSize100th(Application::GetDefaultDevice()->PixelToLogic(*pSize, MapMode(MAP_100TH_MM)));
 
-            aMaskBmp.Convert(BMP_CONVERSION_1BIT_THRESHOLD);
-            aBmpEx = BitmapEx(aGraphic.GetBitmap(aParameters), aMaskBmp);
+                aRange.expand(basegfx::B2DPoint(aSize100th.Width(), aSize100th.Height()));
+            }
+            else
+            {
+                // use 100th mm for primitive bitmap converter tool
+                const Size aSize100th(Application::GetDefaultDevice()->LogicToLogic(rMtf.GetPrefSize(), rMtf.GetPrefMapMode(), MapMode(MAP_100TH_MM)));
+
+                aRange.expand(basegfx::B2DPoint(aSize100th.Width(), aSize100th.Height()));
+            }
+
+            aBmpEx = convertMetafileToBitmapEx(rMtf, aRange);
         }
         else
         {
+            const SvtOptionsDrawinglayer aDrawinglayerOpt;
+            const GraphicConversionParameters aParameters(
+                pSize ? *pSize : Size(0, 0),
+                true, // allow unlimited size
+                aDrawinglayerOpt.IsAntiAliasing(),
+                aDrawinglayerOpt.IsSnapHorVerLinesToDiscrete());
+            const Graphic aGraphic(rMtf);
+
             aBmpEx = BitmapEx(aGraphic.GetBitmap(aParameters));
+            aBmpEx.SetPrefMapMode( rMtf.GetPrefMapMode() );
+            aBmpEx.SetPrefSize( rMtf.GetPrefSize() );
         }
 
-        aBmpEx.SetPrefMapMode( rMtf.GetPrefMapMode() );
-        aBmpEx.SetPrefSize( rMtf.GetPrefSize() );
-
         return aBmpEx;
     }
 
commit e8620b247dcba55f67ad7eaf63cfe5ac3831b187
Author: Peter Foley <pefoley2 at verizon.net>
Date:   Fri Mar 15 21:16:34 2013 -0400

    fix conflicting types found by lto
    
    Change-Id: Icd1b5756e43aa17d8329d124765d75a4bbfaf327

diff --git a/xmloff/source/text/XMLIndexTOCSourceContext.cxx b/xmloff/source/text/XMLIndexTOCSourceContext.cxx
index b1399d7..98ce765 100644
--- a/xmloff/source/text/XMLIndexTOCSourceContext.cxx
+++ b/xmloff/source/text/XMLIndexTOCSourceContext.cxx
@@ -169,7 +169,7 @@ SvXMLImportContext* XMLIndexTOCSourceContext::CreateChildContext(
     {
         return new XMLIndexTemplateContext(GetImport(), rIndexPropertySet,
                                            nPrefix, rLocalName,
-                                           aLevelNameTOCMap,
+                                           aSvLevelNameTOCMap,
                                            XML_OUTLINE_LEVEL,
                                            aLevelStylePropNameTOCMap,
                                            aAllowedTokenTypesTOC, sal_True );
diff --git a/xmloff/source/text/XMLIndexTemplateContext.cxx b/xmloff/source/text/XMLIndexTemplateContext.cxx
index b57698c..ec7eac4 100644
--- a/xmloff/source/text/XMLIndexTemplateContext.cxx
+++ b/xmloff/source/text/XMLIndexTemplateContext.cxx
@@ -341,7 +341,7 @@ SvXMLImportContext *XMLIndexTemplateContext::CreateChildContext(
 
 // table of content and user defined index:
 
-const SvXMLEnumMapEntry aLevelNameTOCMap[] =
+const SvXMLEnumMapEntry aSvLevelNameTOCMap[] =
 {
     { XML_1, 1 },
     { XML_2, 2 },
diff --git a/xmloff/source/text/XMLIndexTemplateContext.hxx b/xmloff/source/text/XMLIndexTemplateContext.hxx
index 3227c11..079da8b 100644
--- a/xmloff/source/text/XMLIndexTemplateContext.hxx
+++ b/xmloff/source/text/XMLIndexTemplateContext.hxx
@@ -40,7 +40,7 @@ struct SvXMLEnumMapEntry;
 // constants for the XMLIndexTemplateContext constructor
 
 // TOC and user defined index:
-extern const SvXMLEnumMapEntry aLevelNameTOCMap[];
+extern const SvXMLEnumMapEntry aSvLevelNameTOCMap[];
 extern const sal_Char* aLevelStylePropNameTOCMap[];
 extern const sal_Bool aAllowedTokenTypesTOC[];
 extern const sal_Bool aAllowedTokenTypesUser[];
diff --git a/xmloff/source/text/XMLIndexUserSourceContext.cxx b/xmloff/source/text/XMLIndexUserSourceContext.cxx
index ff2409a..09ff595 100644
--- a/xmloff/source/text/XMLIndexUserSourceContext.cxx
+++ b/xmloff/source/text/XMLIndexUserSourceContext.cxx
@@ -198,7 +198,7 @@ SvXMLImportContext* XMLIndexUserSourceContext::CreateChildContext(
     {
         return new XMLIndexTemplateContext(GetImport(), rIndexPropertySet,
                                            nPrefix, rLocalName,
-                                           aLevelNameTOCMap,
+                                           aSvLevelNameTOCMap,
                                            XML_OUTLINE_LEVEL,
                                            aLevelStylePropNameTOCMap,
                                            aAllowedTokenTypesUser);
commit b659d7c33fcacdbbef86557e78f071abf94bead2
Author: Peter Foley <pefoley2 at verizon.net>
Date:   Fri Mar 15 21:08:18 2013 -0400

    cleanup sqlflex and sqlbison options
    
    Change-Id: I3f01636ef861828fdbe87e4057b6dc293ca63576

diff --git a/connectivity/Library_dbtools.mk b/connectivity/Library_dbtools.mk
index 1e063ea..4228eb9 100644
--- a/connectivity/Library_dbtools.mk
+++ b/connectivity/Library_dbtools.mk
@@ -66,8 +66,6 @@ $(eval $(call gb_Library_use_libraries,dbtools,\
 ))
 endif
 
-#connectivity/source/commontools/RowFunctionParser.cxx disable optimization?
-
 $(eval $(call gb_Library_add_noexception_objects,dbtools,\
 	connectivity/source/simpledbt/refbase \
 ))
@@ -76,16 +74,10 @@ $(eval $(call gb_Library_add_grammars,dbtools,\
 	connectivity/source/parse/sqlbison \
 ))
 
-$(call gb_YaccTarget_get_target,connectivity/source/parse/sqlbison) : T_YACCFLAGS := -d -l -pSQLyy -bsql
-
 $(eval $(call gb_Library_add_scanners,dbtools,\
-connectivity/source/parse/sqlflex \
+	connectivity/source/parse/sqlflex \
 ))
 
-$(call gb_LexTarget_get_scanner_target,connectivity/source/parse/sqlflex) : T_LEXFLAGS := -i -8 -PSQLyy -L
-
-
-
 $(eval $(call gb_Library_add_exception_objects,dbtools,\
 	connectivity/source/commontools/AutoRetrievingBase \
 	connectivity/source/commontools/BlobHelper \
diff --git a/connectivity/source/parse/sqlbison.y b/connectivity/source/parse/sqlbison.y
index 0bb7c31..017428b 100644
--- a/connectivity/source/parse/sqlbison.y
+++ b/connectivity/source/parse/sqlbison.y
@@ -1,4 +1,8 @@
 %token-table
+%defines
+%no-lines
+%define api.prefix SQLyy
+%file-prefix "sql"
 %{
 /*
  * This file is part of the LibreOffice project.
diff --git a/connectivity/source/parse/sqlflex.l b/connectivity/source/parse/sqlflex.l
index d17128e..1ded0e2 100644
--- a/connectivity/source/parse/sqlflex.l
+++ b/connectivity/source/parse/sqlflex.l
@@ -1,3 +1,6 @@
+%option case-insensitive
+%option 8bit
+%option prefix="SQLyy"
 %{
 
 //
commit 1b18d38fc2e82dccc80adebb5fee596d60064f99
Author: Peter Foley <pefoley2 at verizon.net>
Date:   Fri Mar 15 20:32:50 2013 -0400

    regenerate pch
    
    Change-Id: Iaf0195a0c2ec3d6daa1e3c70d20dfa8de97b9647

diff --git a/oox/inc/pch/precompiled_oox.hxx b/oox/inc/pch/precompiled_oox.hxx
index 274a6d3..2010bb6 100644
--- a/oox/inc/pch/precompiled_oox.hxx
+++ b/oox/inc/pch/precompiled_oox.hxx
@@ -228,11 +228,14 @@
 #include <com/sun/star/io/XStream.hpp>
 #include <com/sun/star/io/XTextInputStream2.hpp>
 #include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/lang/IllegalArgumentException.hpp>
 #include <com/sun/star/lang/Locale.hpp>
 #include <com/sun/star/lang/XComponent.hpp>
 #include <com/sun/star/lang/XInitialization.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/office/XAnnotation.hpp>
+#include <com/sun/star/office/XAnnotationAccess.hpp>
 #include <com/sun/star/presentation/AnimationSpeed.hpp>
 #include <com/sun/star/presentation/EffectCommands.hpp>
 #include <com/sun/star/presentation/EffectNodeType.hpp>
diff --git a/sc/inc/pch/precompiled_sc.hxx b/sc/inc/pch/precompiled_sc.hxx
index 2d8dd7c..e6896b0 100644
--- a/sc/inc/pch/precompiled_sc.hxx
+++ b/sc/inc/pch/precompiled_sc.hxx
@@ -196,6 +196,8 @@
 #include <com/sun/star/document/XDocumentEventBroadcaster.hpp>
 #include <com/sun/star/document/XDocumentProperties.hpp>
 #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
+#include <com/sun/star/document/XEmbeddedObjectSupplier.hpp>
+#include <com/sun/star/document/XStorageBasedDocument.hpp>
 #include <com/sun/star/drawing/XDrawPageSupplier.hpp>
 #include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
 #include <com/sun/star/drawing/XShape.hpp>
@@ -224,6 +226,7 @@
 #include <com/sun/star/frame/XFrame.hpp>
 #include <com/sun/star/frame/XLayoutManager.hpp>
 #include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/frame/XStorable2.hpp>
 #include <com/sun/star/frame/XSynchronousFrameLoader.hpp>
 #include <com/sun/star/i18n/BreakIterator.hpp>
 #include <com/sun/star/i18n/CalendarDisplayIndex.hpp>
@@ -253,6 +256,7 @@
 #include <com/sun/star/lang/XSingleServiceFactory.hpp>
 #include <com/sun/star/linguistic2/XThesaurus.hpp>
 #include <com/sun/star/packages/zip/ZipIOException.hpp>
+#include <com/sun/star/rdf/XDocumentMetadataAccess.hpp>
 #include <com/sun/star/reflection/XIdlClass.hpp>
 #include <com/sun/star/script/ModuleType.hpp>
 #include <com/sun/star/script/ScriptEventDescriptor.hpp>
@@ -394,6 +398,9 @@
 #include <com/sun/star/table/XCell.hpp>
 #include <com/sun/star/table/XCellRange.hpp>
 #include <com/sun/star/table/XColumnRowRange.hpp>
+#include <com/sun/star/table/XTableChart.hpp>
+#include <com/sun/star/table/XTableCharts.hpp>
+#include <com/sun/star/table/XTableChartsSupplier.hpp>
 #include <com/sun/star/task/InteractionClassification.hpp>
 #include <com/sun/star/task/InteractionHandler.hpp>
 #include <com/sun/star/task/XInteractionHandler.hpp>
@@ -411,6 +418,7 @@
 #include <com/sun/star/text/XTextRange.hpp>
 #include <com/sun/star/text/textfield/Type.hpp>
 #include <com/sun/star/ucb/InteractiveAppException.hpp>
+#include <com/sun/star/ucb/InteractiveAugmentedIOException.hpp>
 #include <com/sun/star/ucb/NameClash.hpp>
 #include <com/sun/star/ucb/TransferInfo.hpp>
 #include <com/sun/star/ucb/XCommandEnvironment.hpp>
@@ -457,6 +465,7 @@
 #include <comphelper/accessibleeventnotifier.hxx>
 #include <comphelper/componentcontext.hxx>
 #include <comphelper/docpasswordhelper.hxx>
+#include <comphelper/documentconstants.hxx>
 #include <comphelper/extract.hxx>
 #include <comphelper/genericpropertyset.hxx>
 #include <comphelper/processfactory.hxx>
@@ -588,6 +597,7 @@
 #include <sal/types.h>
 #include <sax/tools/converter.hxx>
 #include <set>
+#include <sfx2/DocumentMetadataAccess.hxx>
 #include <sfx2/app.hxx>
 #include <sfx2/basedlgs.hxx>
 #include <sfx2/bindings.hxx>
@@ -811,7 +821,6 @@
 #include <svx/unoshape.hxx>
 #include <svx/unoshcol.hxx>
 #include <svx/verttexttbxctrl.hxx>
-#include <svx/xbitmap.hxx>
 #include <svx/xbtmpit.hxx>
 #include <svx/xdef.hxx>
 #include <svx/xfillit0.hxx>
diff --git a/svx/inc/pch/precompiled_svx.hxx b/svx/inc/pch/precompiled_svx.hxx
index 720b17e..5033dc0 100644
--- a/svx/inc/pch/precompiled_svx.hxx
+++ b/svx/inc/pch/precompiled_svx.hxx
@@ -388,6 +388,7 @@
 #include <unotools/viewoptions.hxx>
 #include <utility>
 #include <vcl/bitmap.hxx>
+#include <vcl/bmpacc.hxx>
 #include <vcl/builder.hxx>
 #include <vcl/button.hxx>
 #include <vcl/dialog.hxx>
diff --git a/svx/inc/pch/precompiled_svxcore.hxx b/svx/inc/pch/precompiled_svxcore.hxx
index cebf95a..470507c 100644
--- a/svx/inc/pch/precompiled_svxcore.hxx
+++ b/svx/inc/pch/precompiled_svxcore.hxx
@@ -67,6 +67,7 @@
 #include <basegfx/point/b3dpoint.hxx>
 #include <basegfx/polygon/b2dlinegeometry.hxx>
 #include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygonclipper.hxx>
 #include <basegfx/polygon/b2dpolygontools.hxx>
 #include <basegfx/polygon/b2dpolypolygon.hxx>
 #include <basegfx/polygon/b2dpolypolygoncutter.hxx>
@@ -334,7 +335,9 @@
 #include <drawinglayer/primitive2d/markerarrayprimitive2d.hxx>
 #include <drawinglayer/primitive2d/maskprimitive2d.hxx>
 #include <drawinglayer/primitive2d/mediaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
 #include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx>
+#include <drawinglayer/primitive2d/objectinfoprimitive2d.hxx>
 #include <drawinglayer/primitive2d/pagepreviewprimitive2d.hxx>
 #include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
 #include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
@@ -591,9 +594,11 @@
 #include <vcl/outdev.hxx>
 #include <vcl/pdfextoutdevdata.hxx>
 #include <vcl/region.hxx>
+#include <vcl/salbtype.hxx>
 #include <vcl/settings.hxx>
 #include <vcl/split.hxx>
 #include <vcl/svapp.hxx>
+#include <vcl/svgdata.hxx>
 #include <vcl/timer.hxx>
 #include <vcl/toolbox.hxx>
 #include <vcl/virdev.hxx>
diff --git a/sw/inc/pch/precompiled_msword.hxx b/sw/inc/pch/precompiled_msword.hxx
index 8e28458..c202b0c 100644
--- a/sw/inc/pch/precompiled_msword.hxx
+++ b/sw/inc/pch/precompiled_msword.hxx
@@ -15,6 +15,7 @@
 */
 
 #include "sal/config.h"
+#include "sal/log.hxx"
 #include "svl/urihelper.hxx"
 #include <algorithm>
 #include <basegfx/point/b2dpoint.hxx>
commit cbd5b85dfa891914f2a799b9206308d02d5e4d52
Author: Peter Foley <pefoley2 at verizon.net>
Date:   Fri Mar 15 19:40:30 2013 -0400

    move update_pch.sh to a more obvious place
    
    Change-Id: I379bfa8a8531c9ebc09d29ac789d70c8c5dafc79

diff --git a/bin/update_pch.sh b/bin/update_pch.sh
new file mode 100755
index 0000000..4d94569
--- /dev/null
+++ b/bin/update_pch.sh
@@ -0,0 +1,162 @@
+#! /bin/bash
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+# Usage: update_pch.sh [precompiled_xxx.hxx]
+
+root=`dirname $0`
+root=`cd $root/.. && pwd`
+
+if test -z "$1"; then
+    headers=`ls $root/*/inc/pch/precompiled_*.hxx`
+else
+    headers="$1"
+fi
+
+for x in $headers; do
+    header=$x
+    echo updating `echo $header | sed -e s%$root/%%`
+    module=`readlink -f $header | sed -e s%$root/%% -e s%/.*%%`
+    name=`echo $header | sed -e s/.*precompiled_// -e s/\.hxx//`
+    makefile="Library_$name.mk"
+
+    tmpfile=`mktemp`
+
+    cat "$root/$module/$makefile" | sed 's#\\$##' | \
+        (
+        inobjects=
+        ifstack=0
+        while read line ; do
+            if test "$line" = "))" ; then
+                inobjects=
+            elif echo $line | grep -q -e add_exception_objects -e add_noexception_objects -e add_cxxobject -e add_cxxobjects ; then
+                inobjects=1
+                if test $ifstack -ne 0 ; then
+                    echo Sources in a conditional, ignoring for now. >&2
+                fi
+            elif echo $line | grep -q ^if ; then
+                ifstack=$((ifstack + 1))
+            elif echo $line | grep -q ^endif ; then
+                ifstack=$((ifstack - 1))
+            elif test -n "$inobjects" -a $ifstack -eq 0; then
+                file=$line
+                if echo $line | grep -q ", "; then
+                    true # $if() probably, or something similar
+                elif ! test -f "$root/$file".cxx ; then
+                    echo No file $file in $module/$makefile >&2
+                else
+
+function list_file_includes()
+(
+    ifdepth=0
+    # filter out only preprocessor lines, get the first and second "words" after the #,
+    # also replace " with @ (would cause trouble when doing echo of the line)
+    cat "$1" | grep '^\s*#' | sed 's/^\s*#/#/' | sed 's/^\(#\w*\s+\w*\)\s+.*/\1/' | sed 's/"/@/g' | \
+        while read line; do
+            # skip everything surrounded by any #if
+            if echo "$line" | grep -q "#if" ; then
+                ifdepth=$((ifdepth + 1))
+                lastif="$line"
+            elif echo "$line" | grep -q "#endif" ; then
+                ifdepth=$((ifdepth - 1))
+                lastif="#if"
+            elif echo "$line" | grep -q "#include"; then
+                if test $ifdepth -eq 0; then
+                    echo $line | sed 's/@/"/g'
+                else
+                    echo "#include in $lastif : $line" | sed 's/@/"/g' >&2
+                fi
+            fi
+        done
+)
+
+                    list_file_includes "$root/$file".cxx | sed 's/\(#include [<@][^>@]*[>@]\).*/\1/' | sed 's#\.\./##g#' >>$tmpfile
+                fi
+            fi
+        done
+        )
+
+    cat >$header <<EOF
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
+EOF
+
+    # Library_svx needs this (sendreportw32.cxx)
+    if test "$makefile" = Library_svx.mk ; then
+        cat >>$header <<EOF
+#ifdef WNT
+#define UNICODE
+#define _UNICODE
+#endif
+
+EOF
+    fi
+
+function local_file()
+(
+    file="$1"
+    echo "$file" | grep -q ^"$module"/ && exit 0
+#    find "$root/$module" -type f | grep -v "$root/$module/inc/" | grep /"$file"'$' && exit 0
+    find "$root/$module" -type f | grep /"$file"'$' -q && exit 0
+    if echo "$file" | grep -F . -q; then
+        find "$root/$module" -type f | grep -q /`echo "$file" | sed 's/\.hxx$/.sdi/'` && exit 0
+    fi
+    # not local
+    exit 1
+)
+
+function filter_ignore()
+(
+# - filter out all files that are not normal headers
+# - gperffasttoken.hxx is not a proper header
+# - sores.hxx provides BMP_PLUGIN, which is redefined
+# - some sources play ugly #define tricks with editeng/eeitemid.hxx
+# - jerror.h and jpeglib.h are not self-contained
+    grep -e '\.h[">]$' -e '\.hpp[">]$' -e '\.hdl[">]$' -e '\.hxx[">]$' -e '^[^\.]*>$' | \
+    grep -v -F -e '#include "gperffasttoken.hxx"' | \
+    grep -v -F -e '#include <svtools/sores.hxx>' | \
+    grep -v -F -e '#include <editeng/eeitemid.hxx>' | \
+    grep -v -F -e '#include "jerror.h"' | \
+    grep -v -F -e '#include "jpeglib.h"'
+)
+
+    # " in #include "foo" breaks echo down below, so " -> @
+    cat $tmpfile | LC_ALL=C sort -u | filter_ignore | sed 's/"/@/g' | \
+        (
+        while read line; do
+            file=`echo $line | sed 's/.*[<"@]\([^>"@]*\)[>"@].*/\1/'`
+            if ! local_file "$file"; then
+                echo $line | sed 's/@/"/g' >>$header
+            fi
+        done
+        )
+
+    cat >>$header <<EOF
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
+EOF
+
+    rm $tmpfile
+done
+
+#echo Done.
+exit 0
diff --git a/solenv/bin/update_pch.sh b/solenv/bin/update_pch.sh
deleted file mode 100755
index 39569f7..0000000
--- a/solenv/bin/update_pch.sh
+++ /dev/null
@@ -1,162 +0,0 @@
-#! /bin/bash
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-
-# Usage: update_pch.sh [precompiled_xxx.hxx]
-
-root=`dirname $0`
-root=`cd $root/../.. && pwd`
-
-if test -z "$1"; then
-    headers=`ls $root/*/inc/pch/precompiled_*.hxx`
-else
-    headers="$1"
-fi
-
-for x in $headers; do
-    header=$x
-    echo updating `echo $header | sed -e s%$root/%%`
-    module=`readlink -f $header | sed -e s%$root/%% -e s%/.*%%`
-    name=`echo $header | sed -e s/.*precompiled_// -e s/\.hxx//`
-    makefile="Library_$name.mk"
-
-    tmpfile=`mktemp`
-
-    cat "$root/$module/$makefile" | sed 's#\\$##' | \
-        (
-        inobjects=
-        ifstack=0
-        while read line ; do
-            if test "$line" = "))" ; then
-                inobjects=
-            elif echo $line | grep -q -e add_exception_objects -e add_noexception_objects -e add_cxxobject -e add_cxxobjects ; then
-                inobjects=1
-                if test $ifstack -ne 0 ; then
-                    echo Sources in a conditional, ignoring for now. >&2
-                fi
-            elif echo $line | grep -q ^if ; then
-                ifstack=$((ifstack + 1))
-            elif echo $line | grep -q ^endif ; then
-                ifstack=$((ifstack - 1))
-            elif test -n "$inobjects" -a $ifstack -eq 0; then
-                file=$line
-                if echo $line | grep -q ", "; then
-                    true # $if() probably, or something similar
-                elif ! test -f "$root/$file".cxx ; then
-                    echo No file $file in $module/$makefile >&2
-                else
-
-function list_file_includes()
-(
-    ifdepth=0
-    # filter out only preprocessor lines, get the first and second "words" after the #,
-    # also replace " with @ (would cause trouble when doing echo of the line)
-    cat "$1" | grep '^\s*#' | sed 's/^\s*#/#/' | sed 's/^\(#\w*\s+\w*\)\s+.*/\1/' | sed 's/"/@/g' | \
-        while read line; do
-            # skip everything surrounded by any #if
-            if echo "$line" | grep -q "#if" ; then
-                ifdepth=$((ifdepth + 1))
-                lastif="$line"
-            elif echo "$line" | grep -q "#endif" ; then
-                ifdepth=$((ifdepth - 1))
-                lastif="#if"
-            elif echo "$line" | grep -q "#include"; then
-                if test $ifdepth -eq 0; then
-                    echo $line | sed 's/@/"/g'
-                else
-                    echo "#include in $lastif : $line" | sed 's/@/"/g' >&2
-                fi
-            fi
-        done
-)
-
-                    list_file_includes "$root/$file".cxx | sed 's/\(#include [<@][^>@]*[>@]\).*/\1/' | sed 's#\.\./##g#' >>$tmpfile
-                fi
-            fi
-        done
-        )
-
-    cat >$header <<EOF
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-
-/*
- This file has been autogenerated by update_pch.sh . It is possible to edit it
- manually (such as when an include file has been moved/renamed/removed. All such
- manual changes will be rewritten by the next run of update_pch.sh (which presumably
- also fixes all possible problems, so it's usually better to use it).
-*/
-
-EOF
-
-    # Library_svx needs this (sendreportw32.cxx)
-    if test "$makefile" = Library_svx.mk ; then
-        cat >>$header <<EOF
-#ifdef WNT
-#define UNICODE
-#define _UNICODE
-#endif
-
-EOF
-    fi
-
-function local_file()
-(
-    file="$1"
-    echo "$file" | grep -q ^"$module"/ && exit 0
-#    find "$root/$module" -type f | grep -v "$root/$module/inc/" | grep /"$file"'$' && exit 0
-    find "$root/$module" -type f | grep /"$file"'$' -q && exit 0
-    if echo "$file" | grep -F . -q; then
-        find "$root/$module" -type f | grep -q /`echo "$file" | sed 's/\.hxx$/.sdi/'` && exit 0
-    fi
-    # not local
-    exit 1
-)
-
-function filter_ignore()
-(
-# - filter out all files that are not normal headers
-# - gperffasttoken.hxx is not a proper header
-# - sores.hxx provides BMP_PLUGIN, which is redefined
-# - some sources play ugly #define tricks with editeng/eeitemid.hxx
-# - jerror.h and jpeglib.h are not self-contained
-    grep -e '\.h[">]$' -e '\.hpp[">]$' -e '\.hdl[">]$' -e '\.hxx[">]$' -e '^[^\.]*>$' | \
-    grep -v -F -e '#include "gperffasttoken.hxx"' | \
-    grep -v -F -e '#include <svtools/sores.hxx>' | \
-    grep -v -F -e '#include <editeng/eeitemid.hxx>' | \
-    grep -v -F -e '#include "jerror.h"' | \
-    grep -v -F -e '#include "jpeglib.h"'
-)
-
-    # " in #include "foo" breaks echo down below, so " -> @
-    cat $tmpfile | LC_ALL=C sort -u | filter_ignore | sed 's/"/@/g' | \
-        (
-        while read line; do
-            file=`echo $line | sed 's/.*[<"@]\([^>"@]*\)[>"@].*/\1/'`
-            if ! local_file "$file"; then
-                echo $line | sed 's/@/"/g' >>$header
-            fi
-        done
-        )
-
-    cat >>$header <<EOF
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-EOF
-
-    rm $tmpfile
-done
-
-#echo Done.
-exit 0
commit 1fda1581d8ff8e85a4fa0e73e5147fd6798895e9
Author: Peter Foley <pefoley2 at verizon.net>
Date:   Fri Mar 15 19:35:25 2013 -0400

    suppress auto_ptr warnings
    
    Change-Id: I2486a2d0647e425e7607b0a7a56ea3bf130ed0e2

diff --git a/svx/inc/svx/AccessibleTextHelper.hxx b/svx/inc/svx/AccessibleTextHelper.hxx
index 9d46896..c930af0 100644
--- a/svx/inc/svx/AccessibleTextHelper.hxx
+++ b/svx/inc/svx/AccessibleTextHelper.hxx
@@ -124,7 +124,9 @@ namespace accessibility
             model) contained in the given SvxEditSource.
 
         */
+        SAL_WNODEPRECATED_DECLARATIONS_PUSH
         explicit AccessibleTextHelper( ::std::auto_ptr< SvxEditSource > pEditSource );
+        SAL_WNODEPRECATED_DECLARATIONS_POP
         virtual ~AccessibleTextHelper();
 
     protected:
@@ -185,7 +187,9 @@ namespace accessibility
             The new edit source to set. Object ownership is transferred
             from the caller to the callee.
         */
+        SAL_WNODEPRECATED_DECLARATIONS_PUSH
         virtual void SetEditSource( ::std::auto_ptr< SvxEditSource > pEditSource ) SAL_THROW((::com::sun::star::uno::RuntimeException));
+        SAL_WNODEPRECATED_DECLARATIONS_POP
 
         /** Set the event source
 
diff --git a/svx/source/accessibility/AccessibleEmptyEditSource.hxx b/svx/source/accessibility/AccessibleEmptyEditSource.hxx
index 89d71dd..3e1052b 100644
--- a/svx/source/accessibility/AccessibleEmptyEditSource.hxx
+++ b/svx/source/accessibility/AccessibleEmptyEditSource.hxx
@@ -77,7 +77,9 @@ namespace accessibility
 
             @dyn
          */
+        SAL_WNODEPRECATED_DECLARATIONS_PUSH
         std::auto_ptr< SvxEditSource >  mpEditSource;
+        SAL_WNODEPRECATED_DECLARATIONS_POP
 
         SdrObject&                      mrObj;
         SdrView&                        mrView;
diff --git a/svx/source/table/accessiblecell.cxx b/svx/source/table/accessiblecell.cxx
index 4d28f53..43249d9 100644
--- a/svx/source/table/accessiblecell.cxx
+++ b/svx/source/table/accessiblecell.cxx
@@ -82,7 +82,9 @@ void AccessibleCell::Init (void)
         if( pOutlinerParaObject )
         {
             // non-empty text -> use full-fledged edit source right away
+            SAL_WNODEPRECATED_DECLARATIONS_PUSH
             ::std::auto_ptr<SvxEditSource> pEditSource( new SvxTextEditSource( mxCell->GetObject(), mxCell.get(), *pView, *pWindow) );
+            SAL_WNODEPRECATED_DECLARATIONS_POP
             mpText = new AccessibleTextHelper( pEditSource );
             mpText->SetEventSource(this);
         }
commit d3f62f190e454946ec6be518f6a440bb39b8f584
Author: Peter Foley <pefoley2 at verizon.net>
Date:   Fri Mar 15 19:45:24 2013 -0400

    move libmspub to gcc-wrapper
    
    Change-Id: I44f1e53411e273575ebb97bf19c8a7a3ad2c313c

diff --git a/libmspub/ExternalPackage_libmspub.mk b/libmspub/ExternalPackage_libmspub.mk
index 83a0c87..3807c2b 100644
--- a/libmspub/ExternalPackage_libmspub.mk
+++ b/libmspub/ExternalPackage_libmspub.mk
@@ -17,8 +17,8 @@ $(eval $(call gb_ExternalPackage_add_unpacked_files,libmspub,inc/external/libmsp
 
 $(eval $(call gb_ExternalPackage_use_external_project,libmspub,libmspub))
 
-ifeq ($(OS)$(COM),WNTMSC)
-$(eval $(call gb_ExternalPackage_add_file,libmspub,lib/mspub-0.0.lib,build/win32/Release/lib/libmspub-0.0.lib))
+ifeq ($(COM),MSC)
+$(eval $(call gb_ExternalPackage_add_file,libmspub,lib/mspub-0.0.lib,src/lib/.libs/libmspub-0.0.lib))
 else
 $(eval $(call gb_ExternalPackage_add_file,libmspub,lib/libmspub-0.0.a,src/lib/.libs/libmspub-0.0.a))
 endif
diff --git a/libmspub/ExternalProject_libmspub.mk b/libmspub/ExternalProject_libmspub.mk
index 73ca1c6..bd93b40 100644
--- a/libmspub/ExternalProject_libmspub.mk
+++ b/libmspub/ExternalProject_libmspub.mk
@@ -11,6 +11,8 @@ $(eval $(call gb_ExternalProject_ExternalProject,libmspub))
 
 $(eval $(call gb_ExternalProject_use_unpacked,libmspub,mspub))
 
+$(eval $(call gb_ExternalProject_use_autoconf,libmspub,build))
+
 $(eval $(call gb_ExternalProject_register_targets,libmspub,\
 	build \
 ))
@@ -22,42 +24,6 @@ $(eval $(call gb_ExternalProject_use_externals,libmspub,\
 	wpg \
 ))
 
-ifeq ($(OS)$(COM),WNTMSC)
-
-ifeq ($(VCVER),90)
-$(call gb_ExternalProject_get_state_target,libmspub,build) :
-	$(call gb_ExternalProject_run,build,\
-		export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
-		&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-		&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& $(COMPATH)/vcpackages/vcbuild.exe libmspub.vcproj "Release|Win32" \
-	,build/win32)
-else ifeq ($(VCVER),100)
-$(call gb_ExternalProject_get_state_target,libmspub,build) :
-	$(call gb_ExternalProject_run,build,\
-		export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
-		&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-		&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& msbuild.exe libmspub.vcxproj /p:Configuration=Release \
-	,build/win32)
-else
-$(call gb_ExternalProject_get_state_target,libmspub,build) :
-	$(call gb_ExternalProject_run,build,\
-		export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
-		&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-		&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& msbuild.exe libmspub.vcxproj /p:PlatformToolset=v110 /p:VisualStudioVersion=11.0 /p:Configuration=Release \
-	,build/win32)
-endif
-
-else
-
 $(call gb_ExternalProject_get_state_target,libmspub,build) :
 	$(call gb_ExternalProject_run,build,\
 		export PKG_CONFIG="" \
@@ -77,6 +43,4 @@ $(call gb_ExternalProject_get_state_target,libmspub,build) :
 		&& (cd $(EXTERNAL_WORKDIR)/src/lib && $(MAKE)) \
 	)
 
-endif
-
 # vim: set noet sw=4 ts=4:
commit ca05c3a209af742b3beae1029b1eb1c92cec2626
Author: Peter Foley <pefoley2 at verizon.net>
Date:   Fri Mar 15 19:28:27 2013 -0400

    move libmwaw to gcc-wrapper
    
    Change-Id: Icad437f4c5622e1cc631b91ecb20913893514ffc

diff --git a/libmwaw/ExternalPackage_libmwaw.mk b/libmwaw/ExternalPackage_libmwaw.mk
index b541498..b678129 100644
--- a/libmwaw/ExternalPackage_libmwaw.mk
+++ b/libmwaw/ExternalPackage_libmwaw.mk
@@ -18,7 +18,7 @@ $(eval $(call gb_ExternalPackage_add_unpacked_files,libmwaw,inc/external/libmwaw
 $(eval $(call gb_ExternalPackage_use_external_project,libmwaw,libmwaw))
 
 ifeq ($(OS)$(COM),WNTMSC)
-$(eval $(call gb_ExternalPackage_add_file,libmwaw,lib/mwaw-0.1.lib,build/win32/Release/lib/libmwaw-0.1.lib))
+$(eval $(call gb_ExternalPackage_add_file,libmwaw,lib/mwaw-0.1.lib,src/lib/.libs/libmwaw-0.1.lib))
 else
 $(eval $(call gb_ExternalPackage_add_file,libmwaw,lib/libmwaw-0.1.a,src/lib/.libs/libmwaw-0.1.a))
 endif
diff --git a/libmwaw/ExternalProject_libmwaw.mk b/libmwaw/ExternalProject_libmwaw.mk
index 17c2e47..452dd92 100644
--- a/libmwaw/ExternalProject_libmwaw.mk
+++ b/libmwaw/ExternalProject_libmwaw.mk
@@ -11,6 +11,8 @@ $(eval $(call gb_ExternalProject_ExternalProject,libmwaw))
 
 $(eval $(call gb_ExternalProject_use_unpacked,libmwaw,mwaw))
 
+$(eval $(call gb_ExternalProject_use_autoconf,libmwaw,build))
+
 $(eval $(call gb_ExternalProject_register_targets,libmwaw,\
 	build \
 ))
@@ -20,36 +22,6 @@ $(eval $(call gb_ExternalProject_use_externals,libmwaw,\
 	wpd \
 ))
 
-ifeq ($(OS)$(COM),WNTMSC)
-
-ifeq ($(VCVER),90)
-$(call gb_ExternalProject_get_state_target,libmwaw,build) :
-	$(call gb_ExternalProject_run,build,\
-		export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
-		&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-		&& $(COMPATH)/vcpackages/vcbuild.exe libmwaw.vcproj "Release|Win32" \
-	,build/win32)
-else ifeq ($(VCVER),100)
-$(call gb_ExternalProject_get_state_target,libmwaw,build) :
-	$(call gb_ExternalProject_run,build,\
-		export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
-		&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-		&& msbuild.exe libmwaw.vcxproj /p:Configuration=Release \
-	,build/win32)
-else
-$(call gb_ExternalProject_get_state_target,libmwaw,build) :
-	$(call gb_ExternalProject_run,build,\
-		export BOOST_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,boost) \
-		&& export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-		&& msbuild.exe libmwaw.vcxproj /p:PlatformToolset=v110 /p:VisualStudioVersion=11.0 /p:Configuration=Release \
-	,build/win32)
-endif
-
-else
-
 $(call gb_ExternalProject_get_state_target,libmwaw,build) :
 	$(call gb_ExternalProject_run,build,\
 		export PKG_CONFIG="" \
@@ -65,6 +37,4 @@ $(call gb_ExternalProject_get_state_target,libmwaw,build) :
 		&& (cd $(EXTERNAL_WORKDIR)/src/lib && $(MAKE)) \
 	)
 
-endif
-
 # vim: set noet sw=4 ts=4:
commit 7abc6baab1ce01011a0d3541c81216e2d6130ffa
Author: Peter Foley <pefoley2 at verizon.net>
Date:   Fri Mar 15 19:12:08 2013 -0400

    move libcdr to gcc-wrapper
    
    Change-Id: Ic1e9c86e83f5896fdd90b3a66e392bfa2c4f77a6

diff --git a/libcdr/ExternalPackage_libcdr.mk b/libcdr/ExternalPackage_libcdr.mk
index d032e8f..4f08279 100644
--- a/libcdr/ExternalPackage_libcdr.mk
+++ b/libcdr/ExternalPackage_libcdr.mk
@@ -18,8 +18,8 @@ $(eval $(call gb_ExternalPackage_add_unpacked_files,libcdr,inc/external/libcdr,\
 
 $(eval $(call gb_ExternalPackage_use_external_project,libcdr,libcdr))
 
-ifeq ($(OS)$(COM),WNTMSC)
-$(eval $(call gb_ExternalPackage_add_file,libcdr,lib/cdr-0.0.lib,build/win32/Release/lib/libcdr-0.0.lib))
+ifeq ($(COM),MSC)
+$(eval $(call gb_ExternalPackage_add_file,libcdr,lib/cdr-0.0.lib,src/lib/.libs/libcdr-0.0.lib))
 else
 $(eval $(call gb_ExternalPackage_add_file,libcdr,lib/libcdr-0.0.a,src/lib/.libs/libcdr-0.0.a))
 endif
diff --git a/libcdr/ExternalProject_libcdr.mk b/libcdr/ExternalProject_libcdr.mk
index 431b9b4..9da895b 100644
--- a/libcdr/ExternalProject_libcdr.mk
+++ b/libcdr/ExternalProject_libcdr.mk
@@ -11,6 +11,8 @@ $(eval $(call gb_ExternalProject_ExternalProject,libcdr))
 
 $(eval $(call gb_ExternalProject_use_unpacked,libcdr,cdr))
 
+$(eval $(call gb_ExternalProject_use_autoconf,libcdr,build))
+
 $(eval $(call gb_ExternalProject_register_targets,libcdr,\
 	build \
 ))
@@ -23,48 +25,11 @@ $(eval $(call gb_ExternalProject_use_externals,libcdr,\
 	zlib \
 ))
 
-ifeq ($(OS)$(COM),WNTMSC)
-
-ifeq ($(VCVER),90)
-$(call gb_ExternalProject_get_state_target,libcdr,build) :
-	$(call gb_ExternalProject_run,build,\
-		export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& export LCMS2_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,lcms2/include) \
-		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-		&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& $(COMPATH)/vcpackages/vcbuild.exe libcdr.vcproj "Release|Win32" \
-	,build/win32)
-else ifeq ($(VCVER),100)
-$(call gb_ExternalProject_get_state_target,libcdr,build) :
-	$(call gb_ExternalProject_run,build,\
-		export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& export LCMS2_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,lcms2/include) \
-		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-		&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& msbuild.exe libcdr.vcxproj /p:Configuration=Release \
-	,build/win32)
-else
-$(call gb_ExternalProject_get_state_target,libcdr,build) :
-	$(call gb_ExternalProject_run,build,\
-		export LIBWPD_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& export LIBWPG_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& export LCMS2_INCLUDE_DIR=$(call gb_UnpackedTarball_get_dir,lcms2/include) \
-		&& export ZLIB_INCLUDE_DIR=$(OUTDIR)/inc/external/zlib \
-		&& export ICU_INCLUDE_DIR=$(OUTDIR)/inc/external \
-		&& msbuild.exe libcdr.vcxproj /p:PlatformToolset=v110 /p:VisualStudioVersion=11.0 /p:Configuration=Release \
-	,build/win32)
-endif
-
-else
-
 $(call gb_ExternalProject_get_state_target,libcdr,build) :
 	$(call gb_ExternalProject_run,build,\
 		export PKG_CONFIG="" \
 		&& export ICU_LIBS=" " \
-		$(if $(filter NO,$(SYSTEM_ICU)),&& export ICU_CFLAGS="-I$(OUTDIR)/inc/external") \
-		$(if $(filter YES,$(SYSTEM_ICU)),&& export ICU_CFLAGS=" ") \
+        && export ICU_CFLAGS="$(if $(filter NO,$(SYSTEM_ICU)),-I$(OUTDIR)/inc/external)" \
 		&& ./configure \
 			--with-pic \
 			--enable-static \
@@ -76,6 +41,4 @@ $(call gb_ExternalProject_get_state_target,libcdr,build) :
 		&& (cd $(EXTERNAL_WORKDIR)/src/lib && $(MAKE)) \
 	)
 
-endif
-
 # vim: set noet sw=4 ts=4:
commit a2423c6822f6a099c9822996d92deceebe63cf6e
Author: Fridrich Å trba <fridrich.strba at bluewin.ch>
Date:   Sat Mar 16 01:01:22 2013 +0100

    Fix build
    
    Change-Id: I7e0b7be9da04ff6055075b5c046f02c967bf59f2

diff --git a/vcl/unx/gtk/app/gtksys.cxx b/vcl/unx/gtk/app/gtksys.cxx
index 48bc239..bc06b25 100644
--- a/vcl/unx/gtk/app/gtksys.cxx
+++ b/vcl/unx/gtk/app/gtksys.cxx
@@ -18,6 +18,7 @@
  */
 
 #include <string.h>
+#include <gmodule.h>
 #include <gtk/gtk.h>
 #include <unx/gtk/gtkinst.hxx>
 #include <unx/gtk/gtksys.hxx>
commit 33b4c9938ddcf5555b55088531cce3f2493c1459
Author: Armin Le Grand <alg at apache.org>
Date:   Mon May 14 14:21:26 2012 +0000

    Resolves: #i119125# various actions implemented, clipping added.
    
    Esp hard was ImpSdrGDIMetaFileImport, but working now. Needed to hand-craft
    alpha addition for alpha in Metafile content and gradient of action. Also added
    better BitmapEx creation for convert to bitmap for draw objects.
    
    Conflicts:
    	svx/source/svdraw/svdxcgv.cxx
    	vcl/source/gdi/impgraph.cxx
    
    Change-Id: Ic6ac9fb3132dd122e16a5cd8f9c5ddd155ec9882

diff --git a/svx/inc/svx/svdpntv.hxx b/svx/inc/svx/svdpntv.hxx
index eca5710f..2e9bc25 100644
--- a/svx/inc/svx/svdpntv.hxx
+++ b/svx/inc/svx/svdpntv.hxx
@@ -113,6 +113,15 @@ private:
 class SdrPaintWindow;
 typedef ::std::vector< SdrPaintWindow* > SdrPaintWindowVector;
 
+//////////////////////////////////////////////////////////////////////////////
+// helper to convert any GDIMetaFile to a good quality BitmapEx,
+// using default parameters and graphic::XPrimitive2DRenderer
+
+BitmapEx SVX_DLLPUBLIC convertMetafileToBitmapEx(
+    const GDIMetaFile& rMtf,
+    const basegfx::B2DRange& rTargetRange,
+    const sal_uInt32 nMaximumQuadraticPixels = 500000);
+
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 
 class SVX_DLLPUBLIC SdrPaintView : public SfxListener, public SfxRepeatTarget, public SfxBroadcaster, public ::utl::ConfigurationListener
diff --git a/svx/source/svdraw/svdfmtf.cxx b/svx/source/svdraw/svdfmtf.cxx
index 4d9af43..583e54c 100644
--- a/svx/source/svdraw/svdfmtf.cxx
+++ b/svx/source/svdraw/svdfmtf.cxx
@@ -65,8 +65,9 @@
 #include <svx/xbtmpit.hxx>
 #include <svx/xfltrit.hxx>
 #include <vcl/bmpacc.hxx>
-#include <vcl/svgdata.hxx>
-#include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
+#include <svx/xflbmtit.hxx>
+#include <svx/xflbstit.hxx>
+#include <svx/svdpntv.hxx>
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -513,6 +514,8 @@ void ImpSdrGDIMetaFileImport::InsertObj(SdrObject* pObj, bool bScale)
 
                     pObj->SetMergedItem(XFillStyleItem(XFILL_BITMAP));
                     pObj->SetMergedItem(XFillBitmapItem(String(), Graphic(aClippedBitmap)));
+                    pObj->SetMergedItem(XFillBmpTileItem(false));
+                    pObj->SetMergedItem(XFillBmpStretchItem(true));
                 }
             }
         }
@@ -1399,21 +1402,16 @@ void ImpSdrGDIMetaFileImport::DoAction(MetaFloatTransparentAction& rAct)
 
     if(rMtf.GetActionSize())
     {
-        Rectangle aRect(rAct.GetPoint(),rAct.GetSize());
-        aRect.Right()++; aRect.Bottom()++;
-
-        // get metafile content as bitmap
-        const basegfx::B2DRange aTargetRange(
-            aRect.Left(), aRect.Top(), aRect.Right(), aRect.Bottom());
-        const drawinglayer::primitive2d::Primitive2DReference aMtf(
-            new drawinglayer::primitive2d::MetafilePrimitive2D(
-                basegfx::tools::createScaleTranslateB2DHomMatrix(
-                    aTargetRange.getRange(),
-                    aTargetRange.getMinimum()),
-                rMtf));
-        BitmapEx aBitmapEx(convertPrimitive2DSequenceToBitmapEx(
-            drawinglayer::primitive2d::Primitive2DSequence(&aMtf, 1),
-            aTargetRange));
+        const Rectangle aRect(rAct.GetPoint(),rAct.GetSize());
+
+        // convert metafile sub-content to BitmapEx
+        BitmapEx aBitmapEx(
+            convertMetafileToBitmapEx(
+                rMtf,
+                basegfx::B2DRange(
+                    aRect.Left(), aRect.Top(),
+                    aRect.Right(), aRect.Bottom()),
+                125000));
 
         // handle colors
         const Gradient& rGradient = rAct.GetGradient();
@@ -1435,12 +1433,14 @@ void ImpSdrGDIMetaFileImport::DoAction(MetaFloatTransparentAction& rAct)
         bool bCreateObject(true);
         bool bHasNewMask(false);
         AlphaMask aNewMask;
+        double fTransparence(0.0);
+        bool bFixedTransparence(false);
 
         if(bEqualColors || bNoSteps)
         {
             // single transparence
             const basegfx::BColor aMedium(basegfx::average(aStart, aEnd));
-            const double fTransparence(aMedium.luminance());
+            fTransparence = aMedium.luminance();
 
             if(basegfx::fTools::lessOrEqual(fTransparence, 0.0))
             {
@@ -1453,11 +1453,8 @@ void ImpSdrGDIMetaFileImport::DoAction(MetaFloatTransparentAction& rAct)
             }
             else
             {
-                // 0.0 < transparence < 1.0, apply
-                sal_uInt8 aAlpha(basegfx::fround(fTransparence * 255.0));
-
-                aNewMask = AlphaMask(aBitmapEx.GetBitmap().GetSizePixel(), &aAlpha);
-                bHasNewMask = true;
+                // 0.0 < transparence < 1.0, apply fixed transparence
+                bFixedTransparence = true;
             }
         }
         else
@@ -1474,11 +1471,18 @@ void ImpSdrGDIMetaFileImport::DoAction(MetaFloatTransparentAction& rAct)
 
         if(bCreateObject)
         {
-            if(bHasNewMask)
+            if(bHasNewMask || bFixedTransparence)
             {
                 if(!aBitmapEx.IsAlpha() && !aBitmapEx.IsTransparent())
                 {
                     // no transparence yet, apply new one
+                    if(bFixedTransparence)
+                    {
+                        sal_uInt8 aAlpha(basegfx::fround(fTransparence * 255.0));
+
+                        aNewMask = AlphaMask(aBitmapEx.GetBitmap().GetSizePixel(), &aAlpha);
+                    }
+
                     aBitmapEx = BitmapEx(aBitmapEx.GetBitmap(), aNewMask);
                 }
                 else
@@ -1499,40 +1503,69 @@ void ImpSdrGDIMetaFileImport::DoAction(MetaFloatTransparentAction& rAct)
                         aOldMask = aBitmapEx.GetBitmap().CreateMask(aBitmapEx.GetTransparentColor());
                     }
 
-                    BitmapReadAccess* pOld = aOldMask.AcquireReadAccess();
-                    BitmapWriteAccess* pNew = aNewMask.AcquireWriteAccess();
+                    BitmapWriteAccess* pOld = aOldMask.AcquireWriteAccess();
 
-                    if(pOld && pNew)
+                    if(pOld)
                     {
-                        if(pOld->Width() == pNew->Width() && pOld->Height() == pNew->Height())
+                        const double fFactor(1.0 / 255.0);
+
+                        if(bFixedTransparence)
                         {
-                            for(sal_uInt32 y(0); y < pNew->Height(); y++)
+                            const double fOpNew(1.0 - fTransparence);
+
+                            for(sal_uInt32 y(0); y < pOld->Height(); y++)
                             {
-                                for(sal_uInt32 x(0); x < pNew->Width(); x++)
+                                for(sal_uInt32 x(0); x < pOld->Width(); x++)
                                 {
-                                    const BitmapColor aColOld(pOld->GetPixel(y, x));
-                                    const BitmapColor aColNew(pNew->GetPixel(y, x));
-                                    const sal_uInt16 aCombine(sal_uInt16(aColOld.GetIndex()) + sal_uInt16(aColNew.GetIndex()));
+                                    const double fOpOld(1.0 - (pOld->GetPixel(y, x).GetIndex() * fFactor));
+                                    const sal_uInt8 aCol(basegfx::fround((1.0 - (fOpOld * fOpNew)) * 255.0));
 
-                                    pNew->SetPixel(y, x, BitmapColor(aCombine > 255 ? 255 : sal_uInt8(aCombine)));
+                                    pOld->SetPixel(y, x, BitmapColor(aCol));
                                 }
                             }
                         }
                         else
                         {
-                            OSL_ENSURE(false, "Alpha masks have different sizes (!)");
+                            BitmapReadAccess* pNew = aNewMask.AcquireReadAccess();
+
+                            if(pNew)
+                            {
+                                if(pOld->Width() == pNew->Width() && pOld->Height() == pNew->Height())
+                                {
+                                    for(sal_uInt32 y(0); y < pOld->Height(); y++)
+                                    {
+                                        for(sal_uInt32 x(0); x < pOld->Width(); x++)
+                                        {
+                                            const double fOpOld(1.0 - (pOld->GetPixel(y, x).GetIndex() * fFactor));
+                                            const double fOpNew(1.0 - (pNew->GetPixel(y, x).GetIndex() * fFactor));
+                                            const sal_uInt8 aCol(basegfx::fround((1.0 - (fOpOld * fOpNew)) * 255.0));
+
+                                            pOld->SetPixel(y, x, BitmapColor(aCol));
+                                        }
+                                    }
+                                }
+                                else
+                                {
+                                    OSL_ENSURE(false, "Alpha masks have different sizes (!)");
+                                }
+
+                                aNewMask.ReleaseAccess(pNew);
+                            }
+                            else
+                            {
+                                OSL_ENSURE(false, "Got no access to new alpha mask (!)");
+                            }
                         }
 
                         aOldMask.ReleaseAccess(pOld);
-                        aNewMask.ReleaseAccess(pNew);
                     }
                     else
                     {
-                        OSL_ENSURE(false, "Got no access to alpha bitmaps (!)");
+                        OSL_ENSURE(false, "Got no access to old alpha mask (!)");
                     }
 
                     // apply combined bitmap as mask
-                    aBitmapEx = BitmapEx(aBitmapEx.GetBitmap(), aNewMask);
+                    aBitmapEx = BitmapEx(aBitmapEx.GetBitmap(), aOldMask);
                 }
             }
 
diff --git a/svx/source/svdraw/svdpntv.cxx b/svx/source/svdraw/svdpntv.cxx
index 3f53923..6e9993a 100644
--- a/svx/source/svdraw/svdpntv.cxx
+++ b/svx/source/svdraw/svdpntv.cxx
@@ -54,11 +54,11 @@
 #include <vcl/svapp.hxx>
 #include <com/sun/star/awt/PosSize.hpp>
 #include <com/sun/star/awt/XControl.hpp>
-
-// #i38135#
 #include <svx/sdr/contact/objectcontact.hxx>
 #include <svx/sdr/animation/objectanimator.hxx>
 #include <svx/sdr/contact/viewcontact.hxx>
+#include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
 
 using namespace ::rtl;
 using namespace ::com::sun::star;
@@ -136,6 +136,32 @@ SvxViewHint::HintType SvxViewHint::GetHintType (void) const
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 
+BitmapEx convertMetafileToBitmapEx(
+    const GDIMetaFile& rMtf,
+    const basegfx::B2DRange& rTargetRange,
+    const sal_uInt32 nMaximumQuadraticPixels)
+{
+    BitmapEx aBitmapEx;
+
+    if(rMtf.GetActionSize())
+    {
+        const drawinglayer::primitive2d::Primitive2DReference aMtf(
+            new drawinglayer::primitive2d::MetafilePrimitive2D(
+                basegfx::tools::createScaleTranslateB2DHomMatrix(
+                    rTargetRange.getRange(),
+                    rTargetRange.getMinimum()),
+                rMtf));
+        aBitmapEx = convertPrimitive2DSequenceToBitmapEx(
+            drawinglayer::primitive2d::Primitive2DSequence(&aMtf, 1),
+            rTargetRange,
+            nMaximumQuadraticPixels);
+    }
+
+    return aBitmapEx;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
 TYPEINIT2(SdrPaintView,SfxListener,SfxRepeatTarget);
 
 DBG_NAME(SdrPaintView);
diff --git a/svx/source/svdraw/svdxcgv.cxx b/svx/source/svdraw/svdxcgv.cxx
index 6256e23..a85b378 100644
--- a/svx/source/svdraw/svdxcgv.cxx
+++ b/svx/source/svdraw/svdxcgv.cxx
@@ -19,11 +19,12 @@
 
 #include <vector>
 #include <editeng/editeng.hxx>
-#include "svx/xexch.hxx"
+#include <rtl/strbuf.hxx>
+#include <svx/xexch.hxx>
 #include <svx/xflclit.hxx>
 #include <svx/svdxcgv.hxx>
 #include <svx/svdoutl.hxx>
-#include "svx/svditext.hxx"
+#include <svx/svditext.hxx>
 #include <svx/svdetc.hxx>
 #include <svx/svdundo.hxx>
 #include <svx/svdograf.hxx>
@@ -42,16 +43,11 @@
 #include <svl/itempool.hxx>
 #include <tools/bigint.hxx>
 #include <sot/formats.hxx>
-
-// #i13033#
 #include <clonelist.hxx>
 #include <vcl/virdev.hxx>
-
 #include <svl/style.hxx>
-
-// #i72535#
-#include "fmobj.hxx"
-#include <rtl/strbuf.hxx>
+#include <fmobj.hxx>
+#include <vcl/svgdata.hxx>
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -442,8 +438,6 @@ void SdrExchangeView::ImpPasteObject(SdrObject* pObj, SdrObjList& rLst, const Po
     }
 }
 
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
 BitmapEx SdrExchangeView::GetMarkedObjBitmapEx(bool bNoVDevIfOneBmpMarked) const
 {
     BitmapEx aBmp;
@@ -475,18 +469,14 @@ BitmapEx SdrExchangeView::GetMarkedObjBitmapEx(bool bNoVDevIfOneBmpMarked) const
 
         if( !aBmp )
         {
-            const Graphic aGraphic(GetMarkedObjMetaFile(bNoVDevIfOneBmpMarked));
-
-            // #i102089# support user's settings of AA and LineSnap when the MetaFile gets
-            // raster-converted to a bitmap
-            const SvtOptionsDrawinglayer aDrawinglayerOpt;
-            const GraphicConversionParameters aParameters(
-                Size(),
-                false,
-                aDrawinglayerOpt.IsAntiAliasing(),
-                aDrawinglayerOpt.IsSnapHorVerLinesToDiscrete());
-
-            aBmp = aGraphic.GetBitmapEx(aParameters);
+            const GDIMetaFile aGDIMetaFile(GetMarkedObjMetaFile(bNoVDevIfOneBmpMarked));
+            const Rectangle aBound(GetMarkedObjBoundRect());
+
+            aBmp = convertMetafileToBitmapEx(
+                aGDIMetaFile,
+                basegfx::B2DRange(
+                    aBound.Left(), aBound.Top(),
+                    aBound.Right(), aBound.Bottom()));
         }
     }
 
diff --git a/vcl/inc/vcl/svgdata.hxx b/vcl/inc/vcl/svgdata.hxx
index eaba004..8de8d3a 100644
--- a/vcl/inc/vcl/svgdata.hxx
+++ b/vcl/inc/vcl/svgdata.hxx
@@ -40,7 +40,8 @@ typedef ::com::sun::star::uno::Sequence< Primitive2DReference > Primitive2DSeque
 
 BitmapEx VCL_DLLPUBLIC convertPrimitive2DSequenceToBitmapEx(
     const Primitive2DSequence& rSequence,
-    const basegfx::B2DRange& rTargetRange);
+    const basegfx::B2DRange& rTargetRange,
+    const sal_uInt32 nMaximumQuadraticPixels = 500000);
 
 //////////////////////////////////////////////////////////////////////////////
 
diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx
index 2421bcb..fc161a2 100644
--- a/vcl/source/gdi/impgraph.cxx
+++ b/vcl/source/gdi/impgraph.cxx
@@ -25,9 +25,7 @@
 #include <tools/debug.hxx>
 #include <tools/stream.hxx>
 #include <tools/helpers.hxx>
-
 #include <ucbhelper/content.hxx>
-
 #include <unotools/ucbstreamhelper.hxx>
 #include <unotools/tempfile.hxx>
 #include <vcl/outdev.hxx>
@@ -36,9 +34,7 @@
 #include <vcl/cvtgrf.hxx>
 #include <vcl/graph.hxx>
 #include <vcl/metaact.hxx>
-
 #include <impgraph.hxx>
-
 #include <com/sun/star/ucb/CommandAbortedException.hpp>
 
 // -----------
diff --git a/vcl/source/gdi/svgdata.cxx b/vcl/source/gdi/svgdata.cxx
index 9772e92..1db7c37 100644
--- a/vcl/source/gdi/svgdata.cxx
+++ b/vcl/source/gdi/svgdata.cxx
@@ -37,7 +37,8 @@ using namespace ::com::sun::star;
 
 BitmapEx VCL_DLLPUBLIC convertPrimitive2DSequenceToBitmapEx(
     const Primitive2DSequence& rSequence,
-    const basegfx::B2DRange& rTargetRange)
+    const basegfx::B2DRange& rTargetRange,
+    const sal_uInt32 nMaximumQuadraticPixels)
 {
     BitmapEx aRetval;
 
@@ -72,7 +73,7 @@ BitmapEx VCL_DLLPUBLIC convertPrimitive2DSequenceToBitmapEx(
                         aDPI.getWidth(),
                         aDPI.getHeight(),
                         aRealRect,
-                        500000));
+                        nMaximumQuadraticPixels));
 
                 if(xBitmap.is())
                 {
commit e799a47983c6e9f0ff312124ebf8fbea1e336b66
Author: Julien Nabet <serval2412 at yahoo.fr>
Date:   Sat Mar 16 00:18:40 2013 +0100

    coverity#738979 Use after free
    
    Change-Id: I843556f18542ac601fd7e16c6f51218ef913de31
    Reviewed-on: https://gerrit.libreoffice.org/2766
    Reviewed-by: Fridrich Strba <fridrich at documentfoundation.org>
    Tested-by: Fridrich Strba <fridrich at documentfoundation.org>

diff --git a/svx/source/gallery2/galtheme.cxx b/svx/source/gallery2/galtheme.cxx
index 0afd03e..952898b 100644
--- a/svx/source/gallery2/galtheme.cxx
+++ b/svx/source/gallery2/galtheme.cxx
@@ -604,11 +604,11 @@ void GalleryTheme::Actualize( const Link& rActualizeLink, GalleryProgress* pProg
             if( pEntry->bDummy )
             {
                 Broadcast( GalleryHint( GALLERY_HINT_CLOSE_OBJECT, GetName(), reinterpret_cast< sal_uIntPtr >( pEntry ) ) );
+                Broadcast( GalleryHint( GALLERY_HINT_OBJECT_REMOVED, GetName(), reinterpret_cast< sal_uLong >( pEntry ) ) );
                 GalleryObjectList::iterator it = aObjectList.begin();
                 ::std::advance( it, i );
                 aObjectList.erase( it );
                 delete pEntry;
-                Broadcast( GalleryHint( GALLERY_HINT_OBJECT_REMOVED, GetName(), reinterpret_cast< sal_uLong >( pEntry ) ) );
             }
             else ++i;
         }
commit 1ce6d6d4133865d9616e12228be2c04cbba1976c
Author: Peter Foley <pefoley2 at verizon.net>
Date:   Fri Mar 15 19:04:10 2013 -0400

    remove unneeded patch after gcc-wrapper conversion
    
    Change-Id: I913f467478a5a600159d9e982a9dfddad04596ae

diff --git a/liblangtag/UnpackedTarball_langtag.mk b/liblangtag/UnpackedTarball_langtag.mk
index 36b0941..4ad5f82 100644
--- a/liblangtag/UnpackedTarball_langtag.mk

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list