[Libreoffice-commits] core.git: Branch 'private/jmux/multi-index-5-1' - 144 commits - basebmp/test chart2/qa chart2/source comphelper/source config_host/config_global.h.in config_host/config_opengl.h.in configure.ac connectivity/source cui/source dbaccess/source desktop/scripts desktop/source download.lst dtrans/source editeng/inc editeng/source extensions/source external/boost external/liborcus filter/source forms/source fpicker/source framework/inc framework/source g helpcontent2 i18npool/source icon-themes/sifr include/comphelper include/connectivity include/filter include/LibreOfficeKit include/osl include/rtl include/sfx2 include/svtools include/toolkit include/ucbhelper include/vcl libreofficekit/qa lotuswordpro/source officecfg/registry oox/inc qadevOOo/qa readlicense_oo/license readlicense_oo/Package_files.mk reportdesign/source sc/JunitTest_sc_complex.mk sc/qa sc/source sdext/source sd/qa sd/source sd/uiconfig setup_native/source sfx2/source shell/source solenv/bin solenv/gbuild starmath /inc svl/source svtools/source svx/source sw/inc sw/qa sw/source toolkit/Library_tk.mk ucb/source unotools/source unusedcode.easy vcl/generic vcl/headless vcl/inc vcl/source vcl/unx writerperfect/source xmloff/source

Jan-Marek Glogowski glogow at fbihome.de
Sat Jun 20 14:32:16 PDT 2015


Rebased ref, commits from common ancestor:
commit b83ff04bc631121ae111560ac3c4b0651c91f8cd
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Sat Jun 20 20:23:44 2015 +0000

    Don't inheritate from boost::multi_index
    
    Drops all using statements and the namespace aliases.
    This is more in the spirit of tdf#75757.
    
    Change-Id: Id7c81baea0e2d1af151b7b9bdce8d9fe5f7a2089

diff --git a/sw/inc/docary.hxx b/sw/inc/docary.hxx
index c7446a6..368803b 100644
--- a/sw/inc/docary.hxx
+++ b/sw/inc/docary.hxx
@@ -148,37 +148,37 @@ public:
     SwGrfFormatColls() : SwFormatsModifyBase( DestructorPolicy::KeepElements ) {}
 };
 
-namespace bmi = boost::multi_index;
-
 // Like o3tl::find_partialorder_ptrequals
 // We don't allow duplicated object entries!
-struct type_name_key:bmi::composite_key<
+struct type_name_key:boost::multi_index::composite_key<
     SwFrameFormat*,
     BOOST_MULTI_INDEX_CONST_MEM_FUN(SwFormat,sal_uInt16,Which),
     BOOST_MULTI_INDEX_CONST_MEM_FUN(SwFormat,OUString,GetName),
-    bmi::identity<SwFrameFormat*> // the actual object pointer
+    boost::multi_index::identity<SwFrameFormat*> // the actual object pointer
 >{};
 
 typedef boost::multi_index_container<
         SwFrameFormat*,
-        bmi::indexed_by<
-            bmi::random_access<>,
-            bmi::ordered_unique< type_name_key >
+        boost::multi_index::indexed_by<
+            boost::multi_index::random_access<>,
+            boost::multi_index::ordered_unique< type_name_key >
         >
     >
     SwFrameFormatsBase;
 
 /// Specific frame formats (frames, DrawObjects).
-class SW_DLLPUBLIC SwFrameFormats : public SwFrameFormatsBase, public SwFormatsBase
+class SW_DLLPUBLIC SwFrameFormats : public SwFormatsBase
 {
     // function updating ByName index via modify
     friend void SwFrameFormat::SetName( const OUString&, bool );
 
-    typedef nth_index<0>::type ByPos;
-    typedef nth_index<1>::type ByTypeAndName;
+    typedef SwFrameFormatsBase::nth_index<0>::type ByPos;
+    typedef SwFrameFormatsBase::nth_index<1>::type ByTypeAndName;
     typedef typename ByPos::iterator iterator;
 
-    using ByPos::modify;
+    SwFrameFormatsBase   m_Array;
+    ByPos               &m_PosIndex;
+    ByTypeAndName       &m_TypeAndNameIndex;
 
 public:
     typedef typename ByPos::const_iterator const_iterator;
@@ -186,12 +186,14 @@ public:
     typedef typename SwFrameFormatsBase::size_type size_type;
     typedef typename SwFrameFormatsBase::value_type value_type;
 
+    SwFrameFormats();
+
     // frees all SwFrmFmt!
     virtual ~SwFrameFormats();
 
-    using SwFrameFormatsBase::clear;
-    using SwFrameFormatsBase::empty;
-    using SwFrameFormatsBase::size;
+    void clear()        { return m_Array.clear(); }
+    bool empty()  const { return m_Array.empty(); }
+    size_t size() const { return m_Array.size(); }
 
     // Only fails, if you try to insert the same object twice
     std::pair<const_iterator,bool> push_back( const value_type& x );
@@ -215,20 +217,20 @@ public:
     std::pair<const_range_iterator,const_range_iterator>
         rangeFind( const value_type& x ) const;
     // So we can actually check for end()
-    const_range_iterator rangeEnd() const { return ByTypeAndName::end(); }
+    const_range_iterator rangeEnd() const { return m_TypeAndNameIndex.end(); }
     inline const_iterator rangeProject( const_range_iterator const& position )
-        { return project<0>( position ); }
+        { return m_Array.project<0>( position ); }
 
     const value_type& operator[]( size_t index_ ) const
-        { return ByPos::operator[]( index_ ); }
-    const value_type& front() const { return ByPos::front(); }
-    const value_type& back() const { return ByPos::back(); }
-    const_iterator begin() const { return ByPos::begin(); }
-    const_iterator end() const { return ByPos::end(); }
+        { return m_PosIndex.operator[]( index_ ); }
+    const value_type& front() const { return m_PosIndex.front(); }
+    const value_type& back() const { return m_PosIndex.back(); }
+    const_iterator begin() const { return m_PosIndex.begin(); }
+    const_iterator end() const { return m_PosIndex.end(); }
 
     void dumpAsXml(struct _xmlTextWriter* pWriter, const char* pName) const;
 
-    virtual size_t GetFormatCount() const { return size(); }
+    virtual size_t GetFormatCount() const { return m_Array.size(); }
     virtual SwFormat* GetFormat(size_t idx) const { return operator[]( idx ); }
 
     bool Contains( const value_type& x ) const;
diff --git a/sw/inc/pagedesc.hxx b/sw/inc/pagedesc.hxx
index 756b7a9..55c60d94 100644
--- a/sw/inc/pagedesc.hxx
+++ b/sw/inc/pagedesc.hxx
@@ -377,40 +377,44 @@ namespace sw {
     class PageFootnoteHint SAL_FINAL : public SfxHint {};
 }
 
-namespace bmi = boost::multi_index;
-
 typedef boost::multi_index_container<
         SwPageDesc*,
-        bmi::indexed_by<
-            bmi::random_access<>,
-            bmi::ordered_unique< bmi::identity<SwPageDesc*> >
+        boost::multi_index::indexed_by<
+            boost::multi_index::random_access<>,
+            boost::multi_index::ordered_unique<
+                boost::multi_index::identity<SwPageDesc*> >
         >
     >
     SwPageDescsBase;
 
-class SwPageDescs : private SwPageDescsBase
+class SwPageDescs
 {
     // function updating ByName index via modify
     friend bool SwPageDesc::SetName( const OUString& rNewName );
 
-    typedef nth_index<0>::type ByPos;
-    typedef nth_index<1>::type ByName;
+    typedef SwPageDescsBase::nth_index<0>::type ByPos;
+    typedef SwPageDescsBase::nth_index<1>::type ByName;
     typedef typename ByPos::iterator iterator;
 
-    using ByPos::modify;
     iterator find_( const OUString &name ) const;
 
+    SwPageDescsBase   m_Array;
+    ByPos            &m_PosIndex;
+    ByName           &m_NameIndex;
+
 public:
     typedef typename ByPos::const_iterator const_iterator;
     typedef typename SwPageDescsBase::size_type size_type;
     typedef typename SwPageDescsBase::value_type value_type;
 
+    SwPageDescs();
+
     // frees all SwPageDesc!
     virtual ~SwPageDescs();
 
-    using SwPageDescsBase::clear;
-    using SwPageDescsBase::empty;
-    using SwPageDescsBase::size;
+    void clear()        { return m_Array.clear(); }
+    bool empty()  const { return m_Array.empty(); }
+    size_t size() const { return m_Array.size(); }
 
     std::pair<const_iterator,bool> push_back( const value_type& x );
     void erase( const value_type& x );
@@ -420,11 +424,11 @@ public:
     const_iterator find( const OUString &name ) const
         { return find_( name ); }
     const value_type& operator[]( size_t index_ ) const
-        { return ByPos::operator[]( index_ ); }
-    const value_type& front() const { return ByPos::front(); }
-    const value_type& back() const { return ByPos::back(); }
-    const_iterator begin() const { return ByPos::begin(); }
-    const_iterator end() const { return ByPos::end(); }
+        { return m_PosIndex.operator[]( index_ ); }
+    const value_type& front() const { return m_PosIndex.front(); }
+    const value_type& back() const { return m_PosIndex.back(); }
+    const_iterator begin() const { return m_PosIndex.begin(); }
+    const_iterator end() const { return m_PosIndex.end(); }
 
     bool contains( const value_type& x ) const
         { return x->m_pdList == this; }
diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx
index c1d72fa..57cb549 100644
--- a/sw/source/core/doc/docfmt.cxx
+++ b/sw/source/core/doc/docfmt.cxx
@@ -2027,6 +2027,12 @@ namespace docfunc
     }
 }
 
+SwFrameFormats::SwFrameFormats()
+    : m_PosIndex( m_Array.get<0>() )
+    , m_TypeAndNameIndex( m_Array.get<1>() )
+{
+}
+
 SwFrameFormats::~SwFrameFormats()
 {
     DeleteAndDestroyAll( false );
@@ -2034,16 +2040,15 @@ SwFrameFormats::~SwFrameFormats()
 
 SwFrameFormats::iterator SwFrameFormats::find( const value_type& x ) const
 {
-    const ByTypeAndName &pd_named = SwFrameFormatsBase::get<1>();
-    ByTypeAndName::iterator it = pd_named.find( boost::make_tuple(x->Which(), x->GetName(), x) );
-    return project<0>( it );
+    ByTypeAndName::iterator it = m_TypeAndNameIndex.find(
+        boost::make_tuple(x->Which(), x->GetName(), x) );
+    return m_Array.project<0>( it );
 }
 
 std::pair<SwFrameFormats::const_range_iterator,SwFrameFormats::const_range_iterator>
 SwFrameFormats::rangeFind( sal_uInt16 type, const OUString& name ) const
 {
-    const ByTypeAndName &pd_named = SwFrameFormatsBase::get<1>();
-    return pd_named.equal_range( boost::make_tuple(type, name) );
+    return m_TypeAndNameIndex.equal_range( boost::make_tuple(type, name) );
 }
 
 std::pair<SwFrameFormats::const_range_iterator,SwFrameFormats::const_range_iterator>
@@ -2059,7 +2064,7 @@ void SwFrameFormats::DeleteAndDestroy(int aStartIdx, int aEndIdx)
     for (const_iterator it = begin() + aStartIdx;
                         it != begin() + aEndIdx; ++it)
         delete *it;
-    ByPos::erase( begin() + aStartIdx, begin() + aEndIdx);
+    m_PosIndex.erase( begin() + aStartIdx, begin() + aEndIdx);
 }
 
 void SwFrameFormats::DeleteAndDestroyAll( bool keepDefault )
@@ -2070,7 +2075,7 @@ void SwFrameFormats::DeleteAndDestroyAll( bool keepDefault )
     for( const_iterator it = begin() + _offset; it != end(); ++it )
         delete *it;
     if ( _offset )
-        SwFrameFormatsBase::erase( begin() + _offset, end() );
+        m_PosIndex.erase( begin() + _offset, end() );
     else
         clear();
 }
@@ -2086,7 +2091,7 @@ std::pair<SwFrameFormats::const_iterator,bool> SwFrameFormats::push_back( const
     SAL_WARN_IF(x->m_ffList != nullptr, "sw", "Inserting already assigned item");
     assert(x->m_ffList == nullptr);
     x->m_ffList = this;
-    return ByPos::push_back( x );
+    return m_PosIndex.push_back( x );
 }
 
 bool SwFrameFormats::erase( const value_type& x )
@@ -2095,7 +2100,7 @@ bool SwFrameFormats::erase( const value_type& x )
     SAL_WARN_IF(x->m_ffList != this, "sw", "Removing invalid / unassigned item");
     if (ret != end()) {
         assert( x == *ret );
-        ByPos::erase( ret );
+        m_PosIndex.erase( ret );
         x->m_ffList = nullptr;
         return true;
     }
@@ -2110,7 +2115,7 @@ void SwFrameFormats::erase( size_type index_ )
 void SwFrameFormats::erase( const_iterator const& position )
 {
     (*position)->m_ffList = nullptr;
-    ByPos::erase( begin() + (position - begin()) );
+    m_PosIndex.erase( begin() + (position - begin()) );
 }
 
 bool SwFrameFormats::Contains( const SwFrameFormats::value_type& x ) const
@@ -2120,7 +2125,7 @@ bool SwFrameFormats::Contains( const SwFrameFormats::value_type& x ) const
 
 bool SwFrameFormats::newDefault( const value_type& x )
 {
-    std::pair<iterator,bool> res = ByPos::push_front( x );
+    std::pair<iterator,bool> res = m_PosIndex.push_front( x );
     if( ! res.second )
         newDefault( res.first );
     return res.second;
@@ -2130,7 +2135,7 @@ void SwFrameFormats::newDefault( const_iterator const& position )
 {
     if (position == begin())
         return;
-    ByPos::relocate( begin(), position );
+    m_PosIndex.relocate( begin(), position );
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx
index d1af3af..0efcdc5 100644
--- a/sw/source/core/layout/atrfrm.cxx
+++ b/sw/source/core/layout/atrfrm.cxx
@@ -2555,7 +2555,8 @@ void SwFrameFormat::SetName( const OUString& rNewName, bool bBroadcast )
 #if OSL_DEBUG_LEVEL > 0
         bool renamed =
 #endif
-            m_ffList->modify( it, change_name( rNewName ), change_name( m_aFormatName ) );
+            m_ffList->m_PosIndex.modify( it,
+                change_name( rNewName ), change_name( m_aFormatName ) );
         assert(renamed);
         if (bBroadcast) {
             SwStringMsgPoolItem aNew( RES_NAME_CHANGED, rNewName );
@@ -2868,7 +2869,7 @@ void SwFrameFormat::dumpAsXml(xmlTextWriterPtr pWriter) const
 void SwFrameFormats::dumpAsXml(xmlTextWriterPtr pWriter, const char* pName) const
 {
     xmlTextWriterStartElement(pWriter, BAD_CAST(pName));
-    for (const SwFrameFormat *pFormat : SwFrameFormatsBase::get<0>())
+    for (const SwFrameFormat *pFormat : m_PosIndex)
         pFormat->dumpAsXml(pWriter);
     xmlTextWriterEndElement(pWriter);
 }
diff --git a/sw/source/core/layout/pagedesc.cxx b/sw/source/core/layout/pagedesc.cxx
index bd6fdde..fbff5e8 100644
--- a/sw/source/core/layout/pagedesc.cxx
+++ b/sw/source/core/layout/pagedesc.cxx
@@ -110,7 +110,8 @@ bool SwPageDesc::SetName( const OUString& rNewName )
             SAL_WARN( "sw", "SwPageDesc not found in expected m_pdList" );
             return false;
         }
-        renamed = m_pdList->modify( it, change_name( rNewName ), change_name( m_StyleName ) );
+        renamed = m_pdList->m_PosIndex.modify( it,
+            change_name( rNewName ), change_name( m_StyleName ) );
     }
     else
         m_StyleName = rNewName;
@@ -479,6 +480,12 @@ SwPageDescExt::operator SwPageDesc() const
     return aResult;
 }
 
+SwPageDescs::SwPageDescs()
+    : m_PosIndex( m_Array.get<0>() )
+    , m_NameIndex( m_Array.get<1>() )
+{
+}
+
 SwPageDescs::~SwPageDescs()
 {
     for(const_iterator it = begin(); it != end(); ++it)
@@ -487,9 +494,8 @@ SwPageDescs::~SwPageDescs()
 
 SwPageDescs::iterator SwPageDescs::find_(const OUString &name) const
 {
-    const ByName &pd_named = get<1>();
-    ByName::iterator it = pd_named.find( name );
-    return iterator_to( *it );
+    ByName::iterator it = m_NameIndex.find( name );
+    return m_Array.iterator_to( *it );
 }
 
 std::pair<SwPageDescs::const_iterator,bool> SwPageDescs::push_back( const value_type& x )
@@ -497,7 +503,7 @@ std::pair<SwPageDescs::const_iterator,bool> SwPageDescs::push_back( const value_
     // SwPageDesc is not already in a SwPageDescs list!
     assert( x->m_pdList == nullptr );
 
-    std::pair<iterator,bool> res = ByPos::push_back( x );
+    std::pair<iterator,bool> res = m_PosIndex.push_back( x );
     if( res.second )
         x->m_pdList = this;
     return res;
@@ -510,7 +516,7 @@ void SwPageDescs::erase( const value_type& x )
 
     iterator const ret = find_( x->GetName() );
     if (ret != end())
-        ByPos::erase( ret );
+        m_PosIndex.erase( ret );
     else
         SAL_WARN( "sw", "SwPageDesc is not in SwPageDescs m_pdList!" );
     x->m_pdList = nullptr;
@@ -522,7 +528,7 @@ void SwPageDescs::erase( const_iterator const& position )
     assert( (*position)->m_pdList == this );
 
     (*position)->m_pdList = nullptr;
-    ByPos::erase( position );
+    m_PosIndex.erase( position );
 }
 
 void SwPageDescs::erase( size_type index_ )
commit 0e61b075ec5f1f6c6673d396e90d7fd44b6d4861
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Fri Apr 10 21:32:36 2015 +0200

    Convert SwFrameFormats to boost::multi_index
    
    This is almost the same situation as SwPageDescs. What makes this
    more complicated is the fact, that actually duplicated draw objects
    are allowed, in regard to the key values "type" and "name".
    
    And actually for some types, duplicate names are not allowed, e.g.
    SwDoc::FindFlyByName( const OUString& rName, sal_Int8 nNdTyp )
    expects a single result!
    
    Change-Id: I6e0ea1099c1c1e6cfe90926170e27179722e88b8

diff --git a/sw/inc/docary.hxx b/sw/inc/docary.hxx
index dcacc21..c7446a6 100644
--- a/sw/inc/docary.hxx
+++ b/sw/inc/docary.hxx
@@ -25,6 +25,13 @@
 #include <algorithm>
 #include <o3tl/sorted_vector.hxx>
 
+#include <boost/multi_index_container.hpp>
+#include <boost/multi_index/composite_key.hpp>
+#include <boost/multi_index/identity.hpp>
+#include <boost/multi_index/mem_fun.hpp>
+#include <boost/multi_index/ordered_index.hpp>
+#include <boost/multi_index/random_access_index.hpp>
+
 class SwRangeRedline;
 class SwExtraRedline;
 class SwUnoCrsr;
@@ -46,6 +53,7 @@ namespace com { namespace sun { namespace star { namespace i18n {
 #include <fldbas.hxx>
 #include <tox.hxx>
 #include <numrule.hxx>
+#include <frmfmt.hxx>
 
 /** provides some methods for generic operations on lists that contain
 SwFormat* subclasses. */
@@ -140,11 +148,112 @@ public:
     SwGrfFormatColls() : SwFormatsModifyBase( DestructorPolicy::KeepElements ) {}
 };
 
+namespace bmi = boost::multi_index;
+
+// Like o3tl::find_partialorder_ptrequals
+// We don't allow duplicated object entries!
+struct type_name_key:bmi::composite_key<
+    SwFrameFormat*,
+    BOOST_MULTI_INDEX_CONST_MEM_FUN(SwFormat,sal_uInt16,Which),
+    BOOST_MULTI_INDEX_CONST_MEM_FUN(SwFormat,OUString,GetName),
+    bmi::identity<SwFrameFormat*> // the actual object pointer
+>{};
+
+typedef boost::multi_index_container<
+        SwFrameFormat*,
+        bmi::indexed_by<
+            bmi::random_access<>,
+            bmi::ordered_unique< type_name_key >
+        >
+    >
+    SwFrameFormatsBase;
+
 /// Specific frame formats (frames, DrawObjects).
-class SW_DLLPUBLIC SwFrameFormats : public SwFormatsModifyBase<SwFrameFormat*>
+class SW_DLLPUBLIC SwFrameFormats : public SwFrameFormatsBase, public SwFormatsBase
 {
+    // function updating ByName index via modify
+    friend void SwFrameFormat::SetName( const OUString&, bool );
+
+    typedef nth_index<0>::type ByPos;
+    typedef nth_index<1>::type ByTypeAndName;
+    typedef typename ByPos::iterator iterator;
+
+    using ByPos::modify;
+
 public:
+    typedef typename ByPos::const_iterator const_iterator;
+    typedef typename ByTypeAndName::const_iterator const_range_iterator;
+    typedef typename SwFrameFormatsBase::size_type size_type;
+    typedef typename SwFrameFormatsBase::value_type value_type;
+
+    // frees all SwFrmFmt!
+    virtual ~SwFrameFormats();
+
+    using SwFrameFormatsBase::clear;
+    using SwFrameFormatsBase::empty;
+    using SwFrameFormatsBase::size;
+
+    // Only fails, if you try to insert the same object twice
+    std::pair<const_iterator,bool> push_back( const value_type& x );
+
+    // This will try to remove the exact object!
+    bool erase( const value_type& x );
+    void erase( size_type index );
+    void erase( const_iterator const& position );
+
+    // Get the iterator of the exact object (includes pointer!),
+    // e.g for position with std::distance.
+    // There is also Contains, if you don't need the position.
+    const_iterator find( const value_type& x ) const;
+
+    // As this array is non-unique related to type and name,
+    // we always get ranges for the "key" values.
+    std::pair<const_range_iterator,const_range_iterator>
+        rangeFind( sal_uInt16 type, const OUString& name ) const;
+    // Convenience function, which just uses type and name!
+    // To look for the exact object use find.
+    std::pair<const_range_iterator,const_range_iterator>
+        rangeFind( const value_type& x ) const;
+    // So we can actually check for end()
+    const_range_iterator rangeEnd() const { return ByTypeAndName::end(); }
+    inline const_iterator rangeProject( const_range_iterator const& position )
+        { return project<0>( position ); }
+
+    const value_type& operator[]( size_t index_ ) const
+        { return ByPos::operator[]( index_ ); }
+    const value_type& front() const { return ByPos::front(); }
+    const value_type& back() const { return ByPos::back(); }
+    const_iterator begin() const { return ByPos::begin(); }
+    const_iterator end() const { return ByPos::end(); }
+
     void dumpAsXml(struct _xmlTextWriter* pWriter, const char* pName) const;
+
+    virtual size_t GetFormatCount() const { return size(); }
+    virtual SwFormat* GetFormat(size_t idx) const { return operator[]( idx ); }
+
+    bool Contains( const value_type& x ) const;
+    inline bool Contains( const SwFormat* p ) const;
+
+    void DeleteAndDestroy( int aStartIdx, int aEndIdx );
+    void DeleteAndDestroyAll( bool keepDefault = false );
+
+    size_t GetPos( const value_type& x ) const;
+
+    bool newDefault( const value_type& x );
+    void newDefault( const_iterator const& position );
+};
+
+inline bool SwFrameFormats::Contains( const SwFormat* p ) const
+{
+    value_type p2 = dynamic_cast<value_type>(const_cast<SwFormat*>( p ));
+    return p2 != nullptr && this->Contains( p2 );
+}
+
+/// Unsorted, undeleting SwFrmFmt vector
+class SwFrameFormatsV : public SwFormatsModifyBase<SwFrameFormat*>
+{
+public:
+    SwFrameFormatsV() : SwFormatsModifyBase( DestructorPolicy::KeepElements ) {}
 };
 
 class SwCharFormats : public SwFormatsModifyBase<SwCharFormat*>
diff --git a/sw/inc/format.hxx b/sw/inc/format.hxx
index 83bdf16..59f0d1b 100644
--- a/sw/inc/format.hxx
+++ b/sw/inc/format.hxx
@@ -43,6 +43,8 @@ namespace drawinglayer { namespace attribute {
 /// Base class for various Writer styles.
 class SW_DLLPUBLIC SwFormat : public SwModify
 {
+    friend class SwFrameFormat;
+
     OUString m_aFormatName;
     SwAttrSet m_aSet;
 
@@ -113,7 +115,7 @@ public:
 
     inline OUString GetName() const                  { return m_aFormatName; }
     inline bool HasName(const OUString &rName) const { return m_aFormatName == rName; }
-    void SetName( const OUString& rNewName, bool bBroadcast=false );
+    virtual void SetName( const OUString& rNewName, bool bBroadcast=false );
     inline void SetName( const sal_Char* pNewName,
                          bool bBroadcast=false);
 
diff --git a/sw/inc/frmfmt.hxx b/sw/inc/frmfmt.hxx
index 1e88fa0..300c75e 100644
--- a/sw/inc/frmfmt.hxx
+++ b/sw/inc/frmfmt.hxx
@@ -34,6 +34,7 @@ class SwRect;
 class SwContact;
 class SdrObject;
 namespace sw { class DocumentLayoutManager; }
+class SwFrameFormats;
 
 /// Style of a layout element.
 class SW_DLLPUBLIC SwFrameFormat: public SwFormat
@@ -41,6 +42,7 @@ class SW_DLLPUBLIC SwFrameFormat: public SwFormat
     friend class SwDoc;
     friend class SwPageDesc;    ///< Is allowed to call protected CTor.
     friend class ::sw::DocumentLayoutManager; ///< Is allowed to call protected CTor.
+    friend class SwFrameFormats;     ///< Is allowed to update the list backref.
 
     ::com::sun::star::uno::WeakReference<
         ::com::sun::star::uno::XInterface> m_wXObject;
@@ -48,6 +50,16 @@ class SW_DLLPUBLIC SwFrameFormat: public SwFormat
     //UUUU DrawingLayer FillAttributes in a preprocessed form for primitive usage
     drawinglayer::attribute::SdrAllFillAttributesHelperPtr  maFillAttributes;
 
+    // The assigned SwFrmFmt list.
+    SwFrameFormats *m_ffList;
+
+    struct change_name
+    {
+        change_name(const OUString &rName) : mName(rName) {}
+        void operator()(SwFormat *pFormat) { pFormat->m_aFormatName = mName; }
+        const OUString &mName;
+    };
+
 protected:
     SwFrameFormat(
         SwAttrPool& rPool,
@@ -142,6 +154,8 @@ public:
     virtual bool supportsFullDrawingLayerFillAttributeSet() const SAL_OVERRIDE;
 
     void dumpAsXml(struct _xmlTextWriter* pWriter) const;
+
+    virtual void SetName( const OUString& rNewName, bool bBroadcast=false ) SAL_OVERRIDE;
 };
 
 // The FlyFrame-Format
diff --git a/sw/source/core/doc/docedt.cxx b/sw/source/core/doc/docedt.cxx
index 81abb44..a6aa637 100644
--- a/sw/source/core/doc/docedt.cxx
+++ b/sw/source/core/doc/docedt.cxx
@@ -223,7 +223,7 @@ void DelFlyInRange( const SwNodeIndex& rMkNdIdx,
                     if( i > rTable.size() )
                         i = rTable.size();
                     else if( pFormat != rTable[i] )
-                        i = rTable.GetPos( pFormat );
+                        i = std::distance(rTable.begin(), rTable.find( pFormat ));
                 }
 
                 pDoc->getIDocumentLayoutAccess().DelLayoutFormat( pFormat );
diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx
index 68006a0..c1d72fa 100644
--- a/sw/source/core/doc/docfmt.cxx
+++ b/sw/source/core/doc/docfmt.cxx
@@ -707,10 +707,8 @@ void SwDoc::DelFrameFormat( SwFrameFormat *pFormat, bool bBroadcast )
     }
     else
     {
-
         // The format has to be in the one or the other, we'll see in which one.
-        SwFrameFormats::iterator it = std::find( mpFrameFormatTable->begin(), mpFrameFormatTable->end(), pFormat );
-        if ( it != mpFrameFormatTable->end() )
+        if ( mpFrameFormatTable->Contains( pFormat ) )
         {
             if (bBroadcast)
                 BroadcastStyleOperation(pFormat->GetName(),
@@ -724,17 +722,17 @@ void SwDoc::DelFrameFormat( SwFrameFormat *pFormat, bool bBroadcast )
                 GetIDocumentUndoRedo().AppendUndo(pUndo);
             }
 
-            delete *it;
-            mpFrameFormatTable->erase(it);
+            mpFrameFormatTable->erase( pFormat );
+            delete pFormat;
         }
         else
         {
-            SwFrameFormats::iterator it2 = std::find( GetSpzFrameFormats()->begin(), GetSpzFrameFormats()->end(), pFormat );
-            OSL_ENSURE( it2 != GetSpzFrameFormats()->end(), "FrameFormat not found." );
-            if( it2 != GetSpzFrameFormats()->end() )
+            bool contains = GetSpzFrameFormats()->Contains( pFormat );
+            OSL_ENSURE( contains, "FrameFormat not found." );
+            if( contains )
             {
-                delete *it2;
-                GetSpzFrameFormats()->erase( it2 );
+                GetSpzFrameFormats()->erase( pFormat );
+                delete pFormat;
             }
         }
     }
@@ -742,10 +740,10 @@ void SwDoc::DelFrameFormat( SwFrameFormat *pFormat, bool bBroadcast )
 
 void SwDoc::DelTableFrameFormat( SwTableFormat *pFormat )
 {
-    SwFrameFormats::iterator it = std::find( mpTableFrameFormatTable->begin(), mpTableFrameFormatTable->end(), pFormat );
+    SwFrameFormats::const_iterator it = mpTableFrameFormatTable->find( pFormat );
     OSL_ENSURE( it != mpTableFrameFormatTable->end(), "Format not found," );
-    delete *it;
-    mpTableFrameFormatTable->erase(it);
+    mpTableFrameFormatTable->erase( it );
+    delete pFormat;
 }
 
 /// Create the formats
@@ -1563,11 +1561,11 @@ void SwDoc::ReplaceStyles( const SwDoc& rSource, bool bIncludePageStyles )
     }
 
     // then there are the numbering templates
-    const SwPageDescs::size_type nCnt = rSource.GetNumRuleTable().size();
+    const SwNumRuleTable::size_type nCnt = rSource.GetNumRuleTable().size();
     if( nCnt )
     {
         const SwNumRuleTable& rArr = rSource.GetNumRuleTable();
-        for( SwPageDescs::size_type n = 0; n < nCnt; ++n )
+        for( SwNumRuleTable::size_type n = 0; n < nCnt; ++n )
         {
             const SwNumRule& rR = *rArr[ n ];
             SwNumRule* pNew = FindNumRulePtr( rR.GetName());
@@ -2029,4 +2027,110 @@ namespace docfunc
     }
 }
 
+SwFrameFormats::~SwFrameFormats()
+{
+    DeleteAndDestroyAll( false );
+}
+
+SwFrameFormats::iterator SwFrameFormats::find( const value_type& x ) const
+{
+    const ByTypeAndName &pd_named = SwFrameFormatsBase::get<1>();
+    ByTypeAndName::iterator it = pd_named.find( boost::make_tuple(x->Which(), x->GetName(), x) );
+    return project<0>( it );
+}
+
+std::pair<SwFrameFormats::const_range_iterator,SwFrameFormats::const_range_iterator>
+SwFrameFormats::rangeFind( sal_uInt16 type, const OUString& name ) const
+{
+    const ByTypeAndName &pd_named = SwFrameFormatsBase::get<1>();
+    return pd_named.equal_range( boost::make_tuple(type, name) );
+}
+
+std::pair<SwFrameFormats::const_range_iterator,SwFrameFormats::const_range_iterator>
+SwFrameFormats::rangeFind( const value_type& x ) const
+{
+    return rangeFind( x->Which(), x->GetName() );
+}
+
+void SwFrameFormats::DeleteAndDestroy(int aStartIdx, int aEndIdx)
+{
+    if (aEndIdx < aStartIdx)
+        return;
+    for (const_iterator it = begin() + aStartIdx;
+                        it != begin() + aEndIdx; ++it)
+        delete *it;
+    ByPos::erase( begin() + aStartIdx, begin() + aEndIdx);
+}
+
+void SwFrameFormats::DeleteAndDestroyAll( bool keepDefault )
+{
+    if ( empty() )
+        return;
+    const int _offset = keepDefault ? 1 : 0;
+    for( const_iterator it = begin() + _offset; it != end(); ++it )
+        delete *it;
+    if ( _offset )
+        SwFrameFormatsBase::erase( begin() + _offset, end() );
+    else
+        clear();
+}
+
+size_t SwFrameFormats::GetPos( const value_type& x ) const
+{
+    const_iterator const it = find( x );
+    return it == end() ? SIZE_MAX : it - begin();
+}
+
+std::pair<SwFrameFormats::const_iterator,bool> SwFrameFormats::push_back( const value_type& x )
+{
+    SAL_WARN_IF(x->m_ffList != nullptr, "sw", "Inserting already assigned item");
+    assert(x->m_ffList == nullptr);
+    x->m_ffList = this;
+    return ByPos::push_back( x );
+}
+
+bool SwFrameFormats::erase( const value_type& x )
+{
+    const_iterator const ret = find( x );
+    SAL_WARN_IF(x->m_ffList != this, "sw", "Removing invalid / unassigned item");
+    if (ret != end()) {
+        assert( x == *ret );
+        ByPos::erase( ret );
+        x->m_ffList = nullptr;
+        return true;
+    }
+    return false;
+}
+
+void SwFrameFormats::erase( size_type index_ )
+{
+    erase( begin() + index_ );
+}
+
+void SwFrameFormats::erase( const_iterator const& position )
+{
+    (*position)->m_ffList = nullptr;
+    ByPos::erase( begin() + (position - begin()) );
+}
+
+bool SwFrameFormats::Contains( const SwFrameFormats::value_type& x ) const
+{
+    return (x->m_ffList == this);
+}
+
+bool SwFrameFormats::newDefault( const value_type& x )
+{
+    std::pair<iterator,bool> res = ByPos::push_front( x );
+    if( ! res.second )
+        newDefault( res.first );
+    return res.second;
+}
+
+void SwFrameFormats::newDefault( const_iterator const& position )
+{
+    if (position == begin())
+        return;
+    ByPos::relocate( begin(), position );
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/doc/doclay.cxx b/sw/source/core/doc/doclay.cxx
index 1ca85a5..9c9a7db 100644
--- a/sw/source/core/doc/doclay.cxx
+++ b/sw/source/core/doc/doclay.cxx
@@ -1345,10 +1345,10 @@ OUString SwDoc::GetUniqueFrameName() const
 
 const SwFlyFrameFormat* SwDoc::FindFlyByName( const OUString& rName, sal_Int8 nNdTyp ) const
 {
-    const SwFrameFormats& rFormats = *GetSpzFrameFormats();
-    for( auto n = rFormats.size(); n; )
+    auto range = GetSpzFrameFormats()->rangeFind( RES_FLYFRMFMT, rName );
+    for( auto it = range.first; it != range.second; it++ )
     {
-        const SwFrameFormat* pFlyFormat = rFormats[ --n ];
+        const SwFrameFormat* pFlyFormat = *it;
         const SwNodeIndex* pIdx = 0;
         if( RES_FLYFRMFMT == pFlyFormat->Which() && pFlyFormat->GetName() == rName &&
             0 != ( pIdx = pFlyFormat->GetContent().GetContentIdx() ) &&
@@ -1402,7 +1402,7 @@ void SwDoc::SetAllUniqueFlyNames()
 
     if( 255 < ( n = GetSpzFrameFormats()->size() ))
         n = 255;
-    SwFrameFormats aArr;
+    SwFrameFormatsV aArr;
     aArr.reserve( n );
     SwFrameFormat* pFlyFormat;
     bool bContainsAtPageObjWithContentAnchor = false;
diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx
index a55e755..ca66d3b 100644
--- a/sw/source/core/doc/docnew.cxx
+++ b/sw/source/core/doc/docnew.cxx
@@ -557,7 +557,7 @@ SwDoc::~SwDoc()
     // All Flys need to be destroyed before the Drawing Model,
     // because Flys can still contain DrawContacts, when no
     // Layout could be constructed due to a read error.
-    mpSpzFrameFormatTable->DeleteAndDestroy( 0, mpSpzFrameFormatTable->size() );
+    mpSpzFrameFormatTable->DeleteAndDestroyAll();
 
     // Only now destroy the Model, the drawing objects - which are also
     // contained in the Undo - need to remove their attributes from the
@@ -727,12 +727,12 @@ void SwDoc::ClearDoc()
     if( getIDocumentLayoutAccess().GetCurrentViewShell() )
     {
         // search the FrameFormat of the root frm. This is not allowed to delete
-        mpFrameFormatTable->erase( std::find( mpFrameFormatTable->begin(), mpFrameFormatTable->end(), getIDocumentLayoutAccess().GetCurrentViewShell()->GetLayout()->GetFormat() ) );
-        mpFrameFormatTable->DeleteAndDestroy(1, mpFrameFormatTable->size());
+        mpFrameFormatTable->erase( getIDocumentLayoutAccess().GetCurrentViewShell()->GetLayout()->GetFormat() );
+        mpFrameFormatTable->DeleteAndDestroyAll( true );
         mpFrameFormatTable->push_back( getIDocumentLayoutAccess().GetCurrentViewShell()->GetLayout()->GetFormat() );
     }
     else
-        mpFrameFormatTable->DeleteAndDestroy(1, mpFrameFormatTable->size());
+        mpFrameFormatTable->DeleteAndDestroyAll( true );
 
     mxForbiddenCharsTable.clear();
 
diff --git a/sw/source/core/frmedt/fecopy.cxx b/sw/source/core/frmedt/fecopy.cxx
index d6dac44..675b818 100644
--- a/sw/source/core/frmedt/fecopy.cxx
+++ b/sw/source/core/frmedt/fecopy.cxx
@@ -149,11 +149,8 @@ bool SwFEShell::Copy( SwDoc* pClpDoc, const OUString* pNewClpText )
         SwFrameFormats& rSpzFrameFormats = *pClpDoc->GetSpzFrameFormats();
         if( rSpzFrameFormats[ 0 ] != pFlyFormat )
         {
-            SwFrameFormats::iterator it = std::find( rSpzFrameFormats.begin(), rSpzFrameFormats.end(), pFlyFormat );
-            OSL_ENSURE( it != rSpzFrameFormats.end(), "Fly not contained in Spz-Array" );
-
-            rSpzFrameFormats.erase( it );
-            rSpzFrameFormats.insert( rSpzFrameFormats.begin(), pFlyFormat );
+            bool inserted = rSpzFrameFormats.newDefault( pFlyFormat );
+            OSL_ENSURE( !inserted, "Fly not contained in Spz-Array" );
         }
 
         if ( FLY_AS_CHAR == aAnchor.GetAnchorId() )
diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx
index fe24b43..d1af3af 100644
--- a/sw/source/core/layout/atrfrm.cxx
+++ b/sw/source/core/layout/atrfrm.cxx
@@ -2513,7 +2513,8 @@ SwFrameFormat::SwFrameFormat(
     const sal_uInt16* pWhichRange)
 :   SwFormat(rPool, pFormatNm, (pWhichRange ? pWhichRange : aFrameFormatSetRange), pDrvdFrm, nFormatWhich),
     m_wXObject(),
-    maFillAttributes()
+    maFillAttributes(),
+    m_ffList(nullptr)
 {
 }
 
@@ -2525,7 +2526,8 @@ SwFrameFormat::SwFrameFormat(
     const sal_uInt16* pWhichRange)
 :   SwFormat(rPool, rFormatNm, (pWhichRange ? pWhichRange : aFrameFormatSetRange), pDrvdFrm, nFormatWhich),
     m_wXObject(),
-    maFillAttributes()
+    maFillAttributes(),
+    m_ffList(nullptr)
 {
 }
 
@@ -2541,6 +2543,29 @@ SwFrameFormat::~SwFrameFormat()
     }
 }
 
+void SwFrameFormat::SetName( const OUString& rNewName, bool bBroadcast )
+{
+    if (m_ffList != nullptr) {
+        SwFrameFormats::iterator it = m_ffList->find( this );
+        assert( m_ffList->end() != it );
+        SAL_INFO_IF(m_aFormatName == rNewName, "sw", "SwFrmFmt not really renamed, as both names are equal");
+
+        SwStringMsgPoolItem aOld( RES_NAME_CHANGED, m_aFormatName );
+        // As it's a non-unique list, rename should never fail!
+#if OSL_DEBUG_LEVEL > 0
+        bool renamed =
+#endif
+            m_ffList->modify( it, change_name( rNewName ), change_name( m_aFormatName ) );
+        assert(renamed);
+        if (bBroadcast) {
+            SwStringMsgPoolItem aNew( RES_NAME_CHANGED, rNewName );
+            ModifyNotification( &aOld, &aNew );
+        }
+    }
+    else
+        SwFormat::SetName( rNewName, bBroadcast );
+}
+
 bool SwFrameFormat::supportsFullDrawingLayerFillAttributeSet() const
 {
     return true;
@@ -2843,8 +2868,8 @@ void SwFrameFormat::dumpAsXml(xmlTextWriterPtr pWriter) const
 void SwFrameFormats::dumpAsXml(xmlTextWriterPtr pWriter, const char* pName) const
 {
     xmlTextWriterStartElement(pWriter, BAD_CAST(pName));
-    for (size_t i = 0; i < size(); ++i)
-        GetFormat(i)->dumpAsXml(pWriter);
+    for (const SwFrameFormat *pFormat : SwFrameFormatsBase::get<0>())
+        pFormat->dumpAsXml(pWriter);
     xmlTextWriterEndElement(pWriter);
 }
 
diff --git a/sw/source/core/undo/unattr.cxx b/sw/source/core/undo/unattr.cxx
index ec5770d..f4e9461 100644
--- a/sw/source/core/undo/unattr.cxx
+++ b/sw/source/core/undo/unattr.cxx
@@ -254,11 +254,9 @@ bool SwUndoFormatAttr::IsFormatInDoc( SwDoc* pDoc )
             // no break!
         case RES_DRAWFRMFMT:
         case RES_FLYFRMFMT:
-            bFound = pDoc->GetSpzFrameFormats()->Contains( m_pFormat );
-            if ( !bFound )
-            {
-                bFound = pDoc->GetFrameFormats()->Contains( m_pFormat );
-            }
+            if (pDoc->GetSpzFrameFormats()->Contains( m_pFormat )
+                    || pDoc->GetFrameFormats()->Contains( m_pFormat ))
+                bFound = true;
             break;
     }
 
diff --git a/sw/source/core/undo/undobj1.cxx b/sw/source/core/undo/undobj1.cxx
index 933df15..86a4013 100644
--- a/sw/source/core/undo/undobj1.cxx
+++ b/sw/source/core/undo/undobj1.cxx
@@ -220,7 +220,7 @@ void SwUndoFlyBase::DelFly( SwDoc* pDoc )
 
     // delete from array
     SwFrameFormats& rFlyFormats = *pDoc->GetSpzFrameFormats();
-    rFlyFormats.erase( std::find( rFlyFormats.begin(), rFlyFormats.end(), pFrameFormat ));
+    rFlyFormats.erase( pFrameFormat );
 }
 
 SwUndoInsLayFormat::SwUndoInsLayFormat( SwFrameFormat* pFormat, sal_uLong nNodeIdx, sal_Int32 nCntIdx )
diff --git a/sw/source/core/undo/untbl.cxx b/sw/source/core/undo/untbl.cxx
index c2c34a0..9189b92 100644
--- a/sw/source/core/undo/untbl.cxx
+++ b/sw/source/core/undo/untbl.cxx
@@ -118,7 +118,7 @@ class _SaveTable
     _SaveLine* m_pLine;
     const SwTable* m_pSwTable;
     SfxItemSets m_aSets;
-    SwFrameFormats m_aFrameFormats;
+    SwFrameFormatsV m_aFrameFormats;
     sal_uInt16 m_nLineCount;
     bool m_bModifyBox : 1;
     bool m_bSaveFormula : 1;
diff --git a/sw/source/filter/basflt/shellio.cxx b/sw/source/filter/basflt/shellio.cxx
index d42b064..2400590 100644
--- a/sw/source/filter/basflt/shellio.cxx
+++ b/sw/source/filter/basflt/shellio.cxx
@@ -137,7 +137,7 @@ sal_uLong SwReader::Read( const Reader& rOptions )
     RedlineMode_t ePostReadRedlineMode( nsRedlineMode_t::REDLINE_IGNORE );
 
     // Array of FlyFormats
-    SwFrameFormats aFlyFrmArr;
+    SwFrameFormatsV aFlyFrmArr;
     // only read templates? then ignore multi selection!
     bool bFormatsOnly = po->aOpt.IsFormatsOnly();
 
diff --git a/sw/source/filter/ww8/wrtw8esh.cxx b/sw/source/filter/ww8/wrtw8esh.cxx
index b7c6106..eba0ac0 100644
--- a/sw/source/filter/ww8/wrtw8esh.cxx
+++ b/sw/source/filter/ww8/wrtw8esh.cxx
@@ -1001,7 +1001,8 @@ sal_uInt32 WW8Export::GetSdrOrdNum( const SwFrameFormat& rFormat ) const
     {
         // no Layout for this format, then recalc the ordnum
         SwFrameFormat* pFormat = const_cast<SwFrameFormat*>(&rFormat);
-        nOrdNum = static_cast<sal_uInt32>(m_pDoc->GetSpzFrameFormats()->GetPos( pFormat ));
+        nOrdNum = std::distance(m_pDoc->GetSpzFrameFormats()->begin(),
+                                m_pDoc->GetSpzFrameFormats()->find( pFormat ) );
 
         const SwDrawModel* pModel = m_pDoc->getIDocumentDrawModelAccess().GetDrawModel();
         if( pModel )
commit ab6b71b75e4b5e0181fe7765e0b78ce8d4b72ec7
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Sun Mar 29 03:04:37 2015 +0200

    Convert SwPageDescs to boost::multi_index
    
    Page descriptions are exported via XIndexAccess, so they need a
    stable array, currently a vector. On the other hand they are
    referred by a unique name, so the lookup in the unsorted array is
    O(n), not taking into account the amount of string comparisons.
    
    The multi index container adds an ordered unique index, which
    gets the lookup time down to O(log(n)) at the cost of a bit more
    management overhead for most operations, which is largely
    outweighted by the amount of lookup calls. These anyway have to be
    done on insert to guarantee the unique naming.
    
    Change-Id: I3fb892ff524f6a9804d9572c1825074c0810649e

diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx
index 656ebb5..aef4575 100644
--- a/sw/inc/doc.hxx
+++ b/sw/inc/doc.hxx
@@ -47,6 +47,7 @@
 #include <frmfmt.hxx>
 #include <charfmt.hxx>
 #include <docary.hxx>
+#include <pagedesc.hxx>
 
 #include <svtools/embedhlp.hxx>
 
@@ -118,7 +119,6 @@ class SwNodeRange;
 class SwNodes;
 class SwNumRule;
 class SwNumRuleTable;
-class SwPageDesc;
 class SwPagePreviewPrtData;
 class SwRangeRedline;
 class SwRedlineTable;
@@ -236,8 +236,6 @@ namespace sfx2 {
     class LinkManager;
 }
 
-typedef boost::ptr_vector<SwPageDesc> SwPageDescs;
-
 void SetAllScriptItem( SfxItemSet& rSet, const SfxPoolItem& rItem );
 
 // global function to start grammar checking in the document
@@ -937,12 +935,12 @@ public:
 
     // PageDescriptor interface.
     size_t GetPageDescCnt() const { return maPageDescs.size(); }
-    const SwPageDesc& GetPageDesc( const size_t i ) const { return maPageDescs[i]; }
-    SwPageDesc& GetPageDesc( size_t i ) { return maPageDescs[i]; }
+    const SwPageDesc& GetPageDesc( const size_t i ) const { return *maPageDescs[i]; }
+    SwPageDesc& GetPageDesc( size_t i ) { return *maPageDescs[i]; }
     SwPageDesc* FindPageDesc(const OUString& rName, size_t* pPos = NULL);
     SwPageDesc* FindPageDesc(const OUString& rName, size_t* pPos = NULL) const;
     // Just searches the pointer in the maPageDescs vector!
-    bool        ContainsPageDesc(const SwPageDesc *pDesc, size_t* pPos = NULL);
+    bool        ContainsPageDesc(const SwPageDesc *pDesc, size_t* pPos = NULL) const;
 
     /** Copy the complete PageDesc - beyond document and "deep"!
      Optionally copying of PoolFormatId, -HlpId can be prevented. */
diff --git a/sw/inc/pagedesc.hxx b/sw/inc/pagedesc.hxx
index 5bdb738..756b7a9 100644
--- a/sw/inc/pagedesc.hxx
+++ b/sw/inc/pagedesc.hxx
@@ -27,9 +27,15 @@
 #include <editeng/numitem.hxx>
 #include <editeng/borderline.hxx>
 
+#include <boost/multi_index_container.hpp>
+#include <boost/multi_index/identity.hpp>
+#include <boost/multi_index/ordered_index.hpp>
+#include <boost/multi_index/random_access_index.hpp>
+
 class SfxPoolItem;
 class SwTextFormatColl;
 class SwNode;
+class SwPageDescs;
 
 /// Separator line adjustment.
 enum SwFootnoteAdj
@@ -122,15 +128,16 @@ namespace nsUseOnPage
     const UseOnPage PD_MIRROR         = 0x0007;
     const UseOnPage PD_HEADERSHARE    = 0x0040;
     const UseOnPage PD_FOOTERSHARE    = 0x0080;
+    const UseOnPage PD_FIRSTSHARE     = 0x0100;
     const UseOnPage PD_NOHEADERSHARE  = 0xFFBF; ///< For internal use only.
     const UseOnPage PD_NOFOOTERSHARE  = 0xFF7F; ///< For internal use only.
-    const UseOnPage PD_FIRSTSHARE = 0x0100;
-    const UseOnPage PD_NOFIRSTSHARE = 0xFEFF;
+    const UseOnPage PD_NOFIRSTSHARE   = 0xFEFF;
 }
 
 class SW_DLLPUBLIC SwPageDesc : public SwModify
 {
     friend class SwDoc;
+    friend class SwPageDescs;
 
     OUString    m_StyleName;
     SvxNumberType m_NumType;
@@ -150,6 +157,9 @@ class SW_DLLPUBLIC SwPageDesc : public SwModify
     /// Footnote information.
     SwPageFootnoteInfo m_IsFootnoteInfo;
 
+    /// Backref to the assigned SwPageDescs list to handle renames.
+    SwPageDescs  *m_pdList;
+
     /** Called for mirroring of Chg (doc).
        No adjustment at any other place. */
     SAL_DLLPRIVATE void Mirror();
@@ -158,13 +168,20 @@ class SW_DLLPUBLIC SwPageDesc : public SwModify
 
     SAL_DLLPRIVATE SwPageDesc(const OUString&, SwFrameFormat*, SwDoc *pDc );
 
+    struct change_name
+    {
+        change_name(const OUString &rName) : mName(rName) {}
+        void operator()(SwPageDesc *pPageDesc) { pPageDesc->m_StyleName = mName; }
+        const OUString &mName;
+    };
+
 protected:
    virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNewValue ) SAL_OVERRIDE;
 
 public:
-    OUString GetName() const { return m_StyleName; }
+    const OUString GetName() const { return m_StyleName; }
     bool HasName(const OUString& rThisName) const { return m_StyleName == rThisName; }
-    void SetName(const OUString& rNewName) { m_StyleName = rNewName; }
+    bool SetName(const OUString& rNewName);
 
     bool GetLandscape() const { return m_IsLandscape; }
     void SetLandscape( bool bNew ) { m_IsLandscape = bNew; }
@@ -247,11 +264,25 @@ public:
     static SwPageDesc* GetByName(SwDoc& rDoc, const OUString& rName);
 
     SwPageDesc& operator=( const SwPageDesc& );
+    bool        operator<(const SwPageDesc& pd) const
+        { return m_StyleName < pd.m_StyleName; }
 
     SwPageDesc( const SwPageDesc& );
     virtual ~SwPageDesc();
 };
 
+namespace std {
+   template<>
+   struct less<SwPageDesc*> {
+       bool operator()(const SwPageDesc *pPageDesc, const OUString &rName) const
+           { return pPageDesc->GetName() < rName; }
+       bool operator()(const OUString &rName, const SwPageDesc *pPageDesc) const
+           { return rName < pPageDesc->GetName(); }
+       bool operator()(const SwPageDesc *lhs, const SwPageDesc *rhs) const
+           { return lhs->GetName() < rhs->GetName(); }
+   };
+}
+
 inline void SwPageDesc::SetFollow( const SwPageDesc* pNew )
 {
     m_pFollow = pNew ? const_cast<SwPageDesc*>(pNew) : this;
@@ -346,6 +377,59 @@ namespace sw {
     class PageFootnoteHint SAL_FINAL : public SfxHint {};
 }
 
+namespace bmi = boost::multi_index;
+
+typedef boost::multi_index_container<
+        SwPageDesc*,
+        bmi::indexed_by<
+            bmi::random_access<>,
+            bmi::ordered_unique< bmi::identity<SwPageDesc*> >
+        >
+    >
+    SwPageDescsBase;
+
+class SwPageDescs : private SwPageDescsBase
+{
+    // function updating ByName index via modify
+    friend bool SwPageDesc::SetName( const OUString& rNewName );
+
+    typedef nth_index<0>::type ByPos;
+    typedef nth_index<1>::type ByName;
+    typedef typename ByPos::iterator iterator;
+
+    using ByPos::modify;
+    iterator find_( const OUString &name ) const;
+
+public:
+    typedef typename ByPos::const_iterator const_iterator;
+    typedef typename SwPageDescsBase::size_type size_type;
+    typedef typename SwPageDescsBase::value_type value_type;
+
+    // frees all SwPageDesc!
+    virtual ~SwPageDescs();
+
+    using SwPageDescsBase::clear;
+    using SwPageDescsBase::empty;
+    using SwPageDescsBase::size;
+
+    std::pair<const_iterator,bool> push_back( const value_type& x );
+    void erase( const value_type& x );
+    void erase( size_type index );
+    void erase( const_iterator const& position );
+
+    const_iterator find( const OUString &name ) const
+        { return find_( name ); }
+    const value_type& operator[]( size_t index_ ) const
+        { return ByPos::operator[]( index_ ); }
+    const value_type& front() const { return ByPos::front(); }
+    const value_type& back() const { return ByPos::back(); }
+    const_iterator begin() const { return ByPos::begin(); }
+    const_iterator end() const { return ByPos::end(); }
+
+    bool contains( const value_type& x ) const
+        { return x->m_pdList == this; }
+};
+
 #endif // INCLUDED_SW_INC_PAGEDESC_HXX
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/doc/docdesc.cxx b/sw/source/core/doc/docdesc.cxx
index 240d2ea..23b544c 100644
--- a/sw/source/core/doc/docdesc.cxx
+++ b/sw/source/core/doc/docdesc.cxx
@@ -380,7 +380,7 @@ void SwDoc::ChgPageDesc( size_t i, const SwPageDesc &rChged )
 {
     OSL_ENSURE( i < maPageDescs.size(), "PageDescs is out of range." );
 
-    SwPageDesc& rDesc = maPageDescs[i];
+    SwPageDesc& rDesc = *maPageDescs[i];
     SwRootFrm* pTmpRoot = getIDocumentLayoutAccess().GetCurrentLayout();
 
     if (GetIDocumentUndoRedo().DoesUndo())
@@ -556,13 +556,13 @@ void SwDoc::PreDelPageDesc(SwPageDesc * pDel)
         return;
 
     // mba: test iteration as clients are removed while iteration
-    SwPageDescHint aHint( &maPageDescs[0] );
+    SwPageDescHint aHint( maPageDescs[0] );
     pDel->CallSwClientNotify( aHint );
 
     bool bHasLayout = getIDocumentLayoutAccess().HasLayout();
     if ( mpFootnoteInfo->DependsOn( pDel ) )
     {
-        mpFootnoteInfo->ChgPageDesc( &maPageDescs[0] );
+        mpFootnoteInfo->ChgPageDesc( maPageDescs[0] );
         if ( bHasLayout )
         {
             std::set<SwRootFrm*> aAllLayouts = GetAllLayouts();
@@ -571,7 +571,7 @@ void SwDoc::PreDelPageDesc(SwPageDesc * pDel)
     }
     else if ( mpEndNoteInfo->DependsOn( pDel ) )
     {
-        mpEndNoteInfo->ChgPageDesc( &maPageDescs[0] );
+        mpEndNoteInfo->ChgPageDesc( maPageDescs[0] );
         if ( bHasLayout )
         {
             std::set<SwRootFrm*> aAllLayouts = GetAllLayouts();
@@ -579,11 +579,11 @@ void SwDoc::PreDelPageDesc(SwPageDesc * pDel)
         }
     }
 
-    for ( SwPageDescs::size_type j = 0; j < maPageDescs.size(); ++j )
+    for(SwPageDesc *pPageDesc : maPageDescs)
     {
-        if ( maPageDescs[j].GetFollow() == pDel )
+        if ( pPageDesc->GetFollow() == pDel )
         {
-            maPageDescs[j].SetFollow( 0 );
+            pPageDesc->SetFollow( 0 );
             if( bHasLayout )
             {
                 std::set<SwRootFrm*> aAllLayouts = GetAllLayouts();
@@ -618,7 +618,7 @@ void SwDoc::DelPageDesc( size_t i, bool bBroadcast )
     if ( i == 0 )
         return;
 
-    SwPageDesc &rDel = maPageDescs[i];
+    SwPageDesc &rDel = *maPageDescs[i];
 
     if (bBroadcast)
         BroadcastStyleOperation(rDel.GetName(), SFX_STYLE_FAMILY_PAGE,
@@ -666,7 +666,9 @@ SwPageDesc* SwDoc::MakePageDesc(const OUString &rName, const SwPageDesc *pCpy,
         pNew->GetFirstMaster().SetFormatAttr( SvxFrameDirectionItem(aFrameDirection, RES_FRAMEDIR) );
         pNew->GetFirstLeft().SetFormatAttr( SvxFrameDirectionItem(aFrameDirection, RES_FRAMEDIR) );
     }
-    maPageDescs.push_back( pNew );
+
+    std::pair<SwPageDescs::const_iterator, bool> res = maPageDescs.push_back( pNew );
+    SAL_WARN_IF(!res.second, "sw", "MakePageDesc called with existing name" );
 
     if (bBroadcast)
         BroadcastStyleOperation(rName, SFX_STYLE_FAMILY_PAGE,
@@ -808,22 +810,14 @@ IMPL_LINK_NOARG_TYPED( SwDoc, DoUpdateModifiedOLE, Idle *, void )
     }
 }
 
-struct CompareSwPageDescName {
-    explicit CompareSwPageDescName(const OUString &rName) : mName(rName) {}
-    bool operator () (const SwPageDesc& other) const { return other.GetName() == mName; }
-    const OUString &mName;
-};
-
-template <class UnaryPredicate>
-static SwPageDesc* lcl_FindPageDesc( SwPageDescs *pPageDescs,
-                                     size_t *pPos, UnaryPredicate pred )
+static SwPageDesc* lcl_FindPageDesc( const SwPageDescs *pPageDescs,
+                                     size_t *pPos, const OUString &rName )
 {
-    SwPageDescs::iterator it = std::find_if(
-        pPageDescs->begin(), pPageDescs->end(), pred);
-    SwPageDesc* res = NULL;
+    SwPageDesc* res = nullptr;
+    SwPageDescs::const_iterator it = pPageDescs->find( rName );
     if( it != pPageDescs->end() )
     {
-        res = &( *it ) ;;
+        res = *it;
         if( pPos )
             *pPos = std::distance( pPageDescs->begin(), it );
     }
@@ -834,31 +828,31 @@ static SwPageDesc* lcl_FindPageDesc( SwPageDescs *pPageDescs,
 
 SwPageDesc* SwDoc::FindPageDesc( const OUString & rName, size_t* pPos )
 {
-    return lcl_FindPageDesc<CompareSwPageDescName>(
-        &maPageDescs, pPos, CompareSwPageDescName(rName) );
+    return lcl_FindPageDesc( &maPageDescs, pPos, rName );
 }
 
 SwPageDesc* SwDoc::FindPageDesc( const OUString & rName, size_t* pPos ) const
 {
-    return lcl_FindPageDesc<CompareSwPageDescName>(
-        const_cast <SwPageDescs *>( &maPageDescs ), pPos,
-        CompareSwPageDescName(rName) );
+    return lcl_FindPageDesc(
+        const_cast <SwPageDescs *>( &maPageDescs ), pPos, rName );
 }
 
-struct CompareSwPageDescToPtr {
-    explicit CompareSwPageDescToPtr(const SwPageDesc* ptr) : mPtr(ptr) {}
-    bool operator () (const SwPageDesc& other) const { return &other == mPtr; }
-    const SwPageDesc *mPtr;
-};
-
-bool SwDoc::ContainsPageDesc( const SwPageDesc *pDesc, size_t* pPos )
+bool SwDoc::ContainsPageDesc( const SwPageDesc *pDesc, size_t* pPos ) const
 {
-    if (pDesc == NULL)
+    if( pDesc == nullptr )
         return false;
-    SwPageDesc *res = lcl_FindPageDesc<CompareSwPageDescToPtr>(
-        &maPageDescs, pPos,
-        CompareSwPageDescToPtr(pDesc) );
-    return res != NULL;
+    if( !maPageDescs.contains( const_cast <SwPageDesc*>( pDesc ) ) ) {
+        if( pPos )
+            *pPos = SIZE_MAX;
+        return false;
+    }
+    if( ! pPos )
+        return true;
+
+    SwPageDesc* desc = lcl_FindPageDesc(
+        &maPageDescs, pPos, pDesc->GetName() );
+    SAL_WARN_IF( desc != pDesc, "sw", "SwPageDescs container is broken!" );
+    return true;
 }
 
 void SwDoc::DelPageDesc( const OUString & rName, bool bBroadcast )
diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx
index 4acd8e8..68006a0 100644
--- a/sw/source/core/doc/docfmt.cxx
+++ b/sw/source/core/doc/docfmt.cxx
@@ -1547,7 +1547,7 @@ void SwDoc::ReplaceStyles( const SwDoc& rSource, bool bIncludePageStyles )
             // 1st step: Create all formats (skip the 0th - it's the default!)
             while( nCnt )
             {
-                const SwPageDesc &rSrc = rSource.maPageDescs[ --nCnt ];
+                const SwPageDesc &rSrc = *rSource.maPageDescs[ --nCnt ];
                 if( 0 == FindPageDesc( rSrc.GetName() ) )
                     MakePageDesc( rSrc.GetName() );
             }
@@ -1555,7 +1555,7 @@ void SwDoc::ReplaceStyles( const SwDoc& rSource, bool bIncludePageStyles )
             // 2nd step: Copy all attributes, set the right parents
             for( nCnt = rSource.maPageDescs.size(); nCnt; )
             {
-                const SwPageDesc &rSrc = rSource.maPageDescs[ --nCnt ];
+                const SwPageDesc &rSrc = *rSource.maPageDescs[ --nCnt ];
                 SwPageDesc* pDesc = FindPageDesc( rSrc.GetName() );
                 CopyPageDesc( rSrc, *pDesc);
             }
diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx
index 548bd633..a55e755 100644
--- a/sw/source/core/doc/docnew.cxx
+++ b/sw/source/core/doc/docnew.cxx
@@ -493,6 +493,8 @@ SwDoc::~SwDoc()
     // Destroy these only after destroying the FormatIndices, because the content
     // of headers/footers has to be deleted as well. If in the headers/footers
     // there are still Flys registered at that point, we have a problem.
+    for( SwPageDesc *pPageDesc : maPageDescs )
+        delete pPageDesc;
     maPageDescs.clear();
 
     // Delete content selections.
@@ -703,7 +705,9 @@ void SwDoc::ClearDoc()
     // remove the dummy pagedesc from the array and delete all the old ones
     size_t nDummyPgDsc = 0;
     if (FindPageDesc(pDummyPgDsc->GetName(), &nDummyPgDsc))
-        pDummyPgDsc = maPageDescs.release(maPageDescs.begin() + nDummyPgDsc).release();
+        maPageDescs.erase( nDummyPgDsc );
+    for( SwPageDesc *pPageDesc : maPageDescs )
+        delete pPageDesc;
     maPageDescs.clear();
 
     // Delete for Collections
diff --git a/sw/source/core/layout/pagedesc.cxx b/sw/source/core/layout/pagedesc.cxx
index 6ce689c..bd6fdde 100644
--- a/sw/source/core/layout/pagedesc.cxx
+++ b/sw/source/core/layout/pagedesc.cxx
@@ -52,6 +52,7 @@ SwPageDesc::SwPageDesc(const OUString& rName, SwFrameFormat *pFormat, SwDoc *con
     , m_eUse( (UseOnPage)(nsUseOnPage::PD_ALL | nsUseOnPage::PD_HEADERSHARE | nsUseOnPage::PD_FOOTERSHARE | nsUseOnPage::PD_FIRSTSHARE) )
     , m_IsLandscape( false )
     , m_IsHidden( false )
+    , m_pdList( nullptr )
 {
 }
 
@@ -71,6 +72,7 @@ SwPageDesc::SwPageDesc( const SwPageDesc &rCpy )
     , m_IsLandscape( rCpy.GetLandscape() )
     , m_IsHidden( rCpy.IsHidden() )
     , m_IsFootnoteInfo( rCpy.GetFootnoteInfo() )
+    , m_pdList( nullptr )
 {
 }
 
@@ -99,6 +101,22 @@ SwPageDesc::~SwPageDesc()
 {
 }
 
+bool SwPageDesc::SetName( const OUString& rNewName )
+{
+    bool renamed = true;
+    if (m_pdList) {
+        SwPageDescs::iterator it = m_pdList->find_( m_StyleName );
+        if( m_pdList->end() == it ) {
+            SAL_WARN( "sw", "SwPageDesc not found in expected m_pdList" );
+            return false;
+        }
+        renamed = m_pdList->modify( it, change_name( rNewName ), change_name( m_StyleName ) );
+    }
+    else
+        m_StyleName = rNewName;
+    return renamed;
+}
+
 /// Only the margin is mirrored.
 /// Attributes like borders and so on are copied 1:1.
 void SwPageDesc::Mirror()
@@ -165,7 +183,7 @@ const SwTextFormatColl* SwPageDesc::GetRegisterFormatColl() const
     return static_cast<const SwTextFormatColl*>(pReg);
 }
 
-/// notifie all affected page frames
+/// notify all affected page frames
 void SwPageDesc::RegisterChange()
 {
     // #117072# - During destruction of the document <SwDoc>
@@ -455,10 +473,61 @@ SwPageDescExt::operator SwPageDesc() const
 
     SwPageDesc * pPageDesc = m_pDoc->FindPageDesc(m_sFollow);
 
-    if ( 0 != pPageDesc )
+    if ( nullptr != pPageDesc )
         aResult.SetFollow(pPageDesc);
 
     return aResult;
 }
 
+SwPageDescs::~SwPageDescs()
+{
+    for(const_iterator it = begin(); it != end(); ++it)
+        delete *it;
+}
+
+SwPageDescs::iterator SwPageDescs::find_(const OUString &name) const
+{
+    const ByName &pd_named = get<1>();
+    ByName::iterator it = pd_named.find( name );
+    return iterator_to( *it );
+}
+
+std::pair<SwPageDescs::const_iterator,bool> SwPageDescs::push_back( const value_type& x )
+{
+    // SwPageDesc is not already in a SwPageDescs list!
+    assert( x->m_pdList == nullptr );
+
+    std::pair<iterator,bool> res = ByPos::push_back( x );
+    if( res.second )
+        x->m_pdList = this;
+    return res;
+}
+
+void SwPageDescs::erase( const value_type& x )
+{
+    // SwPageDesc is not in this SwPageDescs list!
+    assert( x->m_pdList == this );
+
+    iterator const ret = find_( x->GetName() );
+    if (ret != end())
+        ByPos::erase( ret );
+    else
+        SAL_WARN( "sw", "SwPageDesc is not in SwPageDescs m_pdList!" );
+    x->m_pdList = nullptr;
+}
+
+void SwPageDescs::erase( const_iterator const& position )
+{
+    // SwPageDesc is not in this SwPageDescs list!
+    assert( (*position)->m_pdList == this );
+
+    (*position)->m_pdList = nullptr;
+    ByPos::erase( position );
+}
+
+void SwPageDescs::erase( size_type index_ )
+{
+    erase( begin() + index_ );
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 83616b80de84114b5add32d2a9d337210d7151a1
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Sun Mar 29 03:02:22 2015 +0200

    More Boost Multi-Index shadow / unused warnings
    
    Update the patch for additional warnings already fixed upstream.
    
    Change-Id: I2c189f7b05ea60fa5e0d2faee08cf298cbcdba9d

diff --git a/external/boost/boost.multi_index.Wshadow.warnings.patch.1 b/external/boost/boost.multi_index.Wshadow.warnings.patch.1
index 58c39c0..c777786 100644
--- a/external/boost/boost.multi_index.Wshadow.warnings.patch.1
+++ b/external/boost/boost.multi_index.Wshadow.warnings.patch.1
@@ -92,3 +92,96 @@
    }
  #endif
  
+@@ -886,7 +886,7 @@
+   }
+ 
+   template<typename Modifier,typename Rollback>
+-  bool modify_(Modifier& mod,Rollback& back,node_type* x)
++  bool modify_(Modifier& mod,Rollback& back_,node_type* x)
+   {
+     mod(const_cast<value_type&>(x->value()));
+ 
+@@ -896,7 +896,7 @@
+     }
+     BOOST_CATCH(...){
+       BOOST_TRY{
+-        back(const_cast<value_type&>(x->value()));
++        back_(const_cast<value_type&>(x->value()));
+         BOOST_RETHROW;
+       }
+       BOOST_CATCH(...){
+@@ -909,7 +909,7 @@
+ 
+     BOOST_TRY{
+       if(!b){
+-        back(const_cast<value_type&>(x->value()));
++        back_(const_cast<value_type&>(x->value()));
+         return false;
+       }
+       else return true;
+--- boost/boost/multi_index/detail/rnd_index_loader.hpp	2008-07-03 18:51:53.000000000 +0200
++++ boost/boost/multi_index/detail/rnd_index_loader.hpp	2015-03-28 19:55:34.695640663 +0100
+@@ -86,14 +86,14 @@
+     }
+   }
+ 
+-  void rearrange(node_impl_pointer position,node_impl_pointer x)
++  void rearrange(node_impl_pointer position_,node_impl_pointer x)
+   {
+     preprocess(); /* only incur this penalty if rearrange() is ever called */
+-    if(position==node_impl_pointer(0))position=header;
++    if(position_==node_impl_pointer(0))position_=header;
+     next(prev(x))=next(x);
+     prev(next(x))=prev(x);
+-    prev(x)=position;
+-    next(x)=next(position);
++    prev(x)=position_;
++    next(x)=next(position_);
+     next(prev(x))=prev(next(x))=x;
+   }
+ 
+--- boost/boost/multi_index/detail/rnd_index_ptr_array.hpp	2013-07-24 09:52:40.000000000 +0200
++++ boost/boost/multi_index/detail/rnd_index_ptr_array.hpp	2015-03-28 20:07:05.495571347 +0100
+@@ -53,9 +53,9 @@
+   >::type::pointer                                  pointer;
+ 
+   random_access_index_ptr_array(
+-    const Allocator& al,value_type end_,std::size_t size):
+-    size_(size),
+-    capacity_(size),
++    const Allocator& al,value_type end_,std::size_t sz):
++    size_(sz),
++    capacity_(sz),
+     spc(al,capacity_+1)
+   {
+     *end()=end_;
+--- boost/boost/multi_index/random_access_index.hpp	2013-07-24 09:52:40.000000000 +0200
++++ boost/boost/multi_index/random_access_index.hpp	2015-03-28 19:57:48.047643827 +0100
+@@ -467,7 +467,7 @@
+   }
+ 
+   template<typename Modifier,typename Rollback>
+-  bool modify(iterator position,Modifier mod,Rollback back)
++  bool modify(iterator position,Modifier mod,Rollback back_)
+   {
+     BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
+     BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
+@@ -484,7 +484,7 @@
+ #endif
+ 
+     return this->final_modify_(
+-      mod,back,static_cast<final_node_type*>(position.get_node()));
++      mod,back_,static_cast<final_node_type*>(position.get_node()));
+   }
+ 
+   void swap(random_access_index<SuperMeta,TagList>& x)
+--- boost/boost/multi_index/detail/rnd_index_ops.hpp	2015-05-31 00:27:17.451944336 +0000
++++ boost/boost/multi_index/detail/rnd_index_ops.hpp	2015-05-31 00:27:27.295946846 +0000
+@@ -176,7 +176,6 @@
+ 
+   if(ptrs.size()<=1)return;
+ 
+-  typedef typename Node::value_type         value_type;
+   typedef typename Node::impl_pointer       impl_pointer;
+   typedef typename Node::impl_ptr_pointer   impl_ptr_pointer;
+   typedef random_access_index_sort_compare<
commit d2cefbe7effbee079c05a5a8234305650618fdc1
Author: László Németh <laszlo.nemeth at collabora.com>
Date:   Sat Jun 20 15:56:16 2015 +0200

    Updated core
    Project: help  eb25dc35aa6cfa92b4afa7a43f1340578ea4bd33
    
    HTML compatibility option Print layout exports TOC with dot leaders
    
    and justified page numbers
    
    Change-Id: If960e59c006740e261905392b83b87b0bb579ab4
    Reviewed-on: https://gerrit.libreoffice.org/16387
    Reviewed-by: Adolfo Jayme Barrientos <fitojb at ubuntu.com>
    Tested-by: Adolfo Jayme Barrientos <fitojb at ubuntu.com>

diff --git a/helpcontent2 b/helpcontent2
index 599a3ed..eb25dc3 160000
--- a/helpcontent2
+++ b/helpcontent2
@@ -1 +1 @@
-Subproject commit 599a3ed0a4b47d893a201ea00423f84830883522
+Subproject commit eb25dc35aa6cfa92b4afa7a43f1340578ea4bd33
commit 314853930f04c109eca20a41604ead49f0516164
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Sat Jun 20 21:01:00 2015 +0200

    gb_OBJCXXFLAGS requires -lobjc
    
    ...as it causes at least recent Clang trunk (towards 3.7) to emit
    
      .cfi_personality 155, ___objc_personality_v0
    
    where __objc_personality_v0 is exported from /usr/lib/libobjc.A.dylib
    
    Change-Id: If4ccf15b2c3167185ba50d78ecf4379e02814933

diff --git a/toolkit/Library_tk.mk b/toolkit/Library_tk.mk
index 31ea037..e5aaad5 100644
--- a/toolkit/Library_tk.mk
+++ b/toolkit/Library_tk.mk
@@ -119,6 +119,9 @@ ifeq ($(OS),MACOSX)
 $(eval $(call gb_Library_add_cxxflags,tk,\
 	$(gb_OBJCXXFLAGS) \
 ))
+$(eval $(call gb_Library_add_libs,tk,\
+	-lobjc \
+))
 endif
 
 ifeq ($(OS),IOS)
commit 03aaa99e3e141bbe722fdead969ec9541dcc5d73
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Sat Jun 20 20:42:21 2015 +0200

    loplugin:staticmethods
    
    Change-Id: Ice0e5fa5ac0a2c46b70442bb7baeb7e43efbf599

diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx
index 8edd8cb..417f949 100644
--- a/sw/source/filter/ww8/wrtww8.cxx
+++ b/sw/source/filter/ww8/wrtww8.cxx
@@ -2216,10 +2216,10 @@ void WW8AttributeOutput::TableDefinition( ww8::WW8TableNodeInfoInner::Pointer_t
         {
             const SvxBoxItem & rBoxItem = pBoxFormat->GetBox();
 
-            m_rWW8Export.Out_SwFormatTableBox( *m_rWW8Export.pO, &rBoxItem ); // 8/16 Byte
+            WW8Export::Out_SwFormatTableBox( *m_rWW8Export.pO, &rBoxItem ); // 8/16 Byte
         }
         else
-            m_rWW8Export.Out_SwFormatTableBox( *m_rWW8Export.pO, NULL); // 8/16 Byte
+            WW8Export::Out_SwFormatTableBox( *m_rWW8Export.pO, NULL); // 8/16 Byte
 
         SAL_INFO( "sw.ww8.level2", "<tclength>" << ( m_rWW8Export.pO->size() - npOCount ) << "</tclength>" );
     }
@@ -2390,7 +2390,7 @@ void WW8AttributeOutput::TableBackgrounds( ww8::WW8TableNodeInfoInner::Pointer_t
             aColor = COL_AUTO;
 
         WW8_SHD aShd;
-        m_rWW8Export.TransBrush( aColor, aShd );
+        WW8Export::TransBrush( aColor, aShd );
         m_rWW8Export.InsUInt16( aShd.GetValue() );
     }
 
diff --git a/sw/source/filter/ww8/wrtww8.hxx b/sw/source/filter/ww8/wrtww8.hxx
index d8330b3..3c3aa32 100644
--- a/sw/source/filter/ww8/wrtww8.hxx
+++ b/sw/source/filter/ww8/wrtww8.hxx
@@ -1060,16 +1060,16 @@ public:
                                      const SwFormatPageDesc* pNewPgDescFormat = 0,
                                      const SwPageDesc* pNewPgDesc = 0 ) SAL_OVERRIDE;
 
-    void Out_BorderLine(ww::bytes& rO, const ::editeng::SvxBorderLine* pLine,
+    static void Out_BorderLine(ww::bytes& rO, const ::editeng::SvxBorderLine* pLine,
         sal_uInt16 nDist, sal_uInt16 nSprmNo, sal_uInt16 nSprmNoVer9,
         bool bShadow);
 
     void Out_SwFormatBox(const SvxBoxItem& rBox, bool bShadow);
-    void Out_SwFormatTableBox( ww::bytes& rO, const SvxBoxItem * rBox );
+    static void Out_SwFormatTableBox( ww::bytes& rO, const SvxBoxItem * rBox );
     void Out_CellRangeBorders(const SvxBoxItem * pBox, sal_uInt8 nStart,
         sal_uInt8 nLimit);
-    bool TransBrush(const Color& rCol, WW8_SHD& rShd);
-    WW8_BRCVer9 TranslateBorderLine(const ::editeng::SvxBorderLine& pLine,
+    static bool TransBrush(const Color& rCol, WW8_SHD& rShd);
+    static WW8_BRCVer9 TranslateBorderLine(const ::editeng::SvxBorderLine& pLine,
         sal_uInt16 nDist, bool bShadow);
 
     // #i77805# - new return value indicates, if an inherited outline numbering is suppressed
@@ -1355,14 +1355,14 @@ private:
     typedef std::vector<GraphicDetails>::iterator myiter;
     sal_uInt16 mnIdx;       // Index in File-Positionen
 
-    void WritePICFHeader(SvStream& rStrm, const sw::Frame &rFly,
+    static void WritePICFHeader(SvStream& rStrm, const sw::Frame &rFly,
             sal_uInt16 mm, sal_uInt16 nWidth, sal_uInt16 nHeight,
             const SwAttrSet* pAttrSet = 0);
     void WriteGraphicNode(SvStream& rStrm, const GraphicDetails &rItem);
     void WriteGrfFromGrfNode(SvStream& rStrm, const SwGrfNode &rNd,
         const sw::Frame &rFly, sal_uInt16 nWidth, sal_uInt16 nHeight);
 
-    void WritePICBulletFHeader(SvStream& rStrm, const Graphic &rGrf, sal_uInt16 mm, sal_uInt16 nWidth, sal_uInt16 nHeight);
+    static void WritePICBulletFHeader(SvStream& rStrm, const Graphic &rGrf, sal_uInt16 mm, sal_uInt16 nWidth, sal_uInt16 nHeight);
     void WriteGrfForBullet(SvStream& rStrm,  const Graphic &rGrf, sal_uInt16 nWidth, sal_uInt16 nHeight);
 
     SwWW8WrGrf(const SwWW8WrGrf&) SAL_DELETED_FUNCTION;
diff --git a/sw/source/filter/ww8/wrtww8gr.cxx b/sw/source/filter/ww8/wrtww8gr.cxx
index 3b2bbea..a99881e 100644
--- a/sw/source/filter/ww8/wrtww8gr.cxx
+++ b/sw/source/filter/ww8/wrtww8gr.cxx
@@ -550,7 +550,7 @@ void SwWW8WrGrf::WritePICFHeader(SvStream& rStrm, const sw::Frame &rFly,
                 WW8_BRC aBrc;
                 if (pLn)
                 {
-                    WW8_BRCVer9 aBrc90 = rWrt.TranslateBorderLine( *pLn,
+                    WW8_BRCVer9 aBrc90 = WW8Export::TranslateBorderLine( *pLn,
                         pBox->GetDistance( i ), bShadow );
                     sal_uInt8 ico = msfilter::util::TransColToIco(msfilter::util::BGRToRGB(
                         aBrc90.cv()));
diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx
index b1c6529..7b1639f 100644
--- a/sw/source/filter/ww8/ww8atr.cxx
+++ b/sw/source/filter/ww8/ww8atr.cxx
@@ -1180,7 +1180,7 @@ void WW8AttributeOutput::CharHidden( const SvxCharHiddenItem& rHidden )
 
 void WW8AttributeOutput::CharBorder( const SvxBorderLine* pAllBorder, const sal_uInt16 /*nDist*/, const bool bShadow )
 {
-    m_rWW8Export.Out_BorderLine( *m_rWW8Export.pO, pAllBorder, 0, NS_sprm::LN_CBrc80, NS_sprm::LN_CBrc, bShadow );
+    WW8Export::Out_BorderLine( *m_rWW8Export.pO, pAllBorder, 0, NS_sprm::LN_CBrc80, NS_sprm::LN_CBrc, bShadow );
 }
 
 void WW8AttributeOutput::CharHighlight( const SvxBrushItem& rBrush )
@@ -1511,7 +1511,7 @@ void WW8AttributeOutput::CharBackground( const SvxBrushItem& rBrush )
 {
     WW8_SHD aSHD;
 
-    m_rWW8Export.TransBrush( rBrush.GetColor(), aSHD );
+    WW8Export::TransBrush( rBrush.GetColor(), aSHD );
     // sprmCShd80
     m_rWW8Export.InsUInt16( NS_sprm::LN_CShd80 );
     m_rWW8Export.InsUInt16( aSHD.GetValue() );
@@ -3845,7 +3845,7 @@ void WW8AttributeOutput::FormatBackground( const SvxBrushItem& rBrush )
     {
         WW8_SHD aSHD;
 
-        m_rWW8Export.TransBrush( rBrush.GetColor(), aSHD );
+        WW8Export::TransBrush( rBrush.GetColor(), aSHD );
         // sprmPShd
         m_rWW8Export.InsUInt16( NS_sprm::LN_PShd );
         m_rWW8Export.InsUInt16( aSHD.GetValue() );
commit 20e64b6012442749d01810869229613ea36be3a9
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sat Jun 20 18:04:12 2015 +0100

    fix assert on exporting ooo106020-1.odt to docx
    
    the dread msword column limit
    
    Change-Id: Icbf7fc396de62286d523516da815dabf62336567

diff --git a/sw/qa/extras/ooxmlexport/data/ooo106020-1.odt b/sw/qa/extras/ooxmlexport/data/ooo106020-1.odt
new file mode 100644
index 0000000..9cc774b
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/ooo106020-1.odt differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
index b655b99d..3df813e 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
@@ -858,6 +858,14 @@ DECLARE_OOXMLEXPORT_TEST(fdo60957, "fdo60957-2.docx")
         assertXPath(pXmlDoc, "//w:tbl", 2);
 }
 
+//This has more cells than msword supports, we must balance the
+//number of cell start and ends
+DECLARE_OOXMLEXPORT_TEST(testOO106020, "ooo106020-1.odt")
+{
+    if (xmlDocPtr pXmlDoc = parseExport("word/document.xml"))
+        assertXPath(pXmlDoc, "//w:tbl", 1);
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 989a717..f5dd271 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -688,16 +688,18 @@ void DocxAttributeOutput::EndSdtBlock()
     m_pSerializer->endElementNS( XML_w, XML_sdt );
 }
 
+#define MAX_CELL_IN_WORD 62
+
 void DocxAttributeOutput::SyncNodelessCells(ww8::WW8TableNodeInfoInner::Pointer_t pInner, sal_Int32 nCell, sal_uInt32 nRow)
 {
     sal_Int32 nOpenCell = lastOpenCell.back();
-    if (nOpenCell != -1 && nOpenCell != nCell)
+    if (nOpenCell != -1 && nOpenCell != nCell && nOpenCell < MAX_CELL_IN_WORD)
         EndTableCell(pInner, nOpenCell, nRow);
 
     sal_Int32 nClosedCell = lastClosedCell.back();
     for (sal_Int32 i = nClosedCell+1; i < nCell; ++i)
     {
-        if (i >= 62)    //words limit
+        if (i >= MAX_CELL_IN_WORD)
             break;
 
         if (i == 0)
@@ -725,11 +727,11 @@ void DocxAttributeOutput::FinishTableRowCell( ww8::WW8TableNodeInfoInner::Pointe
         // so simply if there are more columns, don't close the last one msoffice will handle
         // and merge the contents of the remaining ones into it (since we don't close the cell
         // here, following ones will not be opened)
-        const bool limitWorkaround = (nCell >= 62 && !pInner->isEndOfLine());
+        const bool limitWorkaround = (nCell >= MAX_CELL_IN_WORD && !pInner->isEndOfLine());
         const bool bEndCell = pInner->isEndOfCell() && !limitWorkaround;
         const bool bEndRow = pInner->isEndOfLine();
 
-        if ( bEndCell )
+        if (bEndCell)
         {
             while (pInner->getDepth() < m_tableReference->m_nTableDepth)
             {
commit 994bb22c8f34786c1d4b0a787f85c16f117aba96
Author: David Tardon <dtardon at redhat.com>
Date:   Sat Jun 20 19:09:53 2015 +0200

    force liborcus to use internal boost if needed
    
    ... in a different way. Because my patch to boost.m4 has been rejected.
    
    Change-Id: I524eee367d5e295f8177e1f50dfdf1d0893ca0c6

diff --git a/external/liborcus/ExternalProject_liborcus.mk b/external/liborcus/ExternalProject_liborcus.mk
index 1869428..37af7c8 100644
--- a/external/liborcus/ExternalProject_liborcus.mk
+++ b/external/liborcus/ExternalProject_liborcus.mk
@@ -103,10 +103,8 @@ $(call gb_ExternalProject_get_state_target,liborcus,build) :
 			$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
 			$(if $(SYSTEM_BOOST),,\
 				--with-boost=$(WORKDIR)/UnpackedTarball/boost \
-				BOOST_IOSTREAMS_LDFLAGS=' ' \
-				BOOST_IOSTREAMS_LIBS=' ' \
-				BOOST_SYSTEM_LDFLAGS=' ' \
-				BOOST_SYSTEM_LIBS=' ' \
+				boost_cv_lib_iostreams=yes \
+				boost_cv_lib_system=yes \
 			) \
 			$(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
 		&& $(if $(VERBOSE)$(verbose),V=1) \
commit 2adb3c2b89344878fc9270d8816c2cb22ebb3713
Author: Yousuf Philips <philipz85 at hotmail.com>
Date:   Sat Jun 20 19:00:44 2015 +0400

    tdf#84909 Additional tweaks to the standard, draw and text toolbars
    
    Change-Id: I2a1a222855b3dfdc4147f14a559d13432745e456
    Reviewed-on: https://gerrit.libreoffice.org/16388
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Yousuf Philips <philipz85 at hotmail.com>

diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
index 8c7199c..1c679bd 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
@@ -2432,7 +2432,7 @@
       </node>
       <node oor:name=".uno:OutlineFormat" oor:op="replace">
         <prop oor:name="Label" oor:type="xs:string">
-          <value xml:lang="en-US">Formatting On/Off</value>
+          <value xml:lang="en-US">Show Formatting</value>
         </prop>
         <prop oor:name="Properties" oor:type="xs:int">
           <value>1</value>
@@ -2440,7 +2440,7 @@
       </node>
       <node oor:name=".uno:OutlineCollapseAll" oor:op="replace">
         <prop oor:name="Label" oor:type="xs:string">
-          <value xml:lang="en-US">First Level</value>
+          <value xml:lang="en-US">Show Only First Level</value>
         </prop>
         <prop oor:name="Properties" oor:type="xs:int">
           <value>1</value>
@@ -3041,7 +3041,7 @@
       </node>
       <node oor:name=".uno:OutlineExpandAll" oor:op="replace">
         <prop oor:name="Label" oor:type="xs:string">
-          <value xml:lang="en-US">All Levels</value>
+          <value xml:lang="en-US">Show All Levels</value>
         </prop>
         <prop oor:name="Properties" oor:type="xs:int">
           <value>1</value>
diff --git a/sd/uiconfig/simpress/toolbar/outlinetoolbar.xml b/sd/uiconfig/simpress/toolbar/outlinetoolbar.xml
index f9d6be8..fd110a5 100644
--- a/sd/uiconfig/simpress/toolbar/outlinetoolbar.xml
+++ b/sd/uiconfig/simpress/toolbar/outlinetoolbar.xml
@@ -18,11 +18,16 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 -->
 <toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
- <toolbar:toolbaritem xlink:href=".uno:OutlineCollapseAll"/>
- <toolbar:toolbaritem xlink:href=".uno:OutlineExpandAll"/>
- <toolbar:toolbaritem xlink:href=".uno:OutlineCollapse"/>
- <toolbar:toolbaritem xlink:href=".uno:OutlineExpand"/>
+ <toolbar:toolbaritem xlink:href=".uno:OutlineRight"/>
+ <toolbar:toolbaritem xlink:href=".uno:OutlineLeft"/>
+ <toolbar:toolbaritem xlink:href=".uno:OutlineDown"/>
+ <toolbar:toolbaritem xlink:href=".uno:OutlineUp"/>
  <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:OutlineFormat"/>
  <toolbar:toolbaritem xlink:href=".uno:ColorView"/>
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:OutlineCollapseAll"/>
+ <toolbar:toolbaritem xlink:href=".uno:OutlineExpandAll"/>
+ <toolbar:toolbaritem xlink:href=".uno:OutlineCollapse" toolbar:visible="false"/>
+ <toolbar:toolbaritem xlink:href=".uno:OutlineExpand" toolbar:visible="false"/>
 </toolbar:toolbar>
diff --git a/sd/uiconfig/simpress/toolbar/standardbar.xml b/sd/uiconfig/simpress/toolbar/standardbar.xml
index 8dbc6ee..c82ad6a 100644
--- a/sd/uiconfig/simpress/toolbar/standardbar.xml
+++ b/sd/uiconfig/simpress/toolbar/standardbar.xml
@@ -40,22 +40,23 @@
  <toolbar:toolbaritem xlink:href=".uno:Undo"/>
  <toolbar:toolbaritem xlink:href=".uno:Redo"/>
  <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:SearchDialog"/>
  <toolbar:toolbaritem xlink:href=".uno:SpellDialog"/>
  <toolbar:toolbaritem xlink:href=".uno:SpellOnline" toolbar:visible="false"/>
- <toolbar:toolbaritem xlink:href=".uno:ZoomMode"/>
+ <toolbar:toolbaritem xlink:href=".uno:ZoomMode" toolbar:visible="false"/>
  <toolbar:toolbaritem xlink:href=".uno:ZoomToolBox" toolbar:style="dropdown" toolbar:visible="false"/>
  <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:InsertTable"/>
  <toolbar:toolbaritem xlink:href=".uno:InsertGraphic"/>
- <toolbar:toolbaritem xlink:href=".uno:InsertObjectChart"/>
  <toolbar:toolbaritem xlink:href=".uno:InsertAVMedia"/>
+ <toolbar:toolbaritem xlink:href=".uno:InsertObjectChart"/>
+ <toolbar:toolbaritem xlink:href=".uno:Text" toolbar:style="radio"/>
+ <toolbar:toolbaritem xlink:href=".uno:VerticalText" toolbar:style="radio"/>
+ <toolbar:toolbaritem xlink:href=".uno:FontworkGalleryFloater"/>
  <toolbar:toolbaritem xlink:href=".uno:HyperlinkDialog"/>
  <toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:GridVisible" toolbar:style="auto" toolbar:visible="false"/>
- <toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:HelpIndex" toolbar:visible="false"/>
- <toolbar:toolbaritem xlink:href=".uno:ExtendedHelp" toolbar:visible="false"/>
- <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:GridVisible"/>
+ <toolbar:toolbaritem xlink:href=".uno:HelplinesMove" toolbar:visible="false"/>
  <toolbar:toolbaritem xlink:href=".uno:AnimationEffects"/>
  <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:PageSetup"/>
@@ -73,4 +74,7 @@
  <toolbar:toolbaritem xlink:href=".uno:MovePageUp" toolbar:visible="false"/>
  <toolbar:toolbaritem xlink:href=".uno:MovePageDown" toolbar:visible="false"/>
  <toolbar:toolbaritem xlink:href=".uno:MovePageLast" toolbar:visible="false"/>
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:HelpIndex" toolbar:visible="false"/>
+ <toolbar:toolbaritem xlink:href=".uno:ExtendedHelp" toolbar:visible="false"/>
 </toolbar:toolbar>
diff --git a/sd/uiconfig/simpress/toolbar/textobjectbar.xml b/sd/uiconfig/simpress/toolbar/textobjectbar.xml
index 6a59382..fce8e53 100644
--- a/sd/uiconfig/simpress/toolbar/textobjectbar.xml
+++ b/sd/uiconfig/simpress/toolbar/textobjectbar.xml
@@ -27,8 +27,15 @@
  <toolbar:toolbaritem xlink:href=".uno:Bold" toolbar:helpid="10009"/>
  <toolbar:toolbaritem xlink:href=".uno:Italic" toolbar:helpid="10008"/>
  <toolbar:toolbaritem xlink:href=".uno:Underline" toolbar:helpid="10014"/>
+ <toolbar:toolbaritem xlink:href=".uno:UnderlineDouble" toolbar:visible="false"/>
+ <toolbar:toolbaritem xlink:href=".uno:Strikeout"/>
+ <toolbar:toolbaritem xlink:href=".uno:Overline" toolbar:visible="false"/>
+ <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:Shadowed" toolbar:helpid="10010"/>
- <toolbar:toolbaritem xlink:href=".uno:OutlineFont" toolbar:visible="false"/>
+ <toolbar:toolbaritem xlink:href=".uno:OutlineFont"/>
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:InsertSymbol" toolbar:helpid="27019"/>
+ <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:Color" toolbar:helpid="10017"/>
  <toolbar:toolbaritem xlink:href=".uno:CharBackColor" toolbar:style="dropdown"/>
  <toolbar:toolbarseparator/>
@@ -37,30 +44,31 @@
  <toolbar:toolbaritem xlink:href=".uno:RightPara" toolbar:helpid="10029"/>
  <toolbar:toolbaritem xlink:href=".uno:JustifyPara" toolbar:helpid="10031"/>
  <toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:ParaLeftToRight" toolbar:helpid="10950"/>
- <toolbar:toolbaritem xlink:href=".uno:ParaRightToLeft" toolbar:helpid="10951"/>
- <toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:ParaspaceIncrease" toolbar:helpid="27346"/>
- <toolbar:toolbaritem xlink:href=".uno:ParaspaceDecrease" toolbar:helpid="27347"/>
+ <toolbar:toolbaritem xlink:href=".uno:CellVertTop"/>
+ <toolbar:toolbaritem xlink:href=".uno:CellVertCenter"/>
+ <toolbar:toolbaritem xlink:href=".uno:CellVertBottom"/>
  <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:LineSpacing"/>
  <toolbar:toolbaritem xlink:href=".uno:SpacePara1" toolbar:visible="false" toolbar:helpid="10034"/>
  <toolbar:toolbaritem xlink:href=".uno:SpacePara15" toolbar:visible="false" toolbar:helpid="10035"/>
  <toolbar:toolbaritem xlink:href=".uno:SpacePara2" toolbar:visible="false" toolbar:helpid="10036"/>
+ <toolbar:toolbaritem xlink:href=".uno:ParaspaceIncrease" toolbar:helpid="27346"/>
+ <toolbar:toolbaritem xlink:href=".uno:ParaspaceDecrease" toolbar:helpid="27347"/>
  <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:DefaultBullet" toolbar:helpid="20138"/>
  <toolbar:toolbaritem xlink:href=".uno:DefaultNumbering"/>
- <toolbar:toolbaritem xlink:href=".uno:OutlineLeft" toolbar:helpid="10152"/>
  <toolbar:toolbaritem xlink:href=".uno:OutlineRight" toolbar:helpid="10153"/>
- <toolbar:toolbaritem xlink:href=".uno:OutlineUp" toolbar:helpid="10150"/>
+ <toolbar:toolbaritem xlink:href=".uno:OutlineLeft" toolbar:helpid="10152"/>
  <toolbar:toolbaritem xlink:href=".uno:OutlineDown" toolbar:helpid="10151"/>
+ <toolbar:toolbaritem xlink:href=".uno:OutlineUp" toolbar:helpid="10150"/>
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:ParaLeftToRight" toolbar:helpid="10950"/>
+ <toolbar:toolbaritem xlink:href=".uno:ParaRightToLeft" toolbar:helpid="10951"/>
  <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:TextdirectionLeftToRight" toolbar:helpid="10907"/>
  <toolbar:toolbaritem xlink:href=".uno:TextdirectionTopToBottom" toolbar:helpid="10908"/>
  <toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:FontDialog" toolbar:helpid="10296"/>
- <toolbar:toolbaritem xlink:href=".uno:ParagraphDialog" toolbar:helpid="10297"/>
+ <toolbar:toolbaritem xlink:href=".uno:FontDialog" toolbar:visible="false" toolbar:helpid="10296"/>
+ <toolbar:toolbaritem xlink:href=".uno:ParagraphDialog" toolbar:visible="false" toolbar:helpid="10297"/>
  <toolbar:toolbaritem xlink:href=".uno:OutlineBullet" toolbar:visible="false" toolbar:helpid="10156"/>
- <toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:InsertSymbol" toolbar:helpid="27019"/>
 </toolbar:toolbar>
diff --git a/sd/uiconfig/simpress/toolbar/toolbar.xml b/sd/uiconfig/simpress/toolbar/toolbar.xml
index 6023cae..210c478 100644
--- a/sd/uiconfig/simpress/toolbar/toolbar.xml
+++ b/sd/uiconfig/simpress/toolbar/toolbar.xml
@@ -19,25 +19,43 @@
 -->
 <toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar">
  <toolbar:toolbaritem xlink:href=".uno:SelectObject" toolbar:style="radio"/>
+ <toolbar:toolbaritem xlink:href=".uno:ZoomMode"/>
+ <toolbar:toolbaritem xlink:href=".uno:ZoomToolBox" toolbar:style="dropdown" toolbar:visible="false"/>
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:Text" toolbar:style="radio" toolbar:visible="false"/>
+ <toolbar:toolbaritem xlink:href=".uno:VerticalText" toolbar:style="radio" toolbar:visible="false"/>
+ <toolbar:toolbaritem xlink:href=".uno:FontworkGalleryFloater" toolbar:visible="false"/>
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:XLineColor"/>
+ <toolbar:toolbaritem xlink:href=".uno:FillColor"/>
  <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:Line" toolbar:style="radio"/>
  <toolbar:toolbaritem xlink:href=".uno:LineArrowEnd" toolbar:style="radio" toolbar:visible="false"/>
+ <toolbar:toolbaritem xlink:href=".uno:ArrowsToolbox" toolbar:style="radio dropdown"/>
+ <toolbar:toolbaritem xlink:href=".uno:LineToolbox" toolbar:style="radio dropdown"/>
+ <toolbar:toolbaritem xlink:href=".uno:ConnectorToolbox" toolbar:style="radio dropdown"/>
+ <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:BasicShapes.rectangle" toolbar:style="radio"/>
  <toolbar:toolbaritem xlink:href=".uno:BasicShapes.ellipse" toolbar:style="radio"/>
- <toolbar:toolbaritem xlink:href=".uno:LineToolbox" toolbar:style="radio dropdown"/>
- <toolbar:toolbaritem xlink:href=".uno:Text" toolbar:style="radio"/>
- <toolbar:toolbaritem xlink:href=".uno:VerticalText" toolbar:style="radio"/>
- <toolbar:toolbaritem xlink:href=".uno:FontworkGalleryFloater"/>
  <toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:ArrowsToolbox" toolbar:style="radio dropdown"/>
- <toolbar:toolbaritem xlink:href=".uno:ConnectorToolbox" toolbar:style="radio dropdown" toolbar:visible="false"/>
- <toolbar:toolbaritem xlink:href=".uno:Objects3DToolbox" toolbar:style="radio dropdown" toolbar:visible="false"/>
  <toolbar:toolbaritem xlink:href=".uno:BasicShapes" toolbar:style="radio dropdown"/>
  <toolbar:toolbaritem xlink:href=".uno:SymbolShapes" toolbar:style="radio dropdown"/>
  <toolbar:toolbaritem xlink:href=".uno:ArrowShapes" toolbar:style="radio dropdown"/>
  <toolbar:toolbaritem xlink:href=".uno:FlowChartShapes" toolbar:style="radio dropdown"/>
  <toolbar:toolbaritem xlink:href=".uno:CalloutShapes" toolbar:style="radio dropdown"/>
  <toolbar:toolbaritem xlink:href=".uno:StarShapes" toolbar:style="radio dropdown"/>
+ <toolbar:toolbaritem xlink:href=".uno:Objects3DToolbox" toolbar:style="radio dropdown"/>
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:TransformDialog" toolbar:visible="false"/>
+ <toolbar:toolbaritem xlink:href=".uno:ToggleObjectRotateMode"/>
+ <toolbar:toolbaritem xlink:href=".uno:Mirror" toolbar:visible="false"/>
+ <toolbar:toolbaritem xlink:href=".uno:ObjectAlign" toolbar:style="dropdown"/>
+ <toolbar:toolbaritem xlink:href=".uno:ObjectPosition" toolbar:style="dropdown"/>
+ <toolbar:toolbaritem xlink:href=".uno:DistributeSelection"/>
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:FillShadow" toolbar:helpid="10299"/>
+ <toolbar:toolbaritem xlink:href=".uno:Crop"/>
+ <toolbar:toolbaritem xlink:href=".uno:GraphicFilterToolbox" toolbar:style="dropdown"/>
  <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:ToggleObjectBezierMode" toolbar:helpid="10126"/>
  <toolbar:toolbaritem xlink:href=".uno:GlueEditMode" toolbar:style="auto"/>
@@ -49,16 +67,4 @@
  <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:InsertToolbox" toolbar:style="radio dropdown" toolbar:visible="false"/>
  <toolbar:toolbaritem xlink:href=".uno:Config" toolbar:style="dropdown" toolbar:visible="false"/>
- <toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:FillShadow" toolbar:helpid="10299"/>
- <toolbar:toolbaritem xlink:href=".uno:TransformDialog" toolbar:visible="false"/>
- <toolbar:toolbaritem xlink:href=".uno:ToggleObjectRotateMode"/>
- <toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:Mirror" toolbar:visible="false"/>
- <toolbar:toolbaritem xlink:href=".uno:ObjectAlign" toolbar:style="dropdown"/>
- <toolbar:toolbaritem xlink:href=".uno:ObjectPosition" toolbar:style="dropdown"/>
- <toolbar:toolbaritem xlink:href=".uno:DistributeSelection"/>
- <toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:Crop"/>
- <toolbar:toolbaritem xlink:href=".uno:GraphicFilterToolbox" toolbar:style="dropdown"/>
 </toolbar:toolbar>
commit dd095d3f1ae2b71fdff8b2d2c497d550d8ac5f28
Author: Michael Meeks <michael.meeks at collabora.com>
Date:   Sat Jun 20 12:46:31 2015 +0100

    tdf#92166 - dispose the SwSrcEditWindow properly.
    
    Also improve dispose method to cleanup various pointers.
    Also avoid crash on post dispose MouseUp event.
    
    Change-Id: Ic337a8306566d5b5c81b939be6f89f34fbcc5847

diff --git a/sw/source/uibase/docvw/srcedtw.cxx b/sw/source/uibase/docvw/srcedtw.cxx
index 2412888..98bea25 100644
--- a/sw/source/uibase/docvw/srcedtw.cxx
+++ b/sw/source/uibase/docvw/srcedtw.cxx
@@ -283,13 +283,18 @@ void SwSrcEditWindow::dispose()
         n->removePropertiesChangeListener(listener_.get());
     }
     aSyntaxIdle.Stop();
+    if ( pOutWin )
+        pOutWin->SetTextView( NULL );
+
     if ( pTextEngine )
     {
         EndListening( *pTextEngine );
         pTextEngine->RemoveView( pTextView );
 
         delete pTextView;
+        pTextView = NULL;
         delete pTextEngine;
+        pTextEngine = NULL;
     }
     pHScrollbar.disposeAndClear();
     pVScrollbar.disposeAndClear();
@@ -399,10 +404,14 @@ void  TextViewOutWin::MouseButtonUp( const MouseEvent &rEvt )
     if ( pTextView )
     {
         pTextView->MouseButtonUp( rEvt );
-        SfxBindings& rBindings = static_cast<SwSrcEditWindow*>(GetParent())->GetSrcView()->GetViewFrame()->GetBindings();
-        rBindings.Invalidate( SID_TABLE_CELL );
-        rBindings.Invalidate( SID_CUT );
-        rBindings.Invalidate( SID_COPY );
+        SfxViewFrame *pFrame = static_cast<SwSrcEditWindow*>(GetParent())->GetSrcView()->GetViewFrame();
+        if ( pFrame )
+        {
+            SfxBindings& rBindings = pFrame->GetBindings();
+            rBindings.Invalidate( SID_TABLE_CELL );
+            rBindings.Invalidate( SID_CUT );
+            rBindings.Invalidate( SID_COPY );
+        }
     }
 }
 
diff --git a/sw/source/uibase/uiview/srcview.cxx b/sw/source/uibase/uiview/srcview.cxx
index b29c897..db8aeba 100644
--- a/sw/source/uibase/uiview/srcview.cxx
+++ b/sw/source/uibase/uiview/srcview.cxx
@@ -243,6 +243,8 @@ SwSrcView::~SwSrcView()
                             (delay != 0) || !url.isEmpty());
     EndListening(*pDocShell);
     delete pSearchItem;
+
+    aEditWin.disposeAndClear();
 }
 
 void SwSrcView::SaveContentTo(SfxMedium& rMed)
commit 1f116adb7cfa7ee6a441693530d5afc94ca70f1a
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sat Jun 20 14:06:33 2015 +0100

    callcatcher: update unused code
    
    Change-Id: I29b3f1408b814a1424d8bab232e9ac618901b4c2

diff --git a/cui/source/inc/cuitabarea.hxx b/cui/source/inc/cuitabarea.hxx
index f1604c7..a25966a 100644
--- a/cui/source/inc/cuitabarea.hxx
+++ b/cui/source/inc/cuitabarea.hxx
@@ -750,7 +750,6 @@ public:
     virtual void ActivatePage( const SfxItemSet& rSet ) SAL_OVERRIDE;
     virtual sfxpg DeactivatePage( SfxItemSet* pSet ) SAL_OVERRIDE;
 
-    XPropertyListRef GetPropertyList( XPropertyListType t );
     void             SetPropertyList( XPropertyListType t, const XPropertyListRef &xRef );
 
     void    SetColorList( XColorListRef pColList );
diff --git a/cui/source/tabpages/tpcolor.cxx b/cui/source/tabpages/tpcolor.cxx
index 50b74de..224c1af 100644
--- a/cui/source/tabpages/tpcolor.cxx
+++ b/cui/source/tabpages/tpcolor.cxx
@@ -1225,13 +1225,5 @@ void SvxColorTabPage::SetColorList( XColorListRef pColList )
     SetPropertyList( XCOLOR_LIST, XPropertyListRef( ( pColList.get() ) ) );
 }
 
-XPropertyListRef SvxColorTabPage::GetPropertyList( XPropertyListType t )
-{
-    (void) t;
-    OSL_ASSERT( t == XCOLOR_LIST );
-    return XPropertyListRef( pColorList.get() );
-}
-
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
 
diff --git a/dbaccess/source/core/api/definitioncolumn.cxx b/dbaccess/source/core/api/definitioncolumn.cxx
index 87b2d29..f2e366e 100644
--- a/dbaccess/source/core/api/definitioncolumn.cxx
+++ b/dbaccess/source/core/api/definitioncolumn.cxx
@@ -396,14 +396,6 @@ void OColumnWrapper::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const
     }
 }
 
-sal_Int64 SAL_CALL OColumnWrapper::getSomething( const Sequence< sal_Int8 >& aIdentifier ) throw(RuntimeException)
-{
-    Reference< XUnoTunnel > xTunnel( m_xAggregate, UNO_QUERY);
-    if ( xTunnel.is() )
-        return xTunnel->getSomething( aIdentifier );
-    return 0;
-}
-
 // OTableColumnDescriptorWrapper
 OTableColumnDescriptorWrapper::OTableColumnDescriptorWrapper( const Reference< XPropertySet >& _rCol, const bool _bPureWrap, const bool _bIsDescriptor )
     :OColumnWrapper( _rCol, !_bIsDescriptor )
diff --git a/dbaccess/source/core/dataaccess/commanddefinition.cxx b/dbaccess/source/core/dataaccess/commanddefinition.cxx
index 89b2ed3..bf0584e 100644
--- a/dbaccess/source/core/dataaccess/commanddefinition.cxx
+++ b/dbaccess/source/core/dataaccess/commanddefinition.cxx
@@ -68,61 +68,6 @@ void OCommandDefinition::registerProperties()
                     &rCommandDefinition.m_aLayoutInformation, cppu::UnoType<decltype(rCommandDefinition.m_aLayoutInformation)>::get());
 }
 
-OUString OCommandDefinition::getName() throw( ::com::sun::star::uno::RuntimeException )
-{
-    return getDefinition().m_aProps.aTitle;
-}
-
-OUString OCommandDefinition::getCommand() throw( ::com::sun::star::uno::RuntimeException )
-{
-    return getCommandDefinition().m_sCommand;
-}
-
-void OCommandDefinition::setCommand(const OUString& p1) throw( ::com::sun::star::uno::RuntimeException )
-{
-    setPropertyValue(PROPERTY_COMMAND, Any(p1) );
-}
-
-bool OCommandDefinition::getEscapeProcessing() throw( ::com::sun::star::uno::RuntimeException )
-{
-    return getCommandDefinition().m_bEscapeProcessing;
-}
-
-void OCommandDefinition::setEscapeProcessing(bool p1) throw( ::com::sun::star::uno::RuntimeException )
-{
-    setPropertyValue(PROPERTY_ESCAPE_PROCESSING, Any(p1) );
-}
-
-OUString OCommandDefinition::getUpdateTableName() throw( ::com::sun::star::uno::RuntimeException )
-{
-    return getCommandDefinition().m_sUpdateTableName;
-}
-
-void OCommandDefinition::setUpdateTableName(const OUString& p1) throw( ::com::sun::star::uno::RuntimeException )
-{
-    setPropertyValue(PROPERTY_UPDATE_TABLENAME, Any(p1) );
-}
-
-OUString OCommandDefinition::getUpdateCatalogName() throw( ::com::sun::star::uno::RuntimeException )
-{
-    return getCommandDefinition().m_sUpdateCatalogName;
-}
-
-void OCommandDefinition::setUpdateCatalogName(const OUString& p1) throw( ::com::sun::star::uno::RuntimeException )
-{
-    setPropertyValue(PROPERTY_UPDATE_CATALOGNAME, Any(p1) );
-}
-
-OUString OCommandDefinition::getUpdateSchemaName() throw( ::com::sun::star::uno::RuntimeException )
-{
-    return getCommandDefinition().m_sUpdateSchemaName;
-}
-
-void OCommandDefinition::setUpdateSchemaName(const OUString& p1) throw( ::com::sun::star::uno::RuntimeException )
-{
-    setPropertyValue(PROPERTY_UPDATE_SCHEMANAME, Any(p1) );
-}
-
 OCommandDefinition::OCommandDefinition(const Reference< XComponentContext >& _xORB
                                        ,const Reference< XInterface >& _rxContainer
                                        ,const TContentPtr& _pImpl)
diff --git a/dbaccess/source/core/dataaccess/commanddefinition.hxx b/dbaccess/source/core/dataaccess/commanddefinition.hxx
index 18469f9..d8f4923 100644
--- a/dbaccess/source/core/dataaccess/commanddefinition.hxx
+++ b/dbaccess/source/core/dataaccess/commanddefinition.hxx
@@ -124,19 +124,6 @@ public:
      virtual void SAL_CALL removeEventListener(const com::sun::star::uno::Reference<com::sun::star::lang::XEventListener>& p1) throw( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE
         { OComponentDefinition::removeEventListener(p1); }
 
-    // XQueryDefinition properties
-    OUString getName() throw( ::com::sun::star::uno::RuntimeException );
-    OUString getCommand() throw( ::com::sun::star::uno::RuntimeException );
-    void setCommand(const OUString&) throw( ::com::sun::star::uno::RuntimeException );
-    bool getEscapeProcessing() throw( ::com::sun::star::uno::RuntimeException );
-    void setEscapeProcessing(bool) throw( ::com::sun::star::uno::RuntimeException );
-    OUString getUpdateTableName() throw( ::com::sun::star::uno::RuntimeException );
-    void setUpdateTableName(const OUString&) throw( ::com::sun::star::uno::RuntimeException );
-    OUString getUpdateCatalogName() throw( ::com::sun::star::uno::RuntimeException );
-    void setUpdateCatalogName(const OUString&) throw( ::com::sun::star::uno::RuntimeException );
-    OUString getUpdateSchemaName() throw( ::com::sun::star::uno::RuntimeException );
-    void setUpdateSchemaName(const OUString&) throw( ::com::sun::star::uno::RuntimeException );
-
     // OPropertySetHelper
     DECLARE_PROPERTYCONTAINER_DEFAULTS( );
 
diff --git a/dbaccess/source/core/inc/definitioncolumn.hxx b/dbaccess/source/core/inc/definitioncolumn.hxx
index d615c55..0fa060e 100644
--- a/dbaccess/source/core/inc/definitioncolumn.hxx
+++ b/dbaccess/source/core/inc/definitioncolumn.hxx
@@ -209,8 +209,6 @@ namespace dbaccess
                                                      )
                                                      throw (::com::sun::star::uno::Exception, std::exception) SAL_OVERRIDE;
 
-        sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
-
     protected:
         OUString impl_getPropertyNameFromHandle( const sal_Int32 _nHandle ) const;
 
diff --git a/dbaccess/source/core/misc/dsntypes.cxx b/dbaccess/source/core/misc/dsntypes.cxx
index a8e80f2..1e4d003 100644
--- a/dbaccess/source/core/misc/dsntypes.cxx
+++ b/dbaccess/source/core/misc/dsntypes.cxx
@@ -279,12 +279,6 @@ bool ODsnTypeCollection::supportsDBCreation(const OUString& _sURL) const
     return aFeatures.getOrDefault("SupportsDBCreation",sal_False);
 }
 
-bool ODsnTypeCollection::needsJVM(const OUString& _sURL) const
-{
-    const ::comphelper::NamedValueCollection& aFeatures = m_aDriverConfig.getMetaData(_sURL);
-    return aFeatures.getOrDefault("UseJava",sal_False);
-}
-
 Sequence<PropertyValue> ODsnTypeCollection::getDefaultDBSettings( const OUString& _sURL ) const
 {
     const ::comphelper::NamedValueCollection& aProperties = m_aDriverConfig.getProperties(_sURL);
diff --git a/dbaccess/source/inc/dsntypes.hxx b/dbaccess/source/inc/dsntypes.hxx
index 79b8f9c..f26d6b2 100644
--- a/dbaccess/source/inc/dsntypes.hxx
+++ b/dbaccess/source/inc/dsntypes.hxx
@@ -179,8 +179,6 @@ public:
 
     DATASOURCE_TYPE determineType(const OUString& _rDsn) const;
 
-    bool needsJVM(const OUString& _rDsn) const;
-
     sal_Int32 getIndexOf(const OUString& _sURL) const;
     sal_Int32 size() const;
     OUString getType(const OUString& _sURL) const;
diff --git a/dbaccess/source/ui/dlg/tablespage.cxx b/dbaccess/source/ui/dlg/tablespage.cxx
index b8e31e9..8d82f1e 100644
--- a/dbaccess/source/ui/dlg/tablespage.cxx
+++ b/dbaccess/source/ui/dlg/tablespage.cxx
@@ -138,18 +138,6 @@ namespace dbaui
             m_pTablesList->notifyHiContrastChanged();
         }
     }
-    void OTableSubscriptionPage::resizeControls(const Size& _rDiff)
-    {
-        if ( _rDiff.Height() )
-        {

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list