[Libreoffice-commits] core.git: Branch 'feature/smaller-base-cell' - 16 commits - desktop/Pagein_common.mk odk/docs odk/examples odk/index.html odk/index_online.html sc/inc sc/Library_sc.mk sc/source solenv/bin solenv/gbuild svtools/source sw/source

Kohei Yoshida kohei.yoshida at gmail.com
Wed Feb 6 07:50:45 PST 2013


Rebased ref, commits from common ancestor:
commit 93bc47b12923af03f720e1f815a8bcde4384ef35
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Wed Nov 7 09:30:48 2012 -0500

    Let's use a separate class to manage storage of cell text widths.
    
    Change-Id: I5c823dea4d2e1fd17fae466be26ebff2aa24ecb6

diff --git a/sc/Library_sc.mk b/sc/Library_sc.mk
index 865f5f0..10605bf 100644
--- a/sc/Library_sc.mk
+++ b/sc/Library_sc.mk
@@ -100,6 +100,7 @@ $(eval $(call gb_Library_add_exception_objects,sc,\
 	sc/source/core/data/bcaslot \
 	sc/source/core/data/cell \
 	sc/source/core/data/cell2 \
+	sc/source/core/data/celltextwidths \
 	sc/source/core/data/clipparam \
 	sc/source/core/data/column \
 	sc/source/core/data/column2 \
diff --git a/sc/inc/cell.hxx b/sc/inc/cell.hxx
index d146a98..455fdc8 100644
--- a/sc/inc/cell.hxx
+++ b/sc/inc/cell.hxx
@@ -38,7 +38,6 @@
 #include "scdllapi.h"
 
 #define USE_MEMPOOL
-#define TEXTWIDTH_DIRTY     0xffff
 
 // in addition to SCRIPTTYPE_... flags from scripttypeitem.hxx:
 // set (in nScriptType) if type has not been determined yet
diff --git a/sc/inc/celltextwidths.hxx b/sc/inc/celltextwidths.hxx
new file mode 100644
index 0000000..ef4499b
--- /dev/null
+++ b/sc/inc/celltextwidths.hxx
@@ -0,0 +1,37 @@
+/* -*- 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/.
+ */
+
+#ifndef __SC_CELLTEXTWIDTHS_HXX__
+#define __SC_CELLTEXTWIDTHS_HXX__
+
+#include "address.hxx"
+#include "sal/types.h"
+
+#include <mdds/multi_type_vector.hpp>
+#include <mdds/multi_type_vector_trait.hpp>
+
+class ScCellTextWidths
+{
+    typedef mdds::multi_type_vector<mdds::mtv::element_block_func> StoreType;
+    StoreType maStore;
+
+public:
+    static sal_uInt16 Dirty;
+
+    ScCellTextWidths();
+
+    sal_uInt16 get(SCROW nRow) const;
+    void set(SCROW nRow, sal_uInt16 nWidth);
+};
+
+#define TEXTWIDTH_DIRTY ScCellTextWidths::Dirty
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/cell.cxx b/sc/source/core/data/cell.cxx
index 0967e81..78cdd46 100644
--- a/sc/source/core/data/cell.cxx
+++ b/sc/source/core/data/cell.cxx
@@ -40,6 +40,7 @@
 #include "externalrefmgr.hxx"
 #include "macromgr.hxx"
 #include "dbdata.hxx"
+#include "celltextwidths.hxx"
 
 #include <editeng/editobj.hxx>
 #include <svl/intitem.hxx>
diff --git a/sc/source/core/data/celltextwidths.cxx b/sc/source/core/data/celltextwidths.cxx
new file mode 100644
index 0000000..39240d3
--- /dev/null
+++ b/sc/source/core/data/celltextwidths.cxx
@@ -0,0 +1,35 @@
+/* -*- 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/.
+ */
+
+#include "celltextwidths.hxx"
+
+sal_uInt16 ScCellTextWidths::Dirty = 0xFFFF;
+
+ScCellTextWidths::ScCellTextWidths() :
+    maStore(MAXROWCOUNT) {}
+
+sal_uInt16 ScCellTextWidths::get(SCROW nRow) const
+{
+    switch (maStore.get_type(nRow))
+    {
+        case mdds::mtv::element_type_ushort:
+            return maStore.get<unsigned short>(nRow);
+        default:
+            ;
+    }
+    return Dirty;
+}
+
+void ScCellTextWidths::set(SCROW nRow, sal_uInt16 nWidth)
+{
+    // We only use unsigned short type in this container.
+    maStore.set(nRow, static_cast<unsigned short>(nWidth));
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index 682a7bb..b8b1b84 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -29,6 +29,7 @@
 #include "markdata.hxx"
 #include "detfunc.hxx"          // for Notes in Sort/Swap
 #include "postit.hxx"
+#include "celltextwidths.hxx"
 
 #include <svl/poolcach.hxx>
 #include <svl/zforlist.hxx>
@@ -36,8 +37,6 @@
 
 #include <cstring>
 #include <map>
-#include <mdds/multi_type_vector.hpp>
-#include <mdds/multi_type_vector_trait.hpp>
 
 using ::editeng::SvxBorderLine;
 using namespace formula;
@@ -57,11 +56,7 @@ inline bool IsAmbiguousScriptNonZero( sal_uInt8 nScript )
 
 struct ScColumnImpl
 {
-    typedef mdds::multi_type_vector<mdds::mtv::element_block_func> TextWidthType;
-
-    TextWidthType maTextWidths;
-
-    ScColumnImpl() : maTextWidths(MAXROWCOUNT) {}
+    ScCellTextWidths maTextWidths;
 };
 
 ScNeededSizeOptions::ScNeededSizeOptions() :
@@ -2296,14 +2291,7 @@ bool ScColumn::SearchStyleRange(
 
 sal_uInt16 ScColumn::GetTextWidth(SCROW nRow) const
 {
-    switch (mpImpl->maTextWidths.get_type(nRow))
-    {
-        case mdds::mtv::element_type_ushort:
-            return mpImpl->maTextWidths.get<unsigned short>(nRow);
-        default:
-            ;
-    }
-    return TEXTWIDTH_DIRTY;
+    return mpImpl->maTextWidths.get(nRow);
 }
 
 void ScColumn::SetTextWidth(SCROW nRow, sal_uInt16 nWidth)
diff --git a/sc/source/core/data/documen8.cxx b/sc/source/core/data/documen8.cxx
index 134fdf3..dda01d7 100644
--- a/sc/source/core/data/documen8.cxx
+++ b/sc/source/core/data/documen8.cxx
@@ -85,6 +85,7 @@
 #include "dpobject.hxx"
 #include "docuno.hxx"
 #include "scresid.hxx"
+#include "celltextwidths.hxx"
 
 #define GET_SCALEVALUE(set,id)  ((const SfxUInt16Item&)(set.Get( id ))).GetValue()
 
diff --git a/sc/source/core/data/table1.cxx b/sc/source/core/data/table1.cxx
index 446686e..49083b7 100644
--- a/sc/source/core/data/table1.cxx
+++ b/sc/source/core/data/table1.cxx
@@ -44,6 +44,7 @@
 #include "dbdata.hxx"
 #include "colorscale.hxx"
 #include "conditio.hxx"
+#include "celltextwidths.hxx"
 
 #include <vector>
 
diff --git a/sc/source/core/data/table5.cxx b/sc/source/core/data/table5.cxx
index ffbda84..0e9a81d 100644
--- a/sc/source/core/data/table5.cxx
+++ b/sc/source/core/data/table5.cxx
@@ -36,6 +36,8 @@
 #include "tabprotection.hxx"
 #include "globstr.hrc"
 #include "segmenttree.hxx"
+#include "celltextwidths.hxx"
+
 #include <com/sun/star/sheet/TablePageBreakData.hpp>
 
 #include <algorithm>
commit b17a10f04cad7ba66801f0b7813b70945d0c1584
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Nov 6 22:08:42 2012 -0500

    Add accessor methods for text widths using mdds::multi_type_vector.
    
    We only use unsigned short and empty types in this container.  Empty type
    represents empty cells whereas unsigned short type represents non-empty
    cells.
    
    Change-Id: Id9b6e0941fdfabc48fc8bb2aa6479f466270381c

diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index 4a64616..682a7bb 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -36,6 +36,8 @@
 
 #include <cstring>
 #include <map>
+#include <mdds/multi_type_vector.hpp>
+#include <mdds/multi_type_vector_trait.hpp>
 
 using ::editeng::SvxBorderLine;
 using namespace formula;
@@ -55,6 +57,11 @@ inline bool IsAmbiguousScriptNonZero( sal_uInt8 nScript )
 
 struct ScColumnImpl
 {
+    typedef mdds::multi_type_vector<mdds::mtv::element_block_func> TextWidthType;
+
+    TextWidthType maTextWidths;
+
+    ScColumnImpl() : maTextWidths(MAXROWCOUNT) {}
 };
 
 ScNeededSizeOptions::ScNeededSizeOptions() :
@@ -2287,5 +2294,22 @@ bool ScColumn::SearchStyleRange(
         return pAttrArray->SearchStyleRange( rRow, rEndRow, pSearchStyle, bUp, NULL );
 }
 
+sal_uInt16 ScColumn::GetTextWidth(SCROW nRow) const
+{
+    switch (mpImpl->maTextWidths.get_type(nRow))
+    {
+        case mdds::mtv::element_type_ushort:
+            return mpImpl->maTextWidths.get<unsigned short>(nRow);
+        default:
+            ;
+    }
+    return TEXTWIDTH_DIRTY;
+}
+
+void ScColumn::SetTextWidth(SCROW nRow, sal_uInt16 nWidth)
+{
+    // We only use unsigned short type in this container.
+    mpImpl->maTextWidths.set(nRow, static_cast<unsigned short>(nWidth));
+}
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index b764155..df5c172 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -1956,13 +1956,4 @@ xub_StrLen ScColumn::GetMaxNumberStringLen(
     return nStringLen;
 }
 
-sal_uInt16 ScColumn::GetTextWidth(SCROW nRow) const
-{
-    return 0;
-}
-
-void ScColumn::SetTextWidth(SCROW nRow, sal_uInt16 nWidth)
-{
-}
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 98f6eba9c6b414309a2defa552431a48e010cfda
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Nov 6 19:15:11 2012 -0500

    Let's start using impl class for ScColumn.
    
    No need to migrate the existing data members to it for now, but let's
    define new members in the impl class from now on.
    
    Change-Id: Idee66dae87beb4bb6efc9c7d7ffd658148ed887c

diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 8653bfd..39f9753 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -58,6 +58,7 @@ struct ScMergePatternState;
 class ScFlatBoolRowSegments;
 struct ScSetStringParam;
 struct ScColWidthParam;
+struct ScColumnImpl;
 
 struct ScNeededSizeOptions
 {
@@ -79,6 +80,8 @@ struct ColEntry
 class ScColumn
 {
 private:
+    ScColumnImpl* mpImpl;
+
     SCCOL           nCol;
     SCTAB           nTab;
 
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index b91e6df..4a64616 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -40,6 +40,8 @@
 using ::editeng::SvxBorderLine;
 using namespace formula;
 
+namespace {
+
 inline bool IsAmbiguousScriptNonZero( sal_uInt8 nScript )
 {
     //! move to a header file
@@ -49,12 +51,19 @@ inline bool IsAmbiguousScriptNonZero( sal_uInt8 nScript )
              nScript != 0 );
 }
 
+}
+
+struct ScColumnImpl
+{
+};
+
 ScNeededSizeOptions::ScNeededSizeOptions() :
     pPattern(NULL), bFormula(false), bSkipMerged(true), bGetFont(true), bTotalSize(false)
 {
 }
 
 ScColumn::ScColumn() :
+    mpImpl(new ScColumnImpl),
     nCol( 0 ),
     pAttrArray( NULL ),
     pDocument( NULL )
commit f5c6729bc81b17160d1e02f7177e9eb4d3bea39a
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Nov 6 17:14:54 2012 -0500

    Add empty GetTextWidth() to ScColumn. Will be implemented later.
    
    Change-Id: I4df0719fee426ab5d54bfc2ac8fa4c37325906e2

diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 257cb0e..8653bfd 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -371,6 +371,7 @@ public:
     xub_StrLen  GetMaxNumberStringLen( sal_uInt16& nPrecision,
                                        SCROW nRowStart, SCROW nRowEnd ) const;
 
+    sal_uInt16 GetTextWidth(SCROW nRow) const;
     void SetTextWidth(SCROW nRow, sal_uInt16 nWidth);
 
 private:
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index dc11a28..b764155 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -1956,6 +1956,11 @@ xub_StrLen ScColumn::GetMaxNumberStringLen(
     return nStringLen;
 }
 
+sal_uInt16 ScColumn::GetTextWidth(SCROW nRow) const
+{
+    return 0;
+}
+
 void ScColumn::SetTextWidth(SCROW nRow, sal_uInt16 nWidth)
 {
 }
commit e8ff4e65456c80888676f63cad71f9ce90b973bf
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Nov 6 16:13:37 2012 -0500

    Identify all places that modify the cell array & call CellStorageModified().
    
    CellStorageModified() is empty at the moment.
    
    Change-Id: I9498b4d7819bba1778cbab644e7b46ce25d66ae4

diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 6c8e0e0..257cb0e 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -371,6 +371,8 @@ public:
     xub_StrLen  GetMaxNumberStringLen( sal_uInt16& nPrecision,
                                        SCROW nRowStart, SCROW nRowEnd ) const;
 
+    void SetTextWidth(SCROW nRow, sal_uInt16 nWidth);
+
 private:
     ScBaseCell* CloneCell(SCSIZE nIndex, sal_uInt16 nFlags, ScDocument& rDestDoc, const ScAddress& rDestPos) const;
 
@@ -378,8 +380,10 @@ private:
     SCROW FindNextVisibleRow(SCROW nRow, bool bForward) const;
 
     /**
-     * Called whenever the state of cell array gets modified i.e. a new cell
-     * is inserted, a cell is moved or removed, cells are swapped, and so on.
+     * Called whenever the state of cell array gets modified i.e. new cell
+     * insertion, cell removal or relocation, cell value update and so on.
+     *
+     * Call this only from those methods where maItems is modified directly.
      */
     void CellStorageModified();
 };
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index fc22a5b..b91e6df 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -795,14 +795,14 @@ void lclTakeBroadcaster( ScBaseCell*& rpCell, SvtBroadcaster* pBC )
 
 void ScColumn::SwapRow(SCROW nRow1, SCROW nRow2)
 {
+    if (nRow1 == nRow2)
+        // Nothing to swap.
+        return;
+
     /*  Simple swap of cell pointers does not work if broadcasters exist (crash
         if cell broadcasts directly or indirectly to itself). While swapping
         the cells, broadcasters have to remain at old positions! */
 
-    /*  While cloning cells, do not clone notes, but move note pointers to new
-        cells. This prevents creation of new caption drawing objects for every
-        swap operation while sorting. */
-
     ScBaseCell* pCell1 = 0;
     SCSIZE nIndex1;
     if ( Search( nRow1, nIndex1 ) )
@@ -852,6 +852,8 @@ void ScColumn::SwapRow(SCROW nRow1, SCROW nRow2)
             SvtBroadcaster* pBC2 = pCell2->ReleaseBroadcaster();
             pCell1->TakeBroadcaster( pBC2 );
             pCell2->TakeBroadcaster( pBC1 );
+
+            CellStorageModified();
         }
         else
         {
@@ -860,11 +862,13 @@ void ScColumn::SwapRow(SCROW nRow1, SCROW nRow2)
             {
                 // insert dummy note cell (without note) containing old broadcaster
                 maItems[nIndex1].pCell = pDummyCell;
+                CellStorageModified();
             }
             else
             {
                 // remove ColEntry at old position
                 maItems.erase( maItems.begin() + nIndex1 );
+                CellStorageModified();
             }
 
             // insert ColEntry at new position
@@ -912,8 +916,7 @@ void ScColumn::SwapRow(SCROW nRow1, SCROW nRow2)
     }
 
     /*  Create clone of pCell1 at position of pCell2 (pCell1 exists always, see
-        variable swapping above). Do not clone the note, but move pointer of
-        old note to new cell. */
+        variable swapping above).*/
     ScBaseCell* pNew2 = pCell1->Clone( *pDocument, aPos2, SC_CLONECELL_ADJUST3DREL );
 
     /*  Create clone of pCell2 at position of pCell1. Do not clone the note,
@@ -973,7 +976,10 @@ void ScColumn::SwapCell( SCROW nRow, ScColumn& rCol)
     {
         // Tauschen
         maItems[nIndex1].pCell = pCell2;
+        CellStorageModified();
         rCol.maItems[nIndex2].pCell = pCell1;
+        rCol.CellStorageModified();
+
         // Referenzen aktualisieren
         SCsCOL dx = rCol.nCol - nCol;
         if ( pFmlaCell1 )
@@ -995,6 +1001,8 @@ void ScColumn::SwapCell( SCROW nRow, ScColumn& rCol)
     {
         // Loeschen
         maItems.erase(maItems.begin() + nIndex1);
+        CellStorageModified();
+
         // Referenzen aktualisieren
         SCsCOL dx = rCol.nCol - nCol;
         if ( pFmlaCell1 )
@@ -1150,6 +1158,8 @@ void ScColumn::InsertRow( SCROW nStartRow, SCSIZE nSize )
     }
 
     pDocument->SetAutoCalc( bOldAutoCalc );
+
+    CellStorageModified();
 }
 
 
@@ -1545,6 +1555,8 @@ void ScColumn::MarkScenarioIn( ScMarkData& rDestMark ) const
 void ScColumn::SwapCol(ScColumn& rCol)
 {
     maItems.swap(rCol.maItems);
+    CellStorageModified();
+    rCol.CellStorageModified();
 
     ScAttrArray* pTempAttr = rCol.pAttrArray;
     rCol.pAttrArray = pAttrArray;
@@ -1637,9 +1649,11 @@ void ScColumn::MoveTo(SCROW nStartRow, SCROW nEndRow, ScColumn& rCol)
             }
             // Erase the slots containing pointers to the dummy cell instance.
             maItems.erase(maItems.begin() + nStartPos, maItems.begin() + nStopPos);
+            CellStorageModified();
         }
         pNoteCell->Delete(); // Delete the dummy cell instance.
     }
+
 }
 
 bool ScColumn::UpdateReference( UpdateRefMode eUpdateRefMode, SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
@@ -1780,6 +1794,7 @@ void ScColumn::UpdateInsertTabOnlyCells(SCTAB nInsPos, SCTAB nNewSheets)
             {
                 ScEditCell* p = static_cast<ScEditCell*>(maItems[i].pCell);
                 p->UpdateFields(nTab);
+                SetTextWidth(maItems[i].nRow, TEXTWIDTH_DIRTY);
             }
             break;
             default:
@@ -1810,6 +1825,7 @@ void ScColumn::UpdateInsertTabAbs(SCTAB nNewPos)
             {
                 ScEditCell* p = static_cast<ScEditCell*>(maItems[i].pCell);
                 p->UpdateFields(nTab);
+                SetTextWidth(maItems[i].nRow, TEXTWIDTH_DIRTY);
             }
             break;
             default:
@@ -1859,6 +1875,7 @@ void ScColumn::UpdateDeleteTab(SCTAB nDelPos, bool bIsMove, ScColumn* pRefUndo,
             {
                 ScEditCell* p = static_cast<ScEditCell*>(maItems[i].pCell);
                 p->UpdateFields(nTab);
+                SetTextWidth(maItems[i].nRow, TEXTWIDTH_DIRTY);
             }
             break;
             default:
@@ -1891,6 +1908,7 @@ void ScColumn::UpdateMoveTab( SCTAB nOldPos, SCTAB nNewPos, SCTAB nTabNo )
             {
                 ScEditCell* p = static_cast<ScEditCell*>(maItems[i].pCell);
                 p->UpdateFields(nTab);
+                SetTextWidth(maItems[i].nRow, TEXTWIDTH_DIRTY);
             }
             break;
             default:
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 043cec9..dc11a28 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -87,12 +87,14 @@ void ScColumn::Insert( SCROW nRow, ScBaseCell* pNewCell )
             }
             pOldCell->Delete();
             maItems[nIndex].pCell = pNewCell;
+            CellStorageModified();
         }
         else
         {
             maItems.insert(maItems.begin() + nIndex, ColEntry());
             maItems[nIndex].pCell = pNewCell;
             maItems[nIndex].nRow  = nRow;
+            CellStorageModified();
         }
     }
     // Bei aus Clipboard sind hier noch falsche (alte) Referenzen!
@@ -136,6 +138,8 @@ void ScColumn::Append( SCROW nRow, ScBaseCell* pCell )
     maItems.push_back(ColEntry());
     maItems.back().pCell = pCell;
     maItems.back().nRow  = nRow;
+
+    CellStorageModified();
 }
 
 
@@ -162,6 +166,8 @@ void ScColumn::Delete( SCROW nRow )
         }
         pCell->EndListeningTo( pDocument );
         pCell->Delete();
+
+        CellStorageModified();
     }
 }
 
@@ -177,6 +183,8 @@ void ScColumn::DeleteAtIndex( SCSIZE nIndex )
     maItems.erase(maItems.begin() + nIndex);
     pCell->EndListeningTo( pDocument );
     pCell->Delete();
+
+    CellStorageModified();
 }
 
 
@@ -185,6 +193,8 @@ void ScColumn::FreeAll()
     for (SCSIZE i = 0; i < maItems.size(); i++)
         maItems[i].pCell->Delete();
     maItems.clear();
+
+    CellStorageModified();
 }
 
 
@@ -481,6 +491,7 @@ void ScColumn::DeleteRange( SCSIZE nStartIndex, SCSIZE nEndIndex, sal_uInt16 nDe
         if (bRemoved)
             nShift += maItems.size() - nStartSegment;
         maItems.erase(maItems.end() - nShift, maItems.end());
+        CellStorageModified();
     }
 
     // *** delete all formula cells ***
@@ -1408,8 +1419,11 @@ bool ScColumn::SetString( SCROW nRow, SCTAB nTabP, const String& rString,
                     if ( i >= maItems.size() || maItems[i].nRow != nRow )
                         Search(nRow, i);
                 }
+
                 pOldCell->Delete();
                 maItems[i].pCell = pNewCell;         // ersetzen
+                CellStorageModified();
+
                 if ( pNewCell->GetCellType() == CELLTYPE_FORMULA )
                 {
                     pNewCell->StartListeningTo( pDocument );
@@ -1631,6 +1645,8 @@ void ScColumn::RemoveProtected( SCROW nStartRow, SCROW nEndRow )
                         maItems[nIndex].pCell = new ScStringCell( aString );
                     }
                     delete pFormula;
+
+                    CellStorageModified();
                 }
                 ++nIndex;
             }
@@ -1940,4 +1956,8 @@ xub_StrLen ScColumn::GetMaxNumberStringLen(
     return nStringLen;
 }
 
+void ScColumn::SetTextWidth(SCROW nRow, sal_uInt16 nWidth)
+{
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit ffafb6883031615b0cf4d997ead614e5caf2e8b9
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Nov 6 13:53:57 2012 -0500

    Redundant use of 'public' modifier.
    
    Plus added a new method that will get called whenever cell array
    state changes.  It's not used yet.
    
    Change-Id: I96719db0460bfb72d8dbe98a80a3880d8f279c33

diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 35316cd..6c8e0e0 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -342,7 +342,6 @@ public:
         SCROW nStartRow, SCROW nEndRow, sal_uInt16* pHeight, OutputDevice* pDev,
         double nPPTX, double nPPTY, const Fraction& rZoomX, const Fraction& rZoomY,
         bool bShrink, sal_uInt16 nMinHeight, SCROW nMinStart) const;
-public:
 
                 /// Including current, may return -1
     SCsROW      GetNextUnprotected( SCROW nRow, bool bUp ) const;
@@ -377,6 +376,12 @@ private:
 
     SCROW FindNextVisibleRowWithContent(SCROW nRow, bool bForward) const;
     SCROW FindNextVisibleRow(SCROW nRow, bool bForward) const;
+
+    /**
+     * Called whenever the state of cell array gets modified i.e. a new cell
+     * is inserted, a cell is moved or removed, cells are swapped, and so on.
+     */
+    void CellStorageModified();
 };
 
 
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index 5f30ebd..2f4f87a 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -1389,6 +1389,10 @@ SCROW ScColumn::FindNextVisibleRowWithContent(SCROW nRow, bool bForward) const
     }
 }
 
+void ScColumn::CellStorageModified()
+{
+}
+
 void ScColumn::FindDataAreaPos(SCROW& rRow, bool bDown) const
 {
     // check if we are in a data area
commit e7b1c7954e159197ad414e8aff7e7a04c30da29c
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Nov 6 19:17:19 2012 -0500

    Re-order the header includes. Make sure column.hxx comes first.
    
    Change-Id: I9f93724c4e0b565a9148d0893feda9e82109bff7

diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index 4ee7923..fc22a5b 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -17,15 +17,8 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#include <map>
-
-#include <svl/poolcach.hxx>
-#include <svl/zforlist.hxx>
-#include <editeng/scripttypeitem.hxx>
-#include <string.h>
-
-#include "scitems.hxx"
 #include "column.hxx"
+#include "scitems.hxx"
 #include "cell.hxx"
 #include "document.hxx"
 #include "docpool.hxx"
@@ -37,6 +30,13 @@
 #include "detfunc.hxx"          // for Notes in Sort/Swap
 #include "postit.hxx"
 
+#include <svl/poolcach.hxx>
+#include <svl/zforlist.hxx>
+#include <editeng/scripttypeitem.hxx>
+
+#include <cstring>
+#include <map>
+
 using ::editeng::SvxBorderLine;
 using namespace formula;
 
commit 9c8d87e46bba0eb9a3b8d923c6c630a359bf0f6c
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Nov 6 19:07:08 2012 -0500

    Use initializer to initialize data members.
    
    Change-Id: I912cede3a240ccd4e1cc94be46c7dfee36a85af6

diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index cfe4bbe..35316cd 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -67,14 +67,7 @@ struct ScNeededSizeOptions
     bool                bGetFont;
     bool                bTotalSize;
 
-    ScNeededSizeOptions()
-    {
-        pPattern = NULL;
-        bFormula = false;
-        bSkipMerged = true;
-        bGetFont = true;
-        bTotalSize = false;
-    }
+    ScNeededSizeOptions();
 };
 
 struct ColEntry
@@ -83,7 +76,6 @@ struct ColEntry
     ScBaseCell* pCell;
 };
 
-
 class ScColumn
 {
 private:
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index d803755..4ee7923 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -49,6 +49,11 @@ inline bool IsAmbiguousScriptNonZero( sal_uInt8 nScript )
              nScript != 0 );
 }
 
+ScNeededSizeOptions::ScNeededSizeOptions() :
+    pPattern(NULL), bFormula(false), bSkipMerged(true), bGetFont(true), bTotalSize(false)
+{
+}
+
 ScColumn::ScColumn() :
     nCol( 0 ),
     pAttrArray( NULL ),
commit ba42d88d95cdc7fe6130b3bd3a41e8c731110238
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Nov 6 17:17:22 2012 -0500

    Make ScColumn explicitly non-copyable.
    
    Change-Id: I0e3f552f8ed8a57f399ba9e01c06a23d9a9da854

diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 9ed577ec..cfe4bbe 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -107,6 +107,9 @@ friend class ScCellIterator;
 friend class ScHorizontalCellIterator;
 friend class ScHorizontalAttrIterator;
 
+    ScColumn(const ScColumn&); // disabled
+    ScColumn& operator= (const ScColumn&); // disabled
+
 public:
                 ScColumn();
                 ~ScColumn();
commit 2b70c47a37f33819cff0e42d00c37cfaea0461ec
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Nov 6 14:00:54 2012 -0500

    Rename ScColumn::Resize() to ReserveSize().
    
    The new name is more aligned with what it actually does.
    
    Change-Id: I703e20253fe5957c775026d8d08f2906f2d7889c

diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index f6dff3b..9ed577ec 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -121,7 +121,7 @@ public:
     void        Delete( SCROW nRow );
     void        DeleteAtIndex( SCSIZE nIndex );
     void        FreeAll();
-    void        Resize( SCSIZE nSize );
+    void ReserveSize( SCSIZE nSize );
     void        SwapRow( SCROW nRow1, SCROW nRow2 );
     void        SwapCell( SCROW nRow, ScColumn& rCol);
 
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index f29dc2d..d803755 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -760,8 +760,7 @@ ScBaseCell* ScColumn::GetCell( SCROW nRow ) const
     return NULL;
 }
 
-
-void ScColumn::Resize( SCSIZE nSize )
+void ScColumn::ReserveSize( SCSIZE nSize )
 {
     if (nSize > sal::static_int_cast<SCSIZE>(MAXROWCOUNT))
         nSize = MAXROWCOUNT;
@@ -1178,7 +1177,7 @@ void ScColumn::CopyToClip(SCROW nRow1, SCROW nRow2, ScColumn& rColumn, bool bKee
 
     if (nBlockCount)
     {
-        rColumn.Resize( rColumn.GetCellCount() + nBlockCount );
+        rColumn.ReserveSize(rColumn.GetCellCount() + nBlockCount);
         ScAddress aOwnPos( nCol, 0, nTab );
         ScAddress aDestPos( rColumn.nCol, 0, rColumn.nTab );
         for (i = nStartIndex; i <= nEndIndex; i++)
@@ -1368,7 +1367,7 @@ void ScColumn::CopyToColumn(
 
         if (nBlockCount)
         {
-            rColumn.Resize( rColumn.GetCellCount() + nBlockCount );
+            rColumn.ReserveSize(rColumn.GetCellCount() + nBlockCount);
             ScAddress aDestPos( rColumn.nCol, 0, rColumn.nTab );
             for (i = nStartIndex; i <= nEndIndex; i++)
             {
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 1e0ce3c..043cec9 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -681,7 +681,7 @@ void ScColumn::CopyFromClip(SCROW nRow1, SCROW nRow2, long nDy,
         //! IDF_ALL muss immer mehr Flags enthalten, als bei "Inhalte Einfuegen"
         //! einzeln ausgewaehlt werden koennen!
 
-        Resize( maItems.size() + static_cast<SCSIZE>(nRow2-nRow1+1) );
+        ReserveSize(maItems.size() + static_cast<SCSIZE>(nRow2-nRow1+1));
 
         ScAddress aDestPos( nCol, 0, nTab );        // Row wird angepasst
 
@@ -715,8 +715,7 @@ void ScColumn::CopyFromClip(SCROW nRow1, SCROW nRow2, long nDy,
         //! Always do the Resize from the outside, where the number of repetitions is known
         //! (then it can be removed here)
 
-        SCSIZE nNew = maItems.size() + nColCount;
-        Resize( nNew );
+        ReserveSize(maItems.size() + nColCount);
     }
 
     sal_Bool bAtEnd = false;
diff --git a/sc/source/core/data/table1.cxx b/sc/source/core/data/table1.cxx
index a04dece..446686e 100644
--- a/sc/source/core/data/table1.cxx
+++ b/sc/source/core/data/table1.cxx
@@ -1868,7 +1868,7 @@ void ScTable::CopyPrintRange(const ScTable& rTable)
 void ScTable::DoColResize( SCCOL nCol1, SCCOL nCol2, SCSIZE nAdd )
 {
     for (SCCOL nCol=nCol1; nCol<=nCol2; nCol++)
-        aCol[nCol].Resize(aCol[nCol].GetCellCount() + nAdd);
+        aCol[nCol].ReserveSize(aCol[nCol].GetCellCount() + nAdd);
 }
 
 void ScTable::SetRepeatColRange( const ScRange* pNew )
diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx
index 00aa1c3..38adeb8 100644
--- a/sc/source/core/data/table4.cxx
+++ b/sc/source/core/data/table4.cxx
@@ -694,7 +694,7 @@ void ScTable::FillAuto( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
                     nInc,nMinDigits, pListData,nListIndex);
 
         if (bVertical)
-            aCol[nCol].Resize( aCol[nCol].GetCellCount() + nFillCount );
+            aCol[nCol].ReserveSize(aCol[nCol].GetCellCount() + nFillCount);
 
         if (pListData)
         {
@@ -1389,7 +1389,7 @@ void ScTable::FillSeries( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
         ScBaseCell* pSrcCell = aCol[nCol].GetCell(static_cast<SCROW>(nRow));
 
         if (bVertical && bAttribs)
-            aCol[nCol].Resize( aCol[nCol].GetCellCount() + nFillCount );
+            aCol[nCol].ReserveSize(aCol[nCol].GetCellCount() + nFillCount);
 
         if (bAttribs)
         {
commit 87d46d5b420744b0a9d9724188d9526c423b8dd3
Author: Andras Timar <atimar at suse.com>
Date:   Wed Feb 6 16:44:20 2013 +0100

    bump copyright year + small fixes in SDK docs
    
    Change-Id: Iff9f11c043be5234dae43e8c3c93155019f6cf08

diff --git a/odk/docs/install.html b/odk/docs/install.html
index 2bc5f27..3594ac0 100644
--- a/odk/docs/install.html
+++ b/odk/docs/install.html
@@ -411,7 +411,7 @@
                 <div id="Footer">
                     <div id="FooterText">
                         <p>
-                            Copyright © 2000, 2010 LibreOffice contributors and/or their affiliates. All rights reserved.
+                            Copyright © 2000, 2013 LibreOffice contributors and/or their affiliates. All rights reserved.
                             <br>
                             LibreOffice was created by The Document Foundation,
                             based on Apache OpenOffice, which is Copyright 2011
diff --git a/odk/docs/notsupported.html b/odk/docs/notsupported.html
index 441f3f5..4b13bac 100644
--- a/odk/docs/notsupported.html
+++ b/odk/docs/notsupported.html
@@ -76,7 +76,7 @@
                 <div id="Footer">
                     <div id="FooterText">
                         <p>
-                            Copyright © 2000, 2010 LibreOffice contributors and/or their affiliates. All rights reserved.
+                            Copyright © 2000, 2013 LibreOffice contributors and/or their affiliates. All rights reserved.
                             <br>
                             LibreOffice was created by The Document Foundation,
                             based on Apache OpenOffice, which is Copyright 2011
diff --git a/odk/docs/tools.html b/odk/docs/tools.html
index eb6d39c..219e594 100644
--- a/odk/docs/tools.html
+++ b/odk/docs/tools.html
@@ -1022,7 +1022,7 @@ types the specified types depend on.</p>
                 <div id="Footer">
                     <div id="FooterText">
                         <p>
-                            Copyright © 2000, 2010 LibreOffice contributors and/or their affiliates. All rights reserved.
+                            Copyright © 2000, 2013 LibreOffice contributors and/or their affiliates. All rights reserved.
                             <br>
                             LibreOffice was created by The Document Foundation,
                             based on Apache OpenOffice, which is Copyright 2011
diff --git a/odk/examples/DevelopersGuide/examples.html b/odk/examples/DevelopersGuide/examples.html
index 5417ddb..b33b16e 100644
--- a/odk/examples/DevelopersGuide/examples.html
+++ b/odk/examples/DevelopersGuide/examples.html
@@ -2875,7 +2875,7 @@ for the Office application.</td>
                 <div id="Footer">
                     <div id="FooterText">
                         <p>
-                            Copyright © 2000, 2010 LibreOffice contributors and/or their affiliates. All rights reserved.
+                            Copyright © 2000, 2013 LibreOffice contributors and/or their affiliates. All rights reserved.
                             <br>
                             LibreOffice was created by The Document Foundation,
                             based on Apache OpenOffice, which is Copyright 2011
diff --git a/odk/examples/examples.html b/odk/examples/examples.html
index 1312122..16e7d9d 100644
--- a/odk/examples/examples.html
+++ b/odk/examples/examples.html
@@ -810,7 +810,7 @@
                 <div id="Footer">
                     <div id="FooterText">
                         <p>
-                            Copyright © 2000, 2010 LibreOffice contributors and/or their affiliates. All rights reserved.
+                            Copyright © 2000, 2013 LibreOffice contributors and/or their affiliates. All rights reserved.
                             <br>
                             LibreOffice was created by The Document Foundation,
                             based on Apache OpenOffice, which is Copyright 2011
diff --git a/odk/index.html b/odk/index.html
index 2a858f5..7dd4b96 100644
--- a/odk/index.html
+++ b/odk/index.html
@@ -191,7 +191,7 @@
                 <div id="Footer">
                     <div id="FooterText">
                         <p>
-                            Copyright © 2000, 2010 LibreOffice contributors and/or their affiliates. All rights reserved.
+                            Copyright © 2000, 2013 LibreOffice contributors and/or their affiliates. All rights reserved.
                             <br>
                             LibreOffice was created by The Document Foundation,
                             based on Apache OpenOffice, which is Copyright 2011
diff --git a/odk/index_online.html b/odk/index_online.html
index 76e6985..f3ca65c 100644
--- a/odk/index_online.html
+++ b/odk/index_online.html
@@ -37,7 +37,7 @@
               <tr valign="top"> 
                 <td class="content4"><img src="docs/images/arrow-1.gif"></td>
                 <td colspan="2"><a href="docs/common/ref/com/sun/star/module-ix.html" title="link to the IDL reference documentation">IDL Reference</a></td>
-                <td class="content70">Complete LibreOffice 3.5 API reference.</td>
+                <td class="content70">Complete LibreOffice API reference.</td>
               </tr>
               <tr valign="top"> 
                 <td class="content4"><img src="docs/images/arrow-1.gif"></td>
@@ -46,7 +46,7 @@
               </tr>
               <tr valign="top"> 
                 <td class="content4"><img src="docs/images/arrow-1.gif"></td>
-                <td colspan="2"><a href="docs/cpp/ref/names/index.html" title="link to the C++ API reference documentation">C++ Reference</a></td>
+                <td colspan="2"><a href="docs/cpp/ref/index.html" title="link to the C++ API reference documentation">C++ Reference</a></td>
                 <td class="content70">Reference documentation of the C++ UNO runtime and a 
 				set of C/C++ base and helper functions and classes to abstract from
 				the system layer.</td>
@@ -234,9 +234,9 @@
                 <div id="Footer">
                     <div id="FooterText">
                         <p>
-                            Copyright © 2000, 2010 LibreOffice contributors and/or their affiliates. All rights reserved.
+                            Copyright © 2000, 2013 LibreOffice contributors and/or their affiliates. All rights reserved.
                             <br>
-                            LibreOffice was created by The Document Foundation, based on OpenOffice.org, which is Copyright 2000, 2010 Oracle and/or its affiliates.
+                            LibreOffice was created by The Document Foundation, based on Apache OpenOffice, which is Copyright 2011 The Apache Software Foundation.
                             <br>
                             The Document Foundation acknowledges all community members, please find more info <a href="http://www.libreoffice.org/about-us/credits/" target="_blank">at our website</a>.
                         </p>
commit 5a55a24bfc75d6392382509fe5a8734947525b10
Author: Matúš Kukan <matus.kukan at gmail.com>
Date:   Wed Feb 6 16:24:43 2013 +0100

    pagein: learn to respect --enable-mergelibs case
    
    Add libmerged to pagein-common and remove merged libraries from there.
    Also fixes few misspelled library names.
    This should make pagein usefull also for libmerged and speed up
    cold start by pre-loading it.
    
    Change-Id: I80ffb263ed5f399dc639e0d054f782ecb85001d6

diff --git a/desktop/Pagein_common.mk b/desktop/Pagein_common.mk
index 9a82a1c..450db26 100644
--- a/desktop/Pagein_common.mk
+++ b/desktop/Pagein_common.mk
@@ -29,6 +29,7 @@ $(eval $(call gb_Pagein_Pagein,common))
 
 # sorted in approx. reverse load order (ld.so.1)
 $(eval $(call gb_Pagein_add_objects,common,\
+    $(if $(MERGELIBS),merged) \
     i18npool \
     $(if $(findstring YES,$(SYSTEM_ICU)),,\
         icui18n \
@@ -81,11 +82,11 @@ $(eval $(call gb_Pagein_add_objects,common,\
     avmedia \
     helplinker \
     sax \
-    gconfbe \
+    gconfbe1 \
     fsstorage \
-    desktopbe \
-    localebe \
-    ucpexpand \
+    desktopbe1 \
+    localebe1 \
+    ucpexpand1 \
     sfx \
     sofficeapp \
 ))
diff --git a/solenv/gbuild/Pagein.mk b/solenv/gbuild/Pagein.mk
index 7f69ccc..fab6180 100644
--- a/solenv/gbuild/Pagein.mk
+++ b/solenv/gbuild/Pagein.mk
@@ -66,7 +66,7 @@ $(call gb_Pagein_get_outdir_target,$(1)) : $(call gb_Pagein_get_target,$(1))
 endef
 
 define gb_Pagein_add_object
-$(call gb_Pagein_get_target,$(1)) : OBJECTS += $(2)
+$(call gb_Pagein_get_target,$(1)) : OBJECTS += $(filter-out $(gb_MERGEDLIBS),$(2))
 
 endef
 
commit 8c31a28a1fae2f2562f6248581a6ef321b77a4a6
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Feb 6 14:57:55 2013 +0000

    tweak OAddressBookSourceDialogUno conversion to work again
    
    these properties aren't registered, so setting them throws.
    The expectation is that they get used via
    OAddressBookSourceDialogUno::implInitialize
    so repackage them as PropertyValues
    
    wizards->address data source->evolution->next->field assignment
    and field assignment must not have an "address data source"
    button in it
    
    Change-Id: I5edb6f5117dd9bfa2ed40da040906a7107028433

diff --git a/svtools/source/uno/addrtempuno.cxx b/svtools/source/uno/addrtempuno.cxx
index f6a88dd..da4fa51 100644
--- a/svtools/source/uno/addrtempuno.cxx
+++ b/svtools/source/uno/addrtempuno.cxx
@@ -153,7 +153,7 @@ namespace svt
     //-------------------------------------------------------------------------
     ::cppu::IPropertyArrayHelper& OAddressBookSourceDialogUno::getInfoHelper()
     {
-        return *const_cast<OAddressBookSourceDialogUno*>(this)->getArrayHelper();
+        return *getArrayHelper();
     }
 
     //------------------------------------------------------------------------------
@@ -174,30 +174,39 @@ namespace svt
                 static_cast< AddressBookSourceDialog* >( m_pDialog )->getFieldMapping( m_aAliases );
     }
     //------------------------------------------------------------------------------
-    void SAL_CALL OAddressBookSourceDialogUno::initialize(const Sequence< Any >& aArguments) throw(Exception, RuntimeException)
+    void SAL_CALL OAddressBookSourceDialogUno::initialize(const Sequence< Any >& rArguments) throw(Exception, RuntimeException)
     {
-        if( aArguments.getLength() == 5 )
+        if( rArguments.getLength() == 5 )
         {
             Reference<com::sun::star::awt::XWindow> xParentWindow;
             Reference<com::sun::star::beans::XPropertySet> xDataSource;
             rtl::OUString sDataSourceName;
             rtl::OUString sCommand;
             rtl::OUString sTitle;
-            if ( (aArguments[0] >>= xParentWindow)
-               && (aArguments[1] >>= xDataSource)
-               && (aArguments[2] >>= sDataSourceName)
-               && (aArguments[3] >>= sCommand)
-               && (aArguments[4] >>= sTitle) )
+            if ( (rArguments[0] >>= xParentWindow)
+               && (rArguments[1] >>= xDataSource)
+               && (rArguments[2] >>= sDataSourceName)
+               && (rArguments[3] >>= sCommand)
+               && (rArguments[4] >>= sTitle) )
             {
-                setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ParentWindow" ) ), makeAny( xParentWindow ) );
-                setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DataSource" ) ), makeAny( xDataSource ) );
-                setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DataSourceName" ) ), makeAny( sDataSourceName ) );
-                setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Command" ) ), makeAny( sCommand ) );
-                setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Title" ) ), makeAny( sTitle ) );
+
+                // convert the parameters for creating the dialog to PropertyValues
+                Sequence< Any > aArguments(5);
+                Any* pArguments = aArguments.getArray();
+                // the parent window
+                *pArguments++ <<= PropertyValue(OUString( "ParentWindow" ), -1, makeAny( xParentWindow ), PropertyState_DIRECT_VALUE);
+                // the data source to use
+                *pArguments++ <<= PropertyValue(OUString( "DataSource" ), -1, makeAny( xDataSource ), PropertyState_DIRECT_VALUE);
+                *pArguments++ <<= PropertyValue(OUString( "DataSourceName" ), -1, makeAny( sDataSourceName ), PropertyState_DIRECT_VALUE);
+                // the table to use
+                *pArguments++ <<= PropertyValue(OUString( "Command" ), -1, makeAny( sCommand ), PropertyState_DIRECT_VALUE);
+                // the title
+                *pArguments++ <<= PropertyValue(OUString( "Title" ), -1, makeAny( sTitle ), PropertyState_DIRECT_VALUE);
+                OGenericUnoDialog::initialize(aArguments);
                 return;
             }
         }
-        OGenericUnoDialog::initialize(aArguments);
+        OGenericUnoDialog::initialize(rArguments);
     }
     //------------------------------------------------------------------------------
     void OAddressBookSourceDialogUno::implInitialize(const com::sun::star::uno::Any& _rValue)
commit 038c59bf4610768d3ad6bbad910e885bb98fe2c1
Author: Andras Timar <atimar at suse.com>
Date:   Wed Feb 6 16:25:54 2013 +0100

    fix help text of uno-skeletonmaker -lh switch
    
    Change-Id: I07d9708c9a6903a910b94fc1e109d79e7d93590d

diff --git a/odk/docs/tools.html b/odk/docs/tools.html
index 4833bfd..eb6d39c 100644
--- a/odk/docs/tools.html
+++ b/odk/docs/tools.html
@@ -760,7 +760,7 @@ types the specified types depend on.</p>
           </tr>
           <tr>
             <td class="cell15"><code>-lh --licenseheader</code></td>
-			<td class="cell85">generates a default OpenOffice.org LGPL license header at the beginning of a component source file. This option is taken into account in 'component' mode only and if -o is unequal 'stdout'.</td>
+			<td class="cell85">generates a default LibreOffice MPLv2 license header at the beginning of a component source file. This option is taken into account in 'component' mode only and if -o is unequal 'stdout'.</td>
           </tr>
           <tr>
             <td class="cell15"><code>-bc<br>--backward-compatible</code></td>
commit 15d8b51bf82610c663f80fe552a1c0315e137ad3
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Feb 5 17:33:49 2013 +0000

    Resolves: rhbz#907933 crash on removing second last para in cell...
    
    if (basically) the last para is on next page
    
    Change-Id: Iaff610ea94a829e73bfb8c694a27e0e9b4f6e295
    Reviewed-on: https://gerrit.libreoffice.org/2012
    Tested-by: Michael Stahl <mstahl at redhat.com>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>

diff --git a/sw/source/core/inc/tabfrm.hxx b/sw/source/core/inc/tabfrm.hxx
index 464fc9c..1041385 100644
--- a/sw/source/core/inc/tabfrm.hxx
+++ b/sw/source/core/inc/tabfrm.hxx
@@ -151,6 +151,8 @@ public:
     //
     sal_Bool HasFollowFlowLine() const { return bHasFollowFlowLine; }
     void SetFollowFlowLine( sal_Bool bNew ) { bHasFollowFlowLine = bNew; }
+    //return the SwTabFrm (if any) that this SwTabFrm is a follow flow line for
+    SwTabFrm* GetFollowFlowLineFor();
 
     sal_Bool IsRebuildLastLine() const { return bIsRebuildLastLine; }
     void SetRebuildLastLine( sal_Bool bNew ) { bIsRebuildLastLine = bNew; }
diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx
index 27ad754..fb23128 100644
--- a/sw/source/core/layout/tabfrm.cxx
+++ b/sw/source/core/layout/tabfrm.cxx
@@ -132,8 +132,28 @@ extern const SwTable   *pRowCacheLastTable;
 extern const SwTabFrm  *pRowCacheLastTabFrm;
 extern const SwFrm     *pRowCacheLastCellFrm;
 
+//return the SwTabFrm (if any) that this SwTabFrm is a follow flow line for
+SwTabFrm* SwTabFrm::GetFollowFlowLineFor()
+{
+    SwFlowFrm *pPrec = GetPrecede();
+    if (pPrec && pPrec->GetFrm()->IsTabFrm())
+    {
+        SwTabFrm *pPrevTabFrm = (SwTabFrm*)pPrec;
+        assert(this == pPrevTabFrm->GetFollow());
+        if (pPrevTabFrm->HasFollowFlowLine() && pPrevTabFrm->GetFollow() == this)
+            return pPrevTabFrm;
+    }
+    return NULL;
+}
+
 SwTabFrm::~SwTabFrm()
 {
+    //rhbz#907933, we are a follow flow line for something and have been
+    //deleted, remove ourself as a follow flowline
+    SwTabFrm* pFlowFrameFor = GetFollowFlowLineFor();
+    if (pFlowFrameFor)
+        pFlowFrameFor->RemoveFollowFlowLine();
+
     // There is some terrible code in fetab.cxx, that
     // makes use of these global pointers. Obviously
     // this code did not consider that a TabFrm can be
commit 8418a122368a735acacb0983d14829efbf73783e
Author: Tor Lillqvist <tml at iki.fi>
Date:   Wed Feb 6 16:48:02 2013 +0200

    Tell what @__VIA_LIBRARY_PATH__ means
    
    Change-Id: I5ab38200d926376d3dbac8f3c795fa95ee2bbe46

diff --git a/solenv/bin/macosx-change-install-names.pl b/solenv/bin/macosx-change-install-names.pl
index 56cf2dc..8bd42b3 100644
--- a/solenv/bin/macosx-change-install-names.pl
+++ b/solenv/bin/macosx-change-install-names.pl
@@ -49,6 +49,11 @@
 
 sub action($$$)
 {
+    # The @__VIA_LIBRARY_PATH__ thing has no magic meaning anywhere
+    # (here in LO or to the dynamic linker), it is effectively a
+    # comment telling that this library is supposed to have been found
+    # by the dynamic linker already in DYLD_LIBRARY_PATH.
+
     my %action =
         ('app/UREBIN/URELIB' => '@executable_path/../lib',
          'app/OOO/URELIB' => '@executable_path/../ure-link/lib',


More information about the Libreoffice-commits mailing list