[Libreoffice-commits] core.git: Branch 'feature/OperationSmiley' - 801 commits - accessibility/inc accessibility/source android/source avmedia/source basctl/inc basctl/source basctl/uiconfig basegfx/source basic/qa basic/source bin/check-elf-dynamic-objects bin/gla11y bin/oss-fuzz-build.sh bridges/inc bridges/Library_cpp_uno.mk bridges/source canvas/source canvas/workben chart2/inc chart2/qa chart2/source chart2/uiconfig comphelper/CppunitTest_comphelper_test.mk comphelper/qa comphelper/source compilerplugins/clang config_host.mk.in configmgr/source configure.ac connectivity/source cppcanvas/inc cppcanvas/source cppuhelper/source cui/CppunitTest_cui_dialogs_test_2.mk cui/CppunitTest_cui_dialogs_test_3.mk cui/CppunitTest_cui_dialogs_test_4.mk cui/inc cui/source cui/uiconfig dbaccess/inc dbaccess/Library_dbahsql.mk dbaccess/source dbaccess/uiconfig desktop/inc desktop/Module_desktop.mk desktop/qa desktop/source desktop/uiconfig desktop/unx dictionaries distro-configs/LibreOfficeHaiku.conf download. lst drawinglayer/source dtrans/source editeng/inc editeng/qa editeng/source editeng/uiconfig embeddedobj/source emfio/inc emfio/source extensions/source extensions/uiconfig extensions/UIConfig_sbibliography.mk external/gpgmepp external/hsqldb external/icu external/libassuan external/libcmis external/libgpg-error external/libxml2 external/libxslt external/lxml external/Module_external.mk external/pdfium extras/source filter/source filter/uiconfig forms/source formula/source formula/uiconfig fpicker/source fpicker/uiconfig framework/inc framework/source helpcontent2 hwpfilter/source i18nlangtag/source i18npool/source icon-themes/colibre icon-themes/colibre_svg icon-themes/elementary_svg icon-themes/galaxy idlc/source idl/inc idl/source include/avmedia include/comphelper include/connectivity include/dbaccess include/editeng include/filter include/formula include/i18nlangtag include/i18nutil include/LibreOfficeKit include/oox include/osl include/sal include/sax include/sfx2 include/svl include/svtools include/svx include/test include/tools include/unotools include/vbahelper include/vcl include/xmloff ios/CustomTarget_iOS_link.mk ios/CustomTarget_iOS_setup.mk ios/LibreOfficeLight ios/welcome.odt libreofficekit/qa libreofficekit/source linguistic/source lotuswordpro/inc lotuswordpro/Library_lwpft.mk lotuswordpro/source Makefile.fetch Makefile.in odk/examples offapi/com offapi/type_reference officecfg/registry oox/inc oox/source package/source postprocess/CustomTarget_images.mk qadevOOo/.classpath qadevOOo/Jar_OOoRunner.mk qadevOOo/objdsc qadevOOo/.project qadevOOo/README qadevOOo/runner qadevOOo/tests readlicense_oo/license reportdesign/inc reportdesign/source reportdesign/uiconfig RepositoryExternal.mk sal/cppunittester sal/Library_sal.mk sal/osl sal/qa sal/rtl sax/Library_sax.mk sax/qa sax/source sccomp/qa sccomp/source sc/CppunitTest_sc_shapeobj.mk sc/CppunitTest_sc_sheetlinkobj.mk sc/inc sc/Module_sc.mk sc/qa scripting/source sc/sdi sc/source sc/uiconfig sc/UICo nfig_scalc.mk sdext/README sdext/source sd/inc sd/qa sd/source sd/uiconfig sfx2/inc sfx2/Library_sfx.mk sfx2/source sfx2/uiconfig shell/Executable_senddoc.mk shell/Library_smplmail.mk shell/Module_shell.mk shell/source shell/StaticLibrary_simplemapi.mk slideshow/inc slideshow/source solenv/bin solenv/clang-format solenv/CompilerTest_compilerplugins_clang.mk solenv/flatpak-manifest.in solenv/gbuild solenv/sanitizers solenv/vs soltools/mkdepend starmath/inc starmath/source starmath/uiconfig stoc/source svgio/inc svgio/Library_svgio.mk svgio/source svl/Library_svl.mk svl/qa svl/source svtools/inc svtools/qa svtools/source svtools/uiconfig svx/CppunitTest_svx_unit.mk svx/inc svx/Library_svx.mk svx/qa svx/sdi svx/source svx/uiconfig sw/CppunitTest_sw_odfimport.mk sw/inc sw/Library_swui.mk sw/qa sw/sdi sw/source sw/uiconfig sw/UIConfig_swriter.mk sysui/desktop test/Library_subsequenttest.mk test/source toolkit/inc toolkit/source tools/inc tools/Library_tl.mk tools/qa tools/source translat ions ucb/source uitest/calc_tests uitest/uitest UnoControls/inc UnoControls/source unotools/source uui/inc uui/source uui/uiconfig vbahelper/inc vbahelper/source vcl/android vcl/backendtest vcl/CppunitTest_vcl_bitmap_test.mk vcl/Executable_svpclient.mk vcl/headless vcl/inc vcl/ios vcl/Library_vcl.mk vcl/opengl vcl/osx vcl/qa vcl/quartz vcl/README.vars vcl/source vcl/uiconfig vcl/unx vcl/win vcl/workben writerfilter/inc writerfilter/source writerperfect/source writerperfect/uiconfig xmlhelp/source xmloff/inc xmloff/source xmlsecurity/inc xmlsecurity/qa xmlsecurity/source xmlsecurity/uiconfig xmlsecurity/util

Sun, 11 Mar 2018 11:41:00 -0700

Rebased ref, commits from common ancestor:
commit 0c2dc352ed73b9eecb464b79e155f37910b2e551
Author: Armin Le Grand <armin.le.gr...@cib.de (CIB)>
Date:   Fri Feb 23 16:57:41 2018 +0100

    OperationSmiley: Added support for using same FillGeometry
    
    It is now possible to use a single FillGeometry to fill objects that
    are made of multiple filled objects (e.g. CustomShapes) so that
    they look as using a single fill. This is used for CustomShapes,
    but may later be 'extended' to be used for more cases. The basic
    functionality was already in the primitives, but had to be added
    to SDrObject due to these being used for CustomShapeVisualization
    (currently - would be better to change this to primitives, too).
    
    Change-Id: I1d9fb158191a9ec663e46f3911213be2f3d88986

diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx
index 3e97a472084f..7bd547f20d71 100644
--- a/include/svx/svdobj.hxx
+++ b/include/svx/svdobj.hxx
@@ -270,11 +270,32 @@ public:
 class SvxShape;
 class SVX_DLLPUBLIC SdrObject: public SfxListener, public virtual 
tools::WeakBase
 {
+private:
     friend class                SdrObjListIter;
     friend class                SdrVirtObj;
     friend class                SdrRectObj;
     friend class                SdrDelayBroadcastObjectChange;
 
+    // OperationSmiley: Allow at each SdrObject to set a 
FillGeometryDefiningShape,
+    // so that for SdrObjects where this is set, the definition of a defined 
FillStyle
+    // will use this, but the local geometry will be filled. This allows to 
fill
+    // multiple shapes with a unified fill, e.g think about CustomShapes.
+    // Currently this is *only* used for CustomShapes, but may be developed to 
get a
+    // common mechanism - usages for it are easy to be found. The current 
limitation
+    // to CustomShapes allows to to think about these SdrObjects to 'vanish' 
during the
+    // lifetime of 'this' - the SdrObjects without SdrPage and SdrModel are 
used as helper
+    // objects for SdrObjCustomShape and thus their lifetime is limited to the 
lifetime
+    // of this local object. For unifying this mechanism, some weak reference 
of
+    // SdrObjects would have to be thought about (not easy with the current 
implementation).
+    // So - allow *only* EnhancedCustomShape2d (which creates the 
visualizations for
+    // SdrObjCustomShape) to set this. Already allow unified read to use it - 
thus already
+    // allowing to implement as standard case for all kinds of SdrObjects.
+    friend class EnhancedCustomShape2d;
+    const SdrObject*            mpFillGeometryDefiningShape;
+    void setFillGeometryDefiningShape(const SdrObject* pNew) { 
mpFillGeometryDefiningShape = pNew; }
+public:
+    const SdrObject* getFillGeometryDefiningShape() const { return 
mpFillGeometryDefiningShape; }
+
 public:
     SdrObject();
 
diff --git a/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx 
b/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx
index b60e9b3df565..e165344b26c1 100644
--- a/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx
+++ b/svx/inc/sdr/primitive2d/sdrpathprimitive2d.hxx
@@ -40,20 +40,36 @@ namespace drawinglayer
             attribute::SdrLineFillShadowTextAttribute   maSdrLFSTAttribute;
             basegfx::B2DPolyPolygon                     maUnitPolyPolygon;
 
+            // OperationSmiley: Added to be able to define a FillGeometry 
different from local
+            // geometry. It is ignored when empty and/or equal to 
UnitPolyPolygon.
+            // If used and there is a fill, object's geomery 
(maUnitPolyPolygon) will be filled,
+            // but UnitDefinitionPolyPolygon will be used to define the 
FillStyle. Thus when
+            // using the 'same' UnitDefinitionPolyPolygon for multiple 
definitions,
+            // all filled stuff using it will fit seamless together.
+            // 'same' is in quotes since it is a UnitPolygon, so being 
relative to the
+            // unit polygon of the local geometry (UnitPolyPolygon). The 
definition is complete
+            // when applying the also given transfomation (maTransform)
+            basegfx::B2DPolyPolygon                     
maUnitDefinitionPolyPolygon;
+
         protected:
             // local decomposition.
             virtual void create2DDecomposition(Primitive2DContainer& 
rContainer, const geometry::ViewInformation2D& aViewInformation) const override;
 
         public:
+            // OperationSmiley: Extended to UnitDefinitionPolyPolygon, but 
when needed
+            // a 2nd version without can be defined that just does not set the
+            // maUnitDefinitionPolyPolygon or set equal to UnitPolyPolygon
             SdrPathPrimitive2D(
                 const basegfx::B2DHomMatrix& rTransform,
                 const attribute::SdrLineFillShadowTextAttribute& 
rSdrLFSTAttribute,
-                const basegfx::B2DPolyPolygon& rUnitPolyPolygon);
+                const basegfx::B2DPolyPolygon& rUnitPolyPolygon,
+                const basegfx::B2DPolyPolygon& rUnitDefinitionPolyPolygon);
 
             // data access
             const basegfx::B2DHomMatrix& getTransform() const { return 
maTransform; }
             const attribute::SdrLineFillShadowTextAttribute& 
getSdrLFSTAttribute() const { return maSdrLFSTAttribute; }
             const basegfx::B2DPolyPolygon& getUnitPolyPolygon() const { return 
maUnitPolyPolygon; }
+            const basegfx::B2DPolyPolygon& getUnitDefinitionPolyPolygon() 
const { return maUnitDefinitionPolyPolygon; }
 
             // compare operator
             virtual bool operator==(const BasePrimitive2D& rPrimitive) const 
override;
diff --git a/svx/source/customshapes/EnhancedCustomShape2d.cxx 
b/svx/source/customshapes/EnhancedCustomShape2d.cxx
index b50836fd138f..39d694b112a8 100644
--- a/svx/source/customshapes/EnhancedCustomShape2d.cxx
+++ b/svx/source/customshapes/EnhancedCustomShape2d.cxx
@@ -1963,22 +1963,6 @@ void EnhancedCustomShape2d::CreateSubPath(
 
     if(aNewB2DPolyPolygon.count())
     {
-        if( !bLineGeometryNeededOnly )
-        {
-            // hack aNewB2DPolyPolygon to fill logic rect - this is
-            // needed to produce gradient fills that look like mso
-            aNewB2DPolygon.clear();
-            aNewB2DPolygon.append(basegfx::B2DPoint(0,0));
-            aNewB2DPolygon.setClosed(true);
-            aNewB2DPolyPolygon.append(aNewB2DPolygon);
-
-            aNewB2DPolygon.clear();
-            aNewB2DPolygon.append(basegfx::B2DPoint(aLogicRect.GetWidth(),
-                                                    aLogicRect.GetHeight()));
-            aNewB2DPolygon.setClosed(true);
-            aNewB2DPolyPolygon.append(aNewB2DPolygon);
-        }
-
         // #i37011#
         bool bForceCreateTwoObjects(false);
 
@@ -2335,6 +2319,16 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( bool 
bLineGeometryNeededOnly )
                         rCustomShapeSet,
                         nColorIndex,
                         nColorCount);
+
+                    // OperationSmiley: when we have access to the 
SdrObjCustomShape and the
+                    // CustomShape is built with more than a single filled 
Geometry, use it
+                    // to define that all helper geometites defined here 
(SdrObjects currently)
+                    // will use the same FillGeometryDefinition (from the 
referenced SdrObjCustomShape).
+                    // This will all same-filled objects look like filled 
smoothly with the same style.
+                    if(pCustomShapeObj)
+                    {
+                        pObj->setFillGeometryDefiningShape(pCustomShapeObj);
+                    }
                 }
             }
 
diff --git a/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx 
b/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx
index 2f203971ad4f..c3033bf71337 100644
--- a/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx
@@ -83,6 +83,7 @@ namespace sdr
 
             // prepare object transformation and unit polygon (direct model 
data)
             basegfx::B2DHomMatrix aObjectMatrix;
+            basegfx::B2DPolyPolygon aUnitDefinitionPolyPolygon;
             bool bIsLine(
                 !aUnitPolyPolygon.areControlPointsUsed()
                 && 1 == nPolyCount
@@ -166,6 +167,30 @@ namespace sdr
                 basegfx::B2DHomMatrix aInverse(aObjectMatrix);
                 aInverse.invert();
                 aUnitPolyPolygon.transform(aInverse);
+
+                // OperationSmiley: Check if a FillGeometryDefiningShape is set
+                const SdrObject* 
pFillGeometryDefiningShape(GetPathObj().getFillGeometryDefiningShape());
+
+                if(nullptr != pFillGeometryDefiningShape)
+                {
+                    // If yes, get it's BoundRange and use as defining 
Geometry for the FillStyle.
+                    // If no, aUnitDefinitionPolyPolygon will just be empty 
and thus be interpreted
+                    // as unused.
+                    // Using SnapRect will make the FillDefinition to always 
be extended e.g.
+                    // for rotated/sheared objects.
+                    const tools::Rectangle& 
rSnapRect(pFillGeometryDefiningShape->GetSnapRect());
+
+                    aUnitDefinitionPolyPolygon.append(
+                        basegfx::utils::createPolygonFromRect(
+                            basegfx::B2DRange(
+                                rSnapRect.Left(), rSnapRect.Top(),
+                                rSnapRect.Right(), rSnapRect.Bottom())));
+
+                    // use same coordinate system as the shape geometry -> this
+                    // makes it relative to shape's unit geometry and thus 
freely
+                    // transformable with the shape
+                    aUnitDefinitionPolyPolygon.transform(aInverse);
+                }
             }
 
             // create primitive. Always create primitives to allow the 
decomposition of
@@ -174,7 +199,8 @@ namespace sdr
                 new drawinglayer::primitive2d::SdrPathPrimitive2D(
                     aObjectMatrix,
                     aAttribute,
-                    aUnitPolyPolygon));
+                    aUnitPolyPolygon,
+                    aUnitDefinitionPolyPolygon));
 
             return drawinglayer::primitive2d::Primitive2DContainer { 
xReference };
         }
diff --git a/svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx 
b/svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx
index 37d4f5850b05..804cccf67e80 100644
--- a/svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx
@@ -43,13 +43,31 @@ namespace drawinglayer
                 // #i108255# no need to use correctOrientations here; target is
                 // straight visualisation
                 basegfx::B2DPolyPolygon aTransformed(getUnitPolyPolygon());
-
                 aTransformed.transform(getTransform());
-                aRetval.push_back(
-                    createPolyPolygonFillPrimitive(
-                        aTransformed,
-                        getSdrLFSTAttribute().getFill(),
-                        getSdrLFSTAttribute().getFillFloatTransGradient()));
+
+                // OperationSmiley: Check if a UnitDefinitionPolyPolygon is set
+                if(getUnitDefinitionPolyPolygon().count()
+                    && getUnitDefinitionPolyPolygon() != getUnitPolyPolygon())
+                {
+                    // if yes, use the B2DRange of it's transformed form
+                    basegfx::B2DPolyPolygon 
aTransformedDefinition(getUnitDefinitionPolyPolygon());
+                    aTransformedDefinition.transform(getTransform());
+
+                    aRetval.push_back(
+                        createPolyPolygonFillPrimitive(
+                            aTransformed,
+                            aTransformedDefinition.getB2DRange(),
+                            getSdrLFSTAttribute().getFill(),
+                            
getSdrLFSTAttribute().getFillFloatTransGradient()));
+                }
+                else
+                {
+                    aRetval.push_back(
+                        createPolyPolygonFillPrimitive(
+                            aTransformed,
+                            getSdrLFSTAttribute().getFill(),
+                            
getSdrLFSTAttribute().getFillFloatTransGradient()));
+                }
             }
 
             // add line
@@ -107,11 +125,13 @@ namespace drawinglayer
         SdrPathPrimitive2D::SdrPathPrimitive2D(
             const basegfx::B2DHomMatrix& rTransform,
             const attribute::SdrLineFillShadowTextAttribute& rSdrLFSTAttribute,
-            const basegfx::B2DPolyPolygon& rUnitPolyPolygon)
+            const basegfx::B2DPolyPolygon& rUnitPolyPolygon,
+            const basegfx::B2DPolyPolygon& rUnitDefinitionPolyPolygon)
         :   BufferedDecompositionPrimitive2D(),
             maTransform(rTransform),
             maSdrLFSTAttribute(rSdrLFSTAttribute),
-            maUnitPolyPolygon(rUnitPolyPolygon)
+            maUnitPolyPolygon(rUnitPolyPolygon),
+            maUnitDefinitionPolyPolygon(rUnitDefinitionPolyPolygon)
         {
         }
 
@@ -122,6 +142,7 @@ namespace drawinglayer
                 const SdrPathPrimitive2D& rCompare = static_cast<const 
SdrPathPrimitive2D&>(rPrimitive);
 
                 return (getUnitPolyPolygon() == rCompare.getUnitPolyPolygon()
+                    && getUnitDefinitionPolyPolygon() == 
rCompare.getUnitDefinitionPolyPolygon()
                     && getTransform() == rCompare.getTransform()
                     && getSdrLFSTAttribute() == 
rCompare.getSdrLFSTAttribute());
             }
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
index 7980458914df..7fe409c8bd64 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -285,7 +285,8 @@ void SdrObject::SetBoundRectDirty()
 
 
 SdrObject::SdrObject() :
-    pPage(nullptr)
+    mpFillGeometryDefiningShape(nullptr)
+    ,pPage(nullptr)
     ,pModel(nullptr)
     ,pUserCall(nullptr)
     ,pPlusData(nullptr)
commit 3b470a199b90b034e8858b3c817d01a42039151c
Author: Armin Le Grand <armin.le.gr...@cib.de (CIB)>
Date:   Thu Feb 22 11:14:31 2018 +0100

    OperationSmiley: Remove brightness from SdrPathObj
    
    There was a member at SdrPathObj called mdBrightness only for
    holding a blend value during creation of SdrPathObjs for
    CustomShape visualization. This has nothing to do on the
    model data, move it to where it belongs
    
    Change-Id: Iee101f90a1275ce1ed97e8e8d0ccf7084c83d4f6

diff --git a/include/svx/EnhancedCustomShape2d.hxx 
b/include/svx/EnhancedCustomShape2d.hxx
index df6603a46183..074ecfa0a124 100644
--- a/include/svx/EnhancedCustomShape2d.hxx
+++ b/include/svx/EnhancedCustomShape2d.hxx
@@ -123,14 +123,22 @@ class SVX_DLLPUBLIC EnhancedCustomShape2d : public 
SfxItemSet
         SAL_DLLPRIVATE bool     SetAdjustValueAsDouble( const double& rValue, 
const sal_Int32 nIndex );
         SAL_DLLPRIVATE sal_Int32 GetLuminanceChange( sal_uInt32 nIndex ) const;
         SAL_DLLPRIVATE Color    GetColorData( const Color& rFillColor, 
sal_uInt32 nIndex, double dBrightness ) const;
-        SAL_DLLPRIVATE void     AdaptObjColor(SdrPathObj& rObj, const 
SfxItemSet& rCustomShapeSet,
-                                                  sal_uInt32& nColorIndex, 
sal_uInt32 nColorCount);
+        SAL_DLLPRIVATE void AdaptObjColor(
+            SdrPathObj& rObj,
+            double dBrightness,
+            const SfxItemSet& rCustomShapeSet,
+            sal_uInt32& nColorIndex,
+            sal_uInt32 nColorCount);
         SAL_DLLPRIVATE Point    GetPoint( const 
css::drawing::EnhancedCustomShapeParameterPair&,
                                                     const bool bScale = true, 
const bool bReplaceGeoSize = false ) const;
 
-        SAL_DLLPRIVATE void     CreateSubPath( sal_Int32& rSrcPt, sal_Int32& 
rSegmentInd, std::vector< SdrPathObj* >& rObjectList,
-                                                   bool 
bLineGeometryNeededOnly, bool bSortFilledObjectsToBack,
-                                                   sal_Int32 nIndex );
+        SAL_DLLPRIVATE void CreateSubPath(
+            sal_Int32& rSrcPt,
+            sal_Int32& rSegmentInd,
+            std::vector< std::pair< SdrPathObj*, double> >& rObjectList,
+            bool bLineGeometryNeededOnly,
+            bool bSortFilledObjectsToBack,
+            sal_Int32 nIndex);
         SAL_DLLPRIVATE SdrObject* CreatePathObj( bool bLineGeometryNeededOnly 
);
         SAL_DLLPRIVATE void     ApplyShapeAttributes( const 
SdrCustomShapeGeometryItem& rItem );
 
diff --git a/include/svx/svdopath.hxx b/include/svx/svdopath.hxx
index 465ef0c6a702..fac63b375fb8 100644
--- a/include/svx/svdopath.hxx
+++ b/include/svx/svdopath.hxx
@@ -55,9 +55,6 @@ private:
     // for isolation of old Drag/Create code
     std::unique_ptr<ImpPathForDragAndCreate> mpDAC;
 
-    // brightness - used in EnhancedCustomShapes2d.cxx for DARKEN[LESS] and 
LIGHTEN[LESS] segments implementation
-    double mdBrightness;
-
     // helper functions for GET, SET, INS etc. PNT
     void ImpSetClosed(bool bClose);
     void ImpForceKind();
@@ -65,8 +62,6 @@ private:
     ImpPathForDragAndCreate& impGetDAC() const;
 
 public:
-    double GetBrightness() { return mdBrightness; }
-
     SdrPathObj(SdrObjKind eNewKind);
     SdrPathObj(SdrObjKind eNewKind, const basegfx::B2DPolyPolygon& rPathPoly, 
double dBrightness = 0.0);
     virtual ~SdrPathObj() override;
diff --git a/svx/source/customshapes/EnhancedCustomShape2d.cxx 
b/svx/source/customshapes/EnhancedCustomShape2d.cxx
index 1cc071e1ff24..b50836fd138f 100644
--- a/svx/source/customshapes/EnhancedCustomShape2d.cxx
+++ b/svx/source/customshapes/EnhancedCustomShape2d.cxx
@@ -1449,10 +1449,13 @@ static basegfx::B2DPolygon CreateArc( const 
tools::Rectangle& rRect, const Point
     return aRetval;
 }
 
-void EnhancedCustomShape2d::CreateSubPath( sal_Int32& rSrcPt, sal_Int32& 
rSegmentInd, std::vector< SdrPathObj* >& rObjectList,
-                                           const bool bLineGeometryNeededOnly,
-                                           const bool bSortFilledObjectsToBack,
-                                           sal_Int32 nIndex )
+void EnhancedCustomShape2d::CreateSubPath(
+    sal_Int32& rSrcPt,
+    sal_Int32& rSegmentInd,
+    std::vector< std::pair< SdrPathObj*, double> >& rObjectList,
+    const bool bLineGeometryNeededOnly,
+    const bool bSortFilledObjectsToBack,
+    sal_Int32 nIndex)
 {
     bool bNoFill = false;
     bool bNoStroke = false;
@@ -1997,12 +2000,12 @@ void EnhancedCustomShape2d::CreateSubPath( sal_Int32& 
rSrcPt, sal_Int32& rSegmen
             {
                 basegfx::B2DPolyPolygon aClosedPolyPolygon(aNewB2DPolyPolygon);
                 aClosedPolyPolygon.setClosed(true);
-                SdrPathObj* pFill = new SdrPathObj(OBJ_POLY, 
aClosedPolyPolygon, dBrightness);
+                SdrPathObj* pFill = new SdrPathObj(OBJ_POLY, 
aClosedPolyPolygon);
                 SfxItemSet aTempSet(*this);
                 aTempSet.Put(makeSdrShadowItem(false));
                 aTempSet.Put(XLineStyleItem(drawing::LineStyle_NONE));
                 pFill->SetMergedItemSet(aTempSet);
-                rObjectList.push_back(pFill);
+                rObjectList.push_back(std::pair< SdrPathObj*, double >(pFill, 
dBrightness));
             }
 
             if(!bNoStroke)
@@ -2013,12 +2016,12 @@ void EnhancedCustomShape2d::CreateSubPath( sal_Int32& 
rSrcPt, sal_Int32& rSegmen
                 // Thus, use a type that fits the polygon
                 SdrPathObj* pStroke = new SdrPathObj(
                     aNewB2DPolyPolygon.isClosed() ? OBJ_POLY : OBJ_PLIN,
-                    aNewB2DPolyPolygon, dBrightness);
+                    aNewB2DPolyPolygon);
                 SfxItemSet aTempSet(*this);
                 aTempSet.Put(makeSdrShadowItem(false));
                 aTempSet.Put(XFillStyleItem(drawing::FillStyle_NONE));
                 pStroke->SetMergedItemSet(aTempSet);
-                rObjectList.push_back(pStroke);
+                rObjectList.push_back(std::pair< SdrPathObj*, double 
>(pStroke, dBrightness));
             }
         }
         else
@@ -2032,13 +2035,13 @@ void EnhancedCustomShape2d::CreateSubPath( sal_Int32& 
rSrcPt, sal_Int32& rSegmen
                 // see comment above about OBJ_PLIN
                 pObj = new SdrPathObj(
                     aNewB2DPolyPolygon.isClosed() ? OBJ_POLY : OBJ_PLIN,
-                    aNewB2DPolyPolygon, dBrightness);
+                    aNewB2DPolyPolygon);
                 aTempSet.Put(XFillStyleItem(drawing::FillStyle_NONE));
             }
             else
             {
                 aNewB2DPolyPolygon.setClosed(true);
-                pObj = new SdrPathObj(OBJ_POLY, aNewB2DPolyPolygon, 
dBrightness);
+                pObj = new SdrPathObj(OBJ_POLY, aNewB2DPolyPolygon);
             }
 
             if(bNoStroke)
@@ -2049,13 +2052,16 @@ void EnhancedCustomShape2d::CreateSubPath( sal_Int32& 
rSrcPt, sal_Int32& rSegmen
             if(pObj)
             {
                 pObj->SetMergedItemSet(aTempSet);
-                rObjectList.push_back(pObj);
+                rObjectList.push_back(std::pair< SdrPathObj*, double >(pObj, 
dBrightness));
             }
         }
     }
 }
 
-void CorrectCalloutArrows( MSO_SPT eSpType, sal_uInt32 nLineObjectCount, 
std::vector< SdrPathObj* >& vObjectList )
+void CorrectCalloutArrows(
+    MSO_SPT eSpType,
+    sal_uInt32 nLineObjectCount,
+    std::vector< std::pair< SdrPathObj*, double> >& vObjectList )
 {
     bool bAccent = false;
     switch( eSpType )
@@ -2073,8 +2079,11 @@ void CorrectCalloutArrows( MSO_SPT eSpType, sal_uInt32 
nLineObjectCount, std::ve
         case mso_sptAccentBorderCallout90 :
         {
             sal_uInt32 nLine = 0;
-            for ( SdrPathObj* pObj: vObjectList )
+
+            for ( std::pair< SdrPathObj*, double >& rCandidate : vObjectList )
             {
+                SdrPathObj* pObj(rCandidate.first);
+
                 if(pObj->IsLine())
                 {
                     nLine++;
@@ -2097,8 +2106,11 @@ void CorrectCalloutArrows( MSO_SPT eSpType, sal_uInt32 
nLineObjectCount, std::ve
         case mso_sptBorderCallout2 :
         {
             sal_uInt32 nLine = 0;
-            for ( SdrPathObj* pObj: vObjectList )
+
+            for ( std::pair< SdrPathObj*, double >& rCandidate : vObjectList )
             {
+                SdrPathObj* pObj(rCandidate.first);
+
                 if(pObj->IsLine())
                 {
                     nLine++;
@@ -2122,8 +2134,11 @@ void CorrectCalloutArrows( MSO_SPT eSpType, sal_uInt32 
nLineObjectCount, std::ve
         case mso_sptBorderCallout3 :
         {
             sal_uInt32 nLine = 0;
-            for ( SdrPathObj* pObj: vObjectList )
+
+            for ( std::pair< SdrPathObj*, double >& rCandidate : vObjectList )
             {
+                SdrPathObj* pObj(rCandidate.first);
+
                 if(pObj->IsLine())
                 {
                     if ( nLine )
@@ -2142,8 +2157,12 @@ void CorrectCalloutArrows( MSO_SPT eSpType, sal_uInt32 
nLineObjectCount, std::ve
     }
 }
 
-void EnhancedCustomShape2d::AdaptObjColor(SdrPathObj& rObj, const SfxItemSet& 
rCustomShapeSet,
-                                          sal_uInt32& nColorIndex, sal_uInt32 
nColorCount)
+void EnhancedCustomShape2d::AdaptObjColor(
+    SdrPathObj& rObj,
+    double dBrightness,
+    const SfxItemSet& rCustomShapeSet,
+    sal_uInt32& nColorIndex,
+    sal_uInt32 nColorCount)
 {
     if ( !rObj.IsLine() )
     {
@@ -2154,11 +2173,13 @@ void EnhancedCustomShape2d::AdaptObjColor(SdrPathObj& 
rObj, const SfxItemSet& rC
             case drawing::FillStyle_SOLID:
             {
                 Color aFillColor;
-                if ( nColorCount || rObj.GetBrightness() != 0.0 )
+
+                if ( nColorCount || 0.0 != dBrightness )
                 {
                     aFillColor = GetColorData(
                         rCustomShapeSet.Get( XATTR_FILLCOLOR ).GetColorValue(),
-                        std::min(nColorIndex, nColorCount-1), 
rObj.GetBrightness() );
+                        std::min(nColorIndex, nColorCount-1),
+                        dBrightness );
                     rObj.SetMergedItem( XFillColorItem( "", aFillColor ) );
                 }
                 break;
@@ -2166,16 +2187,19 @@ void EnhancedCustomShape2d::AdaptObjColor(SdrPathObj& 
rObj, const SfxItemSet& rC
             case drawing::FillStyle_GRADIENT:
             {
                 XGradient 
aXGradient(rObj.GetMergedItem(XATTR_FILLGRADIENT).GetGradientValue());
-                if ( nColorCount || rObj.GetBrightness() != 0.0 )
+
+                if ( nColorCount || 0.0 != dBrightness )
                 {
                     aXGradient.SetStartColor(
                         GetColorData(
                             aXGradient.GetStartColor(),
-                            std::min(nColorIndex, nColorCount-1), 
rObj.GetBrightness() ));
+                            std::min(nColorIndex, nColorCount-1),
+                            dBrightness ));
                     aXGradient.SetEndColor(
                         GetColorData(
                             aXGradient.GetEndColor(),
-                            std::min(nColorIndex, nColorCount-1), 
rObj.GetBrightness() ));
+                            std::min(nColorIndex, nColorCount-1),
+                            dBrightness ));
                 }
 
                 rObj.SetMergedItem( XFillGradientItem( "", aXGradient ) );
@@ -2184,12 +2208,14 @@ void EnhancedCustomShape2d::AdaptObjColor(SdrPathObj& 
rObj, const SfxItemSet& rC
             case drawing::FillStyle_HATCH:
             {
                 XHatch 
aXHatch(rObj.GetMergedItem(XATTR_FILLHATCH).GetHatchValue());
-                if ( nColorCount || rObj.GetBrightness() != 0.0 )
+
+                if ( nColorCount || 0.0 != dBrightness )
                 {
                     aXHatch.SetColor(
                         GetColorData(
                             aXHatch.GetColor(),
-                            std::min(nColorIndex, nColorCount-1), 
rObj.GetBrightness() ));
+                            std::min(nColorIndex, nColorCount-1),
+                            dBrightness ));
                 }
 
                 rObj.SetMergedItem( XFillHatchItem( "", aXHatch ) );
@@ -2197,7 +2223,7 @@ void EnhancedCustomShape2d::AdaptObjColor(SdrPathObj& 
rObj, const SfxItemSet& rC
             }
             case drawing::FillStyle_BITMAP:
             {
-                if ( nColorCount || rObj.GetBrightness() != 0.0 )
+                if ( nColorCount || 0.0 != dBrightness )
                 {
                     Bitmap 
aBitmap(rObj.GetMergedItem(XATTR_FILLBITMAP).GetGraphicObject().GetGraphic().GetBitmapEx().GetBitmap());
 
@@ -2219,46 +2245,58 @@ void EnhancedCustomShape2d::AdaptObjColor(SdrPathObj& 
rObj, const SfxItemSet& rC
 
 SdrObject* EnhancedCustomShape2d::CreatePathObj( bool bLineGeometryNeededOnly )
 {
-    sal_Int32 nCoordSize = seqCoordinates.getLength();
+    const sal_Int32 nCoordSize(seqCoordinates.getLength());
+
     if ( !nCoordSize )
+    {
         return nullptr;
+    }
 
-    std::vector< SdrPathObj* > vObjectList;
-    bool bSortFilledObjectsToBack = SortFilledObjectsToBackByDefault( eSpType 
);
-
-    sal_Int32 nSubPathIndex = 0;
+    std::vector< std::pair< SdrPathObj*, double > > vObjectList;
+    const bool 
bSortFilledObjectsToBack(SortFilledObjectsToBackByDefault(eSpType));
+    sal_Int32 nSubPathIndex(0);
+    sal_Int32 nSrcPt(0);
+    sal_Int32 nSegmentInd(0);
+    SdrObject* pRet(nullptr);
 
-    sal_Int32 nSrcPt = 0;
-    sal_Int32 nSegmentInd = 0;
     while( nSegmentInd <= seqSegments.getLength() )
     {
-        CreateSubPath( nSrcPt, nSegmentInd, vObjectList, 
bLineGeometryNeededOnly, bSortFilledObjectsToBack, nSubPathIndex );
-        nSubPathIndex ++;
+        CreateSubPath(
+            nSrcPt,
+            nSegmentInd,
+            vObjectList,
+            bLineGeometryNeededOnly,
+            bSortFilledObjectsToBack,
+            nSubPathIndex);
+        nSubPathIndex++;
     }
 
-    SdrObject* pRet = nullptr;
-
     if ( !vObjectList.empty() )
     {
-        const SfxItemSet& rCustomShapeSet = 
pCustomShapeObj->GetMergedItemSet();
-        sal_uInt32      nColorCount = nColorData >> 28;
-        sal_uInt32      nColorIndex = 0;
+        const SfxItemSet& rCustomShapeSet(pCustomShapeObj->GetMergedItemSet());
+        const sal_uInt32 nColorCount(nColorData >> 28);
+        sal_uInt32 nColorIndex(0);
 
         // #i37011# remove invisible objects
         if(!vObjectList.empty())
         {
-            std::vector< SdrPathObj* > vTempList;
+            std::vector< std::pair< SdrPathObj*, double> > vTempList;
 
-            for(SdrPathObj* pObj : vObjectList)
+            for ( std::pair< SdrPathObj*, double >& rCandidate : vObjectList )
             {
-                const drawing::LineStyle eLineStyle = 
pObj->GetMergedItem(XATTR_LINESTYLE).GetValue();
-                const drawing::FillStyle eFillStyle = 
pObj->GetMergedItem(XATTR_FILLSTYLE).GetValue();
+                SdrPathObj* pObj(rCandidate.first);
+                const drawing::LineStyle 
eLineStyle(pObj->GetMergedItem(XATTR_LINESTYLE).GetValue());
+                const drawing::FillStyle 
eFillStyle(pObj->GetMergedItem(XATTR_FILLSTYLE).GetValue());
 
                 // #i40600# if bLineGeometryNeededOnly is set, linestyle does 
not matter
-                if( !bLineGeometryNeededOnly && ( drawing::LineStyle_NONE == 
eLineStyle ) && ( drawing::FillStyle_NONE == eFillStyle ) )
+                if(!bLineGeometryNeededOnly && (drawing::LineStyle_NONE == 
eLineStyle) && (drawing::FillStyle_NONE == eFillStyle))
+                {
                     delete pObj;
+                }
                 else
-                    vTempList.push_back(pObj);
+                {
+                    vTempList.push_back(rCandidate);
+                }
             }
 
             vObjectList = vTempList;
@@ -2267,16 +2305,23 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( bool 
bLineGeometryNeededOnly )
         if(1 == vObjectList.size())
         {
             // a single object, correct some values
-            
AdaptObjColor(*vObjectList[0L],rCustomShapeSet,nColorIndex,nColorCount);
+            AdaptObjColor(
+                *vObjectList.begin()->first,
+                vObjectList.begin()->second,
+                rCustomShapeSet,
+                nColorIndex,
+                nColorCount);
         }
         else
         {
-            sal_Int32 nLineObjectCount = 0;
-            sal_Int32 nAreaObjectCount = 0;
+            sal_Int32 nLineObjectCount(0);
+            sal_Int32 nAreaObjectCount(0);
 
             // correct some values and collect content data
-            for (SdrPathObj* pObj : vObjectList)
+            for ( std::pair< SdrPathObj*, double >& rCandidate : vObjectList )
             {
+                SdrPathObj* pObj(rCandidate.first);
+
                 if(pObj->IsLine())
                 {
                     nLineObjectCount++;
@@ -2284,34 +2329,48 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( bool 
bLineGeometryNeededOnly )
                 else
                 {
                     nAreaObjectCount++;
-                    
AdaptObjColor(*pObj,rCustomShapeSet,nColorIndex,nColorCount);
+                    AdaptObjColor(
+                        *pObj,
+                        rCandidate.second,
+                        rCustomShapeSet,
+                        nColorIndex,
+                        nColorCount);
                 }
             }
 
             // #i88870# correct line arrows for callouts
             if ( nLineObjectCount )
-                CorrectCalloutArrows( eSpType, nLineObjectCount, vObjectList );
+            {
+                CorrectCalloutArrows(
+                    eSpType,
+                    nLineObjectCount,
+                    vObjectList);
+            }
 
             // sort objects so that filled ones are in front. Necessary
             // for some strange objects
-            if ( bSortFilledObjectsToBack )
+            if(bSortFilledObjectsToBack)
             {
-                std::vector< SdrPathObj* > vTempList;
+                std::vector< std::pair< SdrPathObj*, double> > vTempList;
                 vTempList.reserve(vObjectList.size());
 
-                for (SdrPathObj* pObj : vObjectList)
+                for ( std::pair< SdrPathObj*, double >& rCandidate : 
vObjectList )
                 {
+                    SdrPathObj* pObj(rCandidate.first);
+
                     if ( !pObj->IsLine() )
                     {
-                        vTempList.push_back(pObj);
+                        vTempList.push_back(rCandidate);
                     }
                 }
 
-                for (SdrPathObj* pObj : vObjectList)
+                for ( std::pair< SdrPathObj*, double >& rCandidate : 
vObjectList )
                 {
+                    SdrPathObj* pObj(rCandidate.first);
+
                     if ( pObj->IsLine() )
                     {
-                        vTempList.push_back(pObj);
+                        vTempList.push_back(rCandidate);
                     }
                 }
 
@@ -2328,14 +2387,16 @@ SdrObject* EnhancedCustomShape2d::CreatePathObj( bool 
bLineGeometryNeededOnly )
         {
             pRet = new SdrObjGroup;
 
-            for (SdrPathObj* pObj : vObjectList)
+            for ( std::pair< SdrPathObj*, double >& rCandidate : vObjectList )
             {
+                SdrPathObj* pObj(rCandidate.first);
+
                 pRet->GetSubList()->NbcInsertObject(pObj);
             }
         }
         else if(1 == vObjectList.size())
         {
-            pRet = vObjectList[0L];
+            pRet = vObjectList.begin()->first;
         }
 
         if(pRet)
diff --git a/svx/source/svdraw/svdopath.cxx b/svx/source/svdraw/svdopath.cxx
index b574da18f22c..2935164da771 100644
--- a/svx/source/svdraw/svdopath.cxx
+++ b/svx/source/svdraw/svdopath.cxx
@@ -1629,16 +1629,14 @@ sdr::contact::ViewContact* 
SdrPathObj::CreateObjectSpecificViewContact()
 
 
 SdrPathObj::SdrPathObj(SdrObjKind eNewKind)
-:   meKind(eNewKind),
-    mdBrightness(0.0)
+:   meKind(eNewKind)
 {
     bClosedObj = IsClosed();
 }
 
 SdrPathObj::SdrPathObj(SdrObjKind eNewKind, const basegfx::B2DPolyPolygon& 
rPathPoly, double dBrightness)
 :   maPathPolygon(rPathPoly),
-    meKind(eNewKind),
-    mdBrightness(dBrightness)
+    meKind(eNewKind)
 {
     bClosedObj = IsClosed();
     ImpForceKind();
commit e6d2332eae92b8f288d3d3f8aa2090abfa777098
Author: jan Iversen <j...@libreoffice.org>
Date:   Sun Mar 11 12:27:43 2018 +0100

    Allow use of "git worktree" in Makefile.in
    
    When using git worktree $(SRCDIR)/.git is a file and not a directory, 
therefore
    get-submodules: fails in "./g -z".
    
    Eliminating call to "./g -z" in worktree directories, but keeping it in the
    cloned directory.
    
    Change-Id: I88d8e3e06cac2a2710da21ae233364d8119fe5ef

diff --git a/Makefile.in b/Makefile.in
index 470c6956cc0e..0b2340a0ef58 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -241,7 +241,9 @@ get-submodules:
 ifneq ($(foreach i,$(GIT_NEEDED_SUBMODULES),$(i)/.git),$(wildcard $(foreach 
i,$(GIT_NEEDED_SUBMODULES),$(i)/.git)))
        cd $(SRCDIR) && ./g -f clone
 endif
+ifeq ($(shell test -d $(SRCDIR)/.git; echo $$?),0)
        @cd $(SRCDIR) && ./g -z # make sure the git hooks are in place even if 
no submodules are needed
+endif
 
 else # these sources are from a tarball, so get the other source tarballs
 gb_LO_VER := $(shell . $(SRCDIR)/sources.ver && echo $$lo_sources_ver)
commit 82d9af7f14c808d48fa5db9420c85a8d26c79905
Author: Mike Kaganski <mike.kagan...@collabora.com>
Date:   Sun Mar 11 11:58:13 2018 +0300

    tdf#108482: ignore repeated headlines' previous instances height
    
    Change-Id: Idae0b99c4171556612fb41bb02f1c48bbfeec4b2
    Reviewed-on: https://gerrit.libreoffice.org/51073
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/sw/qa/extras/odfimport/data/tdf108482.odt 
b/sw/qa/extras/odfimport/data/tdf108482.odt
new file mode 100644
index 000000000000..c3ce2fc4272a
Binary files /dev/null and b/sw/qa/extras/odfimport/data/tdf108482.odt differ
diff --git a/sw/qa/extras/odfimport/odfimport.cxx 
b/sw/qa/extras/odfimport/odfimport.cxx
index 5ab5c5910ba3..1d4737318517 100644
--- a/sw/qa/extras/odfimport/odfimport.cxx
+++ b/sw/qa/extras/odfimport/odfimport.cxx
@@ -887,5 +887,20 @@ DECLARE_ODFIMPORT_TEST(testTdf115079, "tdf115079.odt")
     // This document caused segfault when layouting
 }
 
+DECLARE_ODFIMPORT_TEST(testTdf108482, "tdf108482.odt")
+{
+    CPPUNIT_ASSERT_EQUAL_MESSAGE("The table on second page must have two rows",
+        OUString("2"), parseDump("count(/root/page[2]/body/tab/row)")
+    );
+    CPPUNIT_ASSERT_EQUAL_MESSAGE("The second page table's first row must be 
the repeated headline",
+        OUString("Header"), parseDump("/root/page[2]/body/tab/row[1]/cell/txt")
+    );
+    // The first (repeated headline) row with vertical text orientation must 
have non-zero height
+    // (in my tests, it was 1135)
+    CPPUNIT_ASSERT_GREATER(
+        sal_Int32(1000), 
parseDump("/root/page[2]/body/tab/row[1]/infos/bounds", "height").toInt32()
+    );
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx
index fec639ea943e..67ee9cc37a18 100644
--- a/sw/source/core/layout/tabfrm.cxx
+++ b/sw/source/core/layout/tabfrm.cxx
@@ -4101,6 +4101,9 @@ static sal_uInt16 lcl_GetBottomLineDist( const 
SwRowFrame& rRow )
 // on each following page
 static SwTwips lcl_calcHeightOfRowBeforeThisFrame(const SwRowFrame& rRow)
 {
+    // We don't need to account for previous instances of repeated headlines
+    if (rRow.IsRepeatedHeadline())
+        return 0;
     SwRectFnSet aRectFnSet(&rRow);
     const SwTableLine* pLine = rRow.GetTabLine();
     const SwTabFrame* pTab = rRow.FindTabFrame();
commit f9831de353742485b8241fb2bd8ca6b23e3c1c75
Author: Tamas Bunth <tamas.bu...@collabora.co.uk>
Date:   Sat Mar 10 23:40:43 2018 +0100

    dbahsql: import TIME columns
    
    Change-Id: I8863127a4de1bfc06b13d008e037db2a4e60f1e7
    Reviewed-on: https://gerrit.libreoffice.org/51059
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Tamás Bunth <btom...@gmail.com>

diff --git a/dbaccess/source/filter/hsqldb/hsqlimport.cxx 
b/dbaccess/source/filter/hsqldb/hsqlimport.cxx
index cc806b313e9a..7f6426231b06 100644
--- a/dbaccess/source/filter/hsqldb/hsqlimport.cxx
+++ b/dbaccess/source/filter/hsqldb/hsqlimport.cxx
@@ -139,8 +139,8 @@ void lcl_setParams(const RowVector& row, 
Reference<XParameters>& xParam,
                 {
                     xParam->setDouble(i + 1, nVal);
                 }
-                break;
             }
+            break;
             case DataType::NUMERIC:
             case DataType::DECIMAL:
             {
@@ -157,8 +157,14 @@ void lcl_setParams(const RowVector& row, 
Reference<XParameters>& xParam,
                 // TODO
                 break;
             case DataType::TIME:
-                // TODO
+            {
+                css::util::Time time;
+                if (row.at(i) >>= time)
+                {
+                    xParam->setTime(i + 1, time);
+                }
                 break;
+            }
             case DataType::TIMESTAMP:
                 // TODO
                 break;
diff --git a/dbaccess/source/filter/hsqldb/rowinputbinary.cxx 
b/dbaccess/source/filter/hsqldb/rowinputbinary.cxx
index b657abd36d52..0bcd0109e304 100644
--- a/dbaccess/source/filter/hsqldb/rowinputbinary.cxx
+++ b/dbaccess/source/filter/hsqldb/rowinputbinary.cxx
@@ -21,6 +21,7 @@
 #include <com/sun/star/sdbc/DataType.hpp>
 #include <com/sun/star/io/WrongFormatException.hpp>
 #include <com/sun/star/io/XConnectable.hpp>
+#include <com/sun/star/util/Time.hpp>
 
 #include <unotools/ucbstreamhelper.hxx>
 #include <tools/stream.hxx>
@@ -300,7 +301,13 @@ std::vector<Any> HsqlRowInputStream::readOneRow(const 
ColumnTypeVector& nColType
             case DataType::DATE:
                 break;
             case DataType::TIME:
-                break;
+            {
+                sal_Int64 value = 0;
+                m_pStream->ReadInt64(value);
+                css::util::Time time((value % 1000) * 1000000, value / 1000, 
0, 0, true);
+                aData.push_back(makeAny(time));
+            }
+            break;
             case DataType::TIMESTAMP:
                 break;
             case DataType::BOOLEAN:
commit 0e73fd8218cfc009edfda02e7240b9d0907916d9
Author: andreas kainz <kain...@gmail.com>
Date:   Sun Mar 11 09:38:53 2018 +0100

    Colibre icons: add res sx and other res icons
    
    Change-Id: I6dd8c044fe7e68b9edc12be419d5cf41c81798ea
    Reviewed-on: https://gerrit.libreoffice.org/51072
    Reviewed-by: andreas_kainz <kain...@gmail.com>
    Tested-by: andreas_kainz <kain...@gmail.com>

diff --git a/icon-themes/colibre/cmd/lc_save.png 
b/icon-themes/colibre/cmd/lc_save.png
index d0306ad6011f..fd439188289b 100644
Binary files a/icon-themes/colibre/cmd/lc_save.png and 
b/icon-themes/colibre/cmd/lc_save.png differ
diff --git a/icon-themes/colibre/cmd/sc_save.png 
b/icon-themes/colibre/cmd/sc_save.png
index 013ad2989893..f35a30b21001 100644
Binary files a/icon-themes/colibre/cmd/sc_save.png and 
b/icon-themes/colibre/cmd/sc_save.png differ
diff --git a/icon-themes/colibre/res/notebookbar.png 
b/icon-themes/colibre/res/notebookbar.png
new file mode 100644
index 000000000000..4ba3e06de0b6
Binary files /dev/null and b/icon-themes/colibre/res/notebookbar.png differ
diff --git a/icon-themes/colibre/res/recentdoc_remove.png 
b/icon-themes/colibre/res/recentdoc_remove.png
new file mode 100644
index 000000000000..22d26174b4e7
Binary files /dev/null and b/icon-themes/colibre/res/recentdoc_remove.png differ
diff --git a/icon-themes/colibre/res/recentdoc_remove_highlighted.png 
b/icon-themes/colibre/res/recentdoc_remove_highlighted.png
new file mode 100644
index 000000000000..a12dd5d372ed
Binary files /dev/null and 
b/icon-themes/colibre/res/recentdoc_remove_highlighted.png differ
diff --git a/icon-themes/colibre/res/savemodified_large.png 
b/icon-themes/colibre/res/savemodified_large.png
index fd439188289b..b6cc6a9675fc 100644
Binary files a/icon-themes/colibre/res/savemodified_large.png and 
b/icon-themes/colibre/res/savemodified_large.png differ
diff --git a/icon-themes/colibre/res/savemodified_small.png 
b/icon-themes/colibre/res/savemodified_small.png
new file mode 100644
index 000000000000..ed3ff8a69469
Binary files /dev/null and b/icon-themes/colibre/res/savemodified_small.png 
differ
diff --git a/icon-themes/colibre/res/sc10223.png 
b/icon-themes/colibre/res/sc10223.png
new file mode 100644
index 000000000000..97c6bf13f7b2
Binary files /dev/null and b/icon-themes/colibre/res/sc10223.png differ
diff --git a/icon-themes/colibre/res/sc10224.png 
b/icon-themes/colibre/res/sc10224.png
new file mode 100644
index 000000000000..4c59fadf0b09
Binary files /dev/null and b/icon-themes/colibre/res/sc10224.png differ
diff --git a/icon-themes/colibre/res/sx03139.png 
b/icon-themes/colibre/res/sx03139.png
new file mode 100644
index 000000000000..481ee89daba2
Binary files /dev/null and b/icon-themes/colibre/res/sx03139.png differ
diff --git a/icon-themes/colibre/res/sx03248.png 
b/icon-themes/colibre/res/sx03248.png
new file mode 100644
index 000000000000..6370ee3622ab
Binary files /dev/null and b/icon-themes/colibre/res/sx03248.png differ
diff --git a/icon-themes/colibre/res/sx03252.png 
b/icon-themes/colibre/res/sx03252.png
new file mode 100644
index 000000000000..2b00e782adc6
Binary files /dev/null and b/icon-themes/colibre/res/sx03252.png differ
diff --git a/icon-themes/colibre/res/sx03253.png 
b/icon-themes/colibre/res/sx03253.png
new file mode 100644
index 000000000000..8b0c3a63ac71
Binary files /dev/null and b/icon-themes/colibre/res/sx03253.png differ
diff --git a/icon-themes/colibre/res/sx03254.png 
b/icon-themes/colibre/res/sx03254.png
new file mode 100644
index 000000000000..6af5f1b6c14a
Binary files /dev/null and b/icon-themes/colibre/res/sx03254.png differ
diff --git a/icon-themes/colibre/res/sx03255.png 
b/icon-themes/colibre/res/sx03255.png
new file mode 100644
index 000000000000..31549e06c8f7
Binary files /dev/null and b/icon-themes/colibre/res/sx03255.png differ
diff --git a/icon-themes/colibre_svg/cmd/lc_save.svg 
b/icon-themes/colibre_svg/cmd/lc_save.svg
index 0a799be0e811..805928d31f88 100644
--- a/icon-themes/colibre_svg/cmd/lc_save.svg
+++ b/icon-themes/colibre_svg/cmd/lc_save.svg
@@ -1 +1 @@
-<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg";><rect 
fill="#808080" height="20" rx="0" ry="1" width="20" x="2" y="2"/><g 
fill="#fff"><rect height="8" ry="1" width="16" x="4" y="3"/><path d="m8 
15c-.554 0-1 .446-1 1v4c0 .554.446 1 1 1h2v-5h2v5h5c.554 0 1-.446 
1-1v-4c0-.554-.446-1-1-1z"/></g></svg>
\ No newline at end of file
+<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg";><rect 
fill="#8959ab" height="20" rx="0" ry="1" width="20" x="2" y="2"/><g 
fill="#fff"><rect height="8" ry="1" width="16" x="4" y="3"/><path d="m8 
15c-.554 0-1 .446-1 1v4c0 .554.446 1 1 1h2v-5h2v5h5c .554 0 1-.446 
1-1v-4c0-.554-.446-1-1-1z"/></g></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/cmd/sc_save.svg 
b/icon-themes/colibre_svg/cmd/sc_save.svg
index 06667f294a31..3046984a5fed 100644
--- a/icon-themes/colibre_svg/cmd/sc_save.svg
+++ b/icon-themes/colibre_svg/cmd/sc_save.svg
@@ -1,4 +1,5 @@
 <svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg";>
 
+
      /&amp;gt;
- <rect fill="#808080" height="16" rx="0" ry="1" width="16"/><g 
fill="#fff"><rect height="6" ry="1" width="12" x="2" y="1"/><path d="m4 
10c-.554 0-1 .446-1 1v3c0 .554.446 1 1 1h1v-4h2v4h4c.554 0 1-.446 
1-1v-3c0-.554-.446-1-1-1z"/></g></svg>
\ No newline at end of file
+ <rect fill="#8959ab" height="16" rx="0" ry="1" width="16"/><g 
fill="#fff"><rect height="6" ry="1" width="12" x="2" y="1"/><path d="m4 
10c-.554 0-1 .446-1 1v3c0 .554.446 1 1 1h1v-4h2v4h4c .554 0 1-.446 
1-1v-3c0-.554-.446-1-1-1z"/></g></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/res/notebookbar.svg 
b/icon-themes/colibre_svg/res/notebookbar.svg
new file mode 100644
index 000000000000..cba75b4b6cea
--- /dev/null
+++ b/icon-themes/colibre_svg/res/notebookbar.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg";><path 
d="m6.9375.5c-.2484169 
0-.4375.18908218-.4375.4375v1.25c-.5539029.1422005-1.051164.3718783-1.53125.65625l-.90625-.90625c-.1756569-.1756579-.449342-.1756579-.625
 0l-1.5 1.5c-.175657.1756579-.175657.4493421 0 
.625l.90625.90625c-.2843711.4800856-.514049.9773468-.65625 
1.53125h-1.25c-.24841699 
0-.4375.1890821-.4375.4375v2.125c.00000001.2484178.189083.4375.4375.4375h1.25c.1422009.553903.371879
 1.051164.65625 1.53125l-.90625.90625c-.175657.175658-.175657.449342 0 .625l1.5 
1.5c.1756579.175658.449342.175658.625 0l 
.90625-.90625c.4800861.284372.977347.51405 
1.53125.65625v1.25c.0000001.248418.189083.4375.4375.4375h2.125c.2484176 0 
.4375-.189082.4375-.4375v-1.25c.553903-.1422 1.051164-.371878 
1.53125-.65625l.90625.90625c.175658.175658.449342.175658.625 
0l1.5-1.5c.175658-.175658.175658-.449342 
0-.625l-.90625-.90625c.284372-.480086.51405-.977347.65625-1.53125h1.25c.248418 
0 .4375-.1890826.4375-.4375v-2.125c0-.2484178-.189083-.4375
 
-.4375-.4375h-1.25c-.1422-.5539032-.371878-1.0511644-.65625-1.53125l.90625-.90625c.175658-.1756579.175658-.449342
 0-.625l-1.5-1.5c-.175658-.1756579-.449342-.1756579-.625 
0l-.90625.90625c-.480086-.2843717-.977347-.5140495-1.53125-.65625v-1.25c-.0000004-.24841782-.189082-.4375-.4375-.4375zm1.0625
 5.5c1.104 0 2 .896 2 2s-.896 2-2 2-2-.896-2-2 .896-2 2-2z" display="block" 
fill="#fff" stroke="#808080" stroke-linejoin="round"/></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/res/recentdoc_remove.svg 
b/icon-themes/colibre_svg/res/recentdoc_remove.svg
new file mode 100644
index 000000000000..9d97b2bfeec5
--- /dev/null
+++ b/icon-themes/colibre_svg/res/recentdoc_remove.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg";><g 
stroke="#808080"><path d="m12 2.5573773a9.442613 9.4426129 0 0 0 -9.4426226 
9.4426227 9.442613 9.4426129 0 0 0 9.4426226 9.442623 9.442613 9.4426129 0 0 0 
9.442623-9.442623 9.442613 9.4426129 0 0 0 -9.442623-9.4426227z" fill="#fff" 
stroke-width="1.114754"/><path d="m16.444445 16.444445-8.8888892-8.8888892" 
fill="none" stroke-linecap="round" stroke-width="1.111111"/><path d="m7.5555558 
16.444445 8.8888892-8.8888891" fill="none" stroke-linecap="round" 
stroke-width="1.111111"/></g></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/res/recentdoc_remove_highlighted.svg 
b/icon-themes/colibre_svg/res/recentdoc_remove_highlighted.svg
new file mode 100644
index 000000000000..12e973072fcf
--- /dev/null
+++ b/icon-themes/colibre_svg/res/recentdoc_remove_highlighted.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg";><path d="m12 
2.5573774a9.442613 9.4426129 0 0 0 -9.4426226 9.4426226 9.442613 9.4426129 0 0 
0 9.4426226 9.442623 9.442613 9.4426129 0 0 0 9.442623-9.442623 9.442613 
9.4426129 0 0 0 -9.442623-9.4426226z" fill="#8c8c8c" stroke="#808080" 
stroke-width="1.114754"/><path d="m16.444445 16.444445-8.8888892-8.8888891" 
fill="none" stroke="#fff" stroke-linecap="round" stroke-width="1.111111"/><path 
d="m7.5555558 16.444445 8.8888892-8.888889" fill="none" stroke="#fff" 
stroke-linecap="round" stroke-width="1.111111"/><path d="m12 
3.1111115a8.8888888 8.8888888 0 0 0 -8.8888886 8.8888885 8.8888888 8.8888888 0 
0 0 8.8888886 8.888889 8.8888888 8.8888888 0 0 0 8.888889-8.888889 8.8888888 
8.8888888 0 0 0 -8.888889-8.8888885zm0 1.1111111a7.7777777 7.7777777 0 0 1 
7.777778 7.7777774 7.7777777 7.7777777 0 0 1 -7.777778 7.777778 7.7777777 
7.7777777 0 0 1 -7.7777775-7.777778 7.7777777 7.7777777 0 0 1 
7.7777775-7.7777774z" fill="#fff"/></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/res/savemodified_large.svg 
b/icon-themes/colibre_svg/res/savemodified_large.svg
index baad3d64868a..f44470df6bd8 100644
--- a/icon-themes/colibre_svg/res/savemodified_large.svg
+++ b/icon-themes/colibre_svg/res/savemodified_large.svg
@@ -1 +1 @@
-<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg";><rect 
fill="#8959ab" height="20" rx="0" ry="1" width="20" x="2" y="2"/><g 
fill="#fff"><rect height="8" ry="1" width="16" x="4" y="3"/><path d="m8 
15c-.554 0-1 .446-1 1v4c0 .554.446 1 1 1h2v-5h2v5h5c.554 0 1-.446 
1-1v-4c0-.554-.446-1-1-1z"/></g></svg>
\ No newline at end of file
+<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg";><path d="m3 
2c-.554 0-1 .446-1 1v18c0 .554.446 1 1 1h15.173828a3 3 0 0 1 -.173828-1 3 3 0 0 
1 3-3 3 3 0 0 1 1 .175781v-15.175781c0-.554-.446-1-1-1z" fill="#8959ab"/><g 
fill="#fff"><rect height="8" ry="1" width="16" x="4" y="3"/><path d="m8 
15c-.554 0-1 .446-1 1v4c0 .554.446 1 1 1h2v-5h2v5h5c .554 0 1-.446 
1-1v-4c0-.554-.446-1-1-1z"/></g><circle cx="21" cy="21" fill="#eac282" 
r="2"/></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/res/savemodified_small.svg 
b/icon-themes/colibre_svg/res/savemodified_small.svg
new file mode 100644
index 000000000000..c23751ef9a0a
--- /dev/null
+++ b/icon-themes/colibre_svg/res/savemodified_small.svg
@@ -0,0 +1,5 @@
+<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg";>
+
+
+     /&amp;gt;
+ <path d="m1 0c-.554 0-1 .446-1 1v14c0 .554.446 1 1 1h10.769531a3 3 0 0 1 
-.769531-2 3 3 0 0 1 3-3 3 3 0 0 1 2 .767578v-10.767578c0-.554-.446-1-1-1z" 
fill="#8959ab"/><rect fill="#fff" height="6" ry="1" width="12" x="2" 
y="1"/><path d="m4 10c-.554 0-1 .446-1 1v3c0 .554.446 1 1 1h1v-4h2v4h4c .058197 
0 .108641-.023752.164062-.033203a3 3 0 0 1 -.164062-.966797 3 3 0 0 1 
1-2.230469v-.769531c0-.554-.446-1-1-1z" fill="#fff"/><circle cx="14" cy="14" 
fill="#eac282" r="2"/></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/res/sc10223.svg 
b/icon-themes/colibre_svg/res/sc10223.svg
new file mode 100644
index 000000000000..c8b74e0f0271
--- /dev/null
+++ b/icon-themes/colibre_svg/res/sc10223.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 16 10" xmlns="http://www.w3.org/2000/svg";><path d="m6 
3a1.0001 1.0001 0 0 1 -1 1h-1v1a1.0001 1.0001 0 0 1 -1 1v3h10v-6z" 
fill="#fff"/><path d="m2 0v2h-2v1h2v2h1v-2h2v-1h-2v-2z" fill="#4d82b8"/><path 
d="m6 2v1h7v6h-10v-3h-1v4h1 10 1v-1-6-1z" fill="#808080"/></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/res/sc10224.svg 
b/icon-themes/colibre_svg/res/sc10224.svg
new file mode 100644
index 000000000000..66de591a2d60
--- /dev/null
+++ b/icon-themes/colibre_svg/res/sc10224.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 16 10" xmlns="http://www.w3.org/2000/svg";><path d="m4 0v1 1 
1h1v-1h8v1h1v-3h-1v1h-8v-1zm-4 4v1h1v4h-1v1h3v-1h-1v-4h1v-1z" 
fill="#4d82b8"/><path d="m4 4v1 4 1h9 1v-5-1zm1 1h8v4h-8z" 
fill="#808080"/><path d="m5 5h8v4h-8z" fill="#fff"/></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/res/sx03139.svg 
b/icon-themes/colibre_svg/res/sx03139.svg
new file mode 100644
index 000000000000..f6fdc88ab70c
--- /dev/null
+++ b/icon-themes/colibre_svg/res/sx03139.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg";>/&amp;gt;<circle 
cx="7.5" cy="8.5" fill="#fff" r="6.5"/><path d="m7.5 1a7.5 7.5 0 0 0 -7.5 7.5 
7.5 7.5 0 0 0 7.5 7.5 7.5 7.5 0 0 0 7.5-7.5 7.5 7.5 0 0 0 -7.5-7.5zm.00391 
1a6.5 6.5 0 0 1  .064453.00391.50005.50005 0 0 0  
.109375.3027344c.6418609.8229503 1.155164 1.6604336 1.5390589 
2.5175744-1.119111.1933347-2.2369139.1905685-3.3574219-.0058594.38362-.8549332.8948701-1.6907884
 1.5351562-2.5117188a.50005.50005 0 0 0  
.109375-.3066406zm-1.2089881.1152344c-.5843051.8029368-1.0703742 
1.6335521-1.4355469 
2.4921875-.6380173-.175292-1.2786377-.4302808-1.921875-.7246094a6.5 6.5 0 0 1 
3.3574219-1.7675781zm2.4902343.015625a6.5 6.5 0 0 1 3.2890628 
1.7597656c-.622233.2970411-1.243129.5483381-1.861328.7207031-.3631219-.8547662-.8473482-1.6808971-1.4277348-2.4804687zm-6.5214843
 2.5390625c.7466984.356724 1.4969224.6529085 
2.25.8613281-.2528039.7990086-.4037353 1.6213918-.4335938 
2.46875h-3.0546875a6.5 6.5 0 0 1 1.2382813-3.3300781zm10.4785
 161.00586a6.5 6.5 0 0 1 1.236328 
3.3242181h-2.988282c-.029784-.8452733-.17997-1.6657312-.43164-2.4628906.730412-.2053967
 1.458102-.4993505 2.183594-.8613282zm-7.2460942 1.0683587c1.3593621.2565588 
2.7228872.2628052 4.0839843.0078125.2387771.7323459.3778619 1.4799447.4082031 
2.2480469h-4.9042968c.0304544-.7709663.1716948-1.5209022.4121094-2.2558594zm-4.4746094
 3.2558594h3.0839844c.058298.7851002.2173833 1.58728.484375 
2.40625-.7861884.212341-1.5684685.522676-2.3476563.896484a6.5 6.5 0 0 1 
-1.2207031-3.302734zm4.0878906 0h4.8535156c-.0583742.7091257-.2047291 
1.438748-.4589844 
2.193359-.6676061-.120087-1.3353808-.199907-2.0039062-.195312-.6440198.004425-1.2871003.087991-1.9296875.205078-.2562167-.758023-.4023155-1.4909887-.4609375-2.203125zm5.855469
 0h3.009765a6.5 6.5 0 0 1 -1.21289 
3.294922c-.757185-.379302-1.516921-.687884-2.279297-.896484.265471-.816276.424308-1.6158182.482422-2.398438zm-3.464844
 2.976562c.5471575-.0039 1.0949911.05604 
1.6425781.146485-.365209.832811-.8525412 1.6938
 77-1.4804687 2.589844a.50005.50005 0 0 0 -.0976563.283203 6.5 6.5 0 0 1 
-.0644531.003906.50065925.50065925 0 0 0 
-.0898438-.287109c-.6269472-.894568-1.1134883-1.754334-1.4785156-2.585938.5232715-.087786
 1.0461235-.146627 1.5683594-.150391zm2.638672.347657c.65114.176538 
1.305355.444999 1.960937.759765a6.5 6.5 0 0 1 -3.3515621 
1.794922c.5759861-.868856 1.0420029-1.720577 
1.3906251-2.554687zm-5.201172.011719c.3490871.832808.8149234 1.683346 1.390625 
2.550781a6.5 6.5 0 0 1 -3.4199219-1.794922c.6792215-.312559 1.355858-.576136 
2.0292969-.755859z" fill="#4e83b9"/></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/res/sx03248.svg 
b/icon-themes/colibre_svg/res/sx03248.svg
new file mode 100644
index 000000000000..c5ba42728bd9
--- /dev/null
+++ b/icon-themes/colibre_svg/res/sx03248.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg";><path 
d="m1.8125656.00599937c-.4583913.08746719-.82070444.53319998-.8124846.99962503v13.9947496c.00005.523384.4764109.999575.999981.999625h11.999772c.52357-.00005.999931-.476241.999981-.999625v-7.9969996c.006-.263961-.0975-.5287717-.281245-.7184805l-5.9998857-5.99774999c-.1897764-.18363112-.4546813-.28726224-.7187363-.28114454h-5.999886c-.0622988-.00599774-.1251776-.00599774-.1874964
 0z" fill="#e68497"/><path 
d="m11.343634.00599937c-.331493.10559039-.443051.60743213-.187496.8434336l2.999943
 
2.99887503c.277145.2626914.829134.037886.843734-.3436211v-2.99887503c-.00003-.26169182-.238205-.49978251-.49999-.4998125h-2.999943c-.0517-.007997-.104589-.007997-.156248
 0z" fill="#e68497"/><path d="m2.000307.99933v.5 13 .5h.49999 
10.99979.5v-.5-7.3125-.2188l-.15625-.125-5.6874-5.7187-.15624-.125h-.1875-5.3124z"
 fill="#fff"/><g fill="#e68497" stroke-width="5.01122"><path d="m3.999935 
7.99822h7.999848v1h-7.999848z"/><path d="m3.999935 5.9
 9822h5.999886v1h-5.999886z"/><path d="m3.999935 
9.99822h7.999848v1h-7.999848z"/><path d="m3.999935 
11.99822h5.999886v1h-5.999886z"/></g></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/res/sx03252.svg 
b/icon-themes/colibre_svg/res/sx03252.svg
new file mode 100644
index 000000000000..ecc2a1f71a76
--- /dev/null
+++ b/icon-themes/colibre_svg/res/sx03252.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg";><path 
d="m1.8125.00585938c-.4583913.08746719-.82071984.53357494-.8125 
1.00000002v13.9941406c.00005.523384.4764299.99995 1 
1h4.0078125c-.0019269-.248085.0794634-.501195.2851563-.707031l8.6425782-8.6425784c-.047771-.1351075-.117044-.2622436-.216797-.3652344l-6-5.99804682c-.1897764-.18363113-.454695-.28736771-.71875-.28125h-6c-.0622988-.00599775-.1251812-.00599775-.1875
 0z" fill="#eac282"/><path 
d="m11.343634.00599937c-.331493.10559039-.443051.60743213-.187496.8434336l2.999943
 
2.99887503c.277145.2626914.829134.037886.843734-.3436211v-2.99887503c-.00003-.26169182-.238205-.49978251-.49999-.4998125h-2.999943c-.0517-.007997-.104589-.007997-.156248
 0z" fill="#eac282"/><path d="m2 1v .5 13 .5h.5 
4.0859375l7.4140625-7.4140625v-.3984375-.21875l-.15625-.125-5.6875-5.71875-.15625-.125h-.1875-5.3125z"
 fill="#fff"/><path d="m11.582031 
6.9941406c-.078994-.0132362-.161924-.0082669-.240234.0175782-.0712.0269-.13532.0696-.1875.125l-5.5000001
 
 
5.0000002c-.15783.13912-.2116857.362774-.1347657.558593.0769001.19582.2681957.321917.4785157.316407h2.5761719l1-1h-2.2949219l3.7187501-3.3750002v1.9511722l1-1.0000004v-2.0761718c.008-.1647401-.064153-.3219051-.195313-.421875-.065605-.05-.141709-.0824669-.220703-.0957032z"
 fill="#eac282"/><path d="m5.3666502 10.857465a2.5078198 2.5078198 0 0 1 
-.7617995-2.5850242 2.5078198 2.5078198 0 0 1 2.0209188-1.782854 2.5078198 
2.5078198 0 0 1 2.4698564 1.0780014" fill="none" stroke="#eac282" 
stroke-linecap="round" stroke-linejoin="round" stroke-width=".999999"/><path 
d="m16 7-9 9h9zm-1 2.7736083v.9763917 4.25h-4.25-.952422z" fill="#808080" 
fill-rule="evenodd"/></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/res/sx03253.svg 
b/icon-themes/colibre_svg/res/sx03253.svg
new file mode 100644
index 000000000000..0044fbbd3ef5
--- /dev/null
+++ b/icon-themes/colibre_svg/res/sx03253.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg";><path 
d="m1.8125.00585938c-.4583913.08746719-.82071984.53357494-.8125 
1.00000002v13.9941406c.00005.523384.4764299.99995 1 
1h4.0078125c-.0019269-.248085.0794634-.501195.2851563-.707031l8.6425782-8.6425784c-.047771-.1351075-.117044-.2622436-.216797-.3652344l-6-5.99804682c-.1897764-.18363113-.454695-.28736771-.71875-.28125h-6c-.0622988-.00599775-.1251812-.00599775-.1875
 0z" fill="#d86344"/><path 
d="m11.343634.00599937c-.331493.10559039-.443051.60743213-.187496.8434336l2.999943
 
2.99887503c.277145.2626914.829134.037886.843734-.3436211v-2.99887503c-.00003-.26169182-.238205-.49978251-.49999-.4998125h-2.999943c-.0517-.007997-.104589-.007997-.156248
 0z" fill="#d86344"/><path d="m2 1v .5 13 .5h.5 
4.0859375l7.4140625-7.4140625v-.3984375-.21875l-.15625-.125-5.6875-5.71875-.15625-.125h-.1875-5.3125z"
 fill="#fff"/><path d="m3.9980469 
6v7h4.5878906l3.4121095-3.4121094v-3.5878906z" fill="#fff"/><g 
fill="#d86344"><path d="m4.03125 6.0117188
 v.46875c-.0119 1.9999-.01965 3.9999002-.03125 6.0000002v.53125h.5 
4.0742188l1-1h-4.5742188c.01-1.6668.02145-3.3334003.03125-5.0000002 
1.98885.0099999 3.98117-.0100001 5.96875 0 0 1.1865691-.000003 2.3817187 0 
3.5742192l1-1.0000005c.000007-1.0267866 0-2.0536294 
0-3.0742187v-.5h-.5c-2.32275-.012-4.64771.01-6.96875 0z"/><path d="m7.99919 
7.9993h2v1h-2z"/><path d="m7.99919 9.9993h2v1h-2z"/><path d="m5.99919 
7.9993h1v1h-1z"/><path d="m5.99919 9.9993h1v1h-1z"/></g><path d="m16 7-9 
9h9zm-1 2.7736083v.9763917 4.25h-4.25-.952422z" fill="#808080" 
fill-rule="evenodd"/></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/res/sx03254.svg 
b/icon-themes/colibre_svg/res/sx03254.svg
new file mode 100644
index 000000000000..9a570012ba6e
--- /dev/null
+++ b/icon-themes/colibre_svg/res/sx03254.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg";><path 
d="m1.8125.00585938c-.4583913.08746719-.82071984.53357494-.8125 
1.00000002v13.9941406c.00005.523384.4764299.99995 1 
1h4.0078125c-.0019269-.248085.0794634-.501195.2851563-.707031l8.6425782-8.6425784c-.047771-.1351075-.117044-.2622436-.216797-.3652344l-6-5.99804682c-.1897764-.18363113-.454695-.28736771-.71875-.28125h-6c-.0622988-.00599775-.1251812-.00599775-.1875
 0z" fill="#76a797"/><path 
d="m11.343634.00599937c-.331493.10559039-.443051.60743213-.187496.8434336l2.999943
 
2.99887503c.277145.2626914.829134.037886.843734-.3436211v-2.99887503c-.00003-.26169182-.238205-.49978251-.49999-.4998125h-2.999943c-.0517-.007997-.104589-.007997-.156248
 0z" fill="#76a797"/><path d="m2 1v .5 13 .5h.5 
4.0859375l7.4140625-7.4140625v-.3984375-.21875l-.15625-.125-5.6875-5.71875-.15625-.125h-.1875-5.3125z"
 fill="#fff"/><path d="m3.9980469 
5.9980469v7.0000001h4.5898437l2.4101564-2.410156v-4.5898441z" 
fill="#fff"/><path d="m3.9980469 5.9980469v
 1 1 1 1 1.0000001 1 1h1 2 1 .5898437l1-1h-1.5898437v-1h2v 
.589844l1.0000001-1v-4.5898441h-6.0000001zm1 1h2v1h-2zm3 0h2v1h-2zm-3 
2h2v1h-2zm3 0h2v1h-2zm-3 2.0000001h2v1h-2z" fill="#76a797"/><path d="m16 
7.0000003-9 8.9999997h9zm-1 2.7736083v.9763914 4.25h-4.25-.952422z" 
fill="#808080" fill-rule="evenodd"/></svg>
\ No newline at end of file
diff --git a/icon-themes/colibre_svg/res/sx03255.svg 
b/icon-themes/colibre_svg/res/sx03255.svg
new file mode 100644
index 000000000000..2a35f5d033dd
--- /dev/null
+++ b/icon-themes/colibre_svg/res/sx03255.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg";><path 
d="m1.8125.00585938c-.4583913.08746719-.82071984.53357494-.8125 
1.00000002v13.9941406c.00005.523384.4764299.99995 1 
1h4.0078125c-.0019269-.248085.0794634-.501195.2851563-.707031l8.6425782-8.6425784c-.047771-.1351075-.117044-.2622436-.216797-.3652344l-6-5.99804682c-.1897764-.18363113-.454695-.28736771-.71875-.28125h-6c-.0622988-.00599775-.1251812-.00599775-.1875
 0z" fill="#4d82b8"/><path 
d="m11.343634.00599937c-.331493.10559039-.443051.60743213-.187496.8434336l2.999943
 
2.99887503c.277145.2626914.829134.037886.843734-.3436211v-2.99887503c-.00003-.26169182-.238205-.49978251-.49999-.4998125h-2.999943c-.0517-.007997-.104589-.007997-.156248
 0z" fill="#4d82b8"/><path d="m2 1v .5 13 .5h.5 
4.0859375l7.4140625-7.4140625v-.3984375-.21875l-.15625-.125-5.6875-5.71875-.15625-.125h-.1875-5.3125z"
 fill="#fff"/><g fill="#4d82b8" stroke-width="5.01122"><path d="m3.999935 
7.99822h7.999848v1h-7.999848z"/><path d="m3.999935 5.99822h5.9998
 86v1h-5.999886z"/><path d="m4 
9.9980469v1.0000001h6.587891l1-1.0000001z"/><path d="m4 
11.998047v1h4.5878906l1-1z"/></g><path d="m16 7.0000003-9 8.9999997h9zm-1 
2.7736083v.9763914 4.25h-4.25-.952422z" fill="#808080" 
fill-rule="evenodd"/></svg>
\ No newline at end of file
commit 02f6aa7355d77842caa0416217e0a572144467c3
Author: jan Iversen <j...@libreoffice.org>
Date:   Sun Mar 11 09:19:39 2018 +0100

    iOS, removed perl script in bridges
    
    The perl script just generated static asm code, this
    code is now included directly in ios64_helper.s
    
    Change-Id: I3ebc6f85865287e1a1d11f82be72fc2407bcb40f

diff --git a/bridges/Library_cpp_uno.mk b/bridges/Library_cpp_uno.mk
index 4c6d7ec95046..902b735b3d65 100644
--- a/bridges/Library_cpp_uno.mk
+++ b/bridges/Library_cpp_uno.mk
@@ -26,24 +26,6 @@ bridges_SELECTED_BRIDGE := gcc3_ios
 bridge_noopt_objects := cpp2uno except uno2cpp
 bridge_asm_objects := ios64_helper
 
-#HACK
-$(eval $(call gb_Library_set_include,$(gb_CPPU_ENV)_uno,\
-    $$(INCLUDE) \
-    -I $(call gb_CustomTarget_get_workdir,bridges/source/cpp_uno/gcc3_ios) \
-))
-
-$(SRCDIR)/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s: \
-       $(call 
gb_CustomTarget_get_workdir,bridges/source/cpp_uno/gcc3_ios)/codesnippets.S
-
-$(call 
gb_CustomTarget_get_workdir,bridges/source/cpp_uno/gcc3_ios)/codesnippets.S: \
-       $(SRCDIR)/bridges/source/cpp_uno/gcc3_ios/generate-snippets.pl \
-        | $(call 
gb_CustomTarget_get_workdir,bridges/source/cpp_uno/gcc3_ios)/.dir
-       $(PERL) $< > $@
-
-$(call gb_Library_get_clean_target,$(gb_CPPU_ENV)_uno) :
-       rm -f 
$(WORKDIR)/CustomTarget/bridges/source/cpp_uno/gcc3_ios/codesnippets.S
-
-
 else ifeq ($(CPUNAME),AARCH64)
 
 ifneq ($(filter ANDROID DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),)
diff --git a/bridges/source/cpp_uno/gcc3_ios/generate-snippets.pl 
b/bridges/source/cpp_uno/gcc3_ios/generate-snippets.pl
deleted file mode 100755
index 3a3b0a3fbb1a..000000000000
--- a/bridges/source/cpp_uno/gcc3_ios/generate-snippets.pl
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/perl -w # -*- tab-width: 4; indent-tabs-mode: nil; 
cperl-indent-level: 4 -*-
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-
-my $nFunIndexes = 8;
-my $nVtableOffsets = 4;
-
-sub gen_arm ($$)
-{
-    my ($funIndex, $vtableOffset) = @_;
-    printf ("codeSnippet_%08x_%d:\n", $funIndex, $vtableOffset);
-    printf ("    adr x15, .+8\n");
-    printf ("    b _privateSnippetExecutor\n");
-    printf ("    .long %#08x\n", $funIndex);
-    printf ("    .long %d\n", $vtableOffset);
-}
-
-printf (".text\n");
-printf ("\n");
-printf ("    .align 4\n");
-printf ("\n");
-
-foreach my $funIndex (0 .. $nFunIndexes-1)
-{
-   foreach my $vtableOffset (0 .. $nVtableOffsets-1)
-   {
-       gen_arm ($funIndex, $vtableOffset);
-   }
-}
-
-printf ("    .globl _nFunIndexes\n");
-printf ("_nFunIndexes:\n");
-printf ("    .long %d\n", $nFunIndexes);
-
-printf ("    .globl _nVtableOffsets\n");
-printf ("_nVtableOffsets:\n");
-printf ("    .long %d\n", $nVtableOffsets);
-
-printf ("    .globl _codeSnippets\n");
-printf ("_codeSnippets:\n");
-
-foreach my $funIndex (0 .. $nFunIndexes-1)
-{
-    foreach my $vtableOffset (0 .. $nVtableOffsets-1)
-    {
-        printf ("    .long codeSnippet_%08x_%d - _codeSnippets\n", $funIndex, 
$vtableOffset);
-    }
-}
-
-# vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s 
b/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s
index 51e4d160dafe..6e6e8c74b347 100644
--- a/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s
+++ b/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s
@@ -16,8 +16,211 @@
 //   except in compliance with the License. You may obtain a copy of
 //   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 //
+    .text
+    .align 4
+
+codeSnippet_00000000_0:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 00000000
+    .long 0
+codeSnippet_00000000_1:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 00000000
+    .long 1
+codeSnippet_00000000_2:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 00000000
+    .long 2
+codeSnippet_00000000_3:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 00000000
+    .long 3
+codeSnippet_00000001_0:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000001
+    .long 0
+codeSnippet_00000001_1:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000001
+    .long 1
+codeSnippet_00000001_2:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000001
+    .long 2
+codeSnippet_00000001_3:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000001
+    .long 3
+codeSnippet_00000002_0:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000002
+    .long 0
+codeSnippet_00000002_1:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000002
+    .long 1
+codeSnippet_00000002_2:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000002
+    .long 2
+codeSnippet_00000002_3:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000002
+    .long 3
+codeSnippet_00000003_0:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000003
+    .long 0
+codeSnippet_00000003_1:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000003
+    .long 1
+codeSnippet_00000003_2:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000003
+    .long 2
+codeSnippet_00000003_3:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000003
+    .long 3
+codeSnippet_00000004_0:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000004
+    .long 0
+codeSnippet_00000004_1:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000004
+    .long 1
+codeSnippet_00000004_2:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000004
+    .long 2
+codeSnippet_00000004_3:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000004
+    .long 3
+codeSnippet_00000005_0:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000005
+    .long 0
+codeSnippet_00000005_1:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000005
+    .long 1
+codeSnippet_00000005_2:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000005
+    .long 2
+codeSnippet_00000005_3:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000005
+    .long 3
+codeSnippet_00000006_0:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000006
+    .long 0
+codeSnippet_00000006_1:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000006
+    .long 1
+codeSnippet_00000006_2:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000006
+    .long 2
+codeSnippet_00000006_3:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000006
+    .long 3
+codeSnippet_00000007_0:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000007
+    .long 0
+codeSnippet_00000007_1:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000007
+    .long 1
+codeSnippet_00000007_2:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000007
+    .long 2
+codeSnippet_00000007_3:
+    adr x15, .+8
+    b _privateSnippetExecutor
+    .long 0x000007
+    .long 3
+    .globl _nFunIndexes
+_nFunIndexes:
+    .long 8
+    .globl _nVtableOffsets
+_nVtableOffsets:
+    .long 4
+    .globl _codeSnippets
+_codeSnippets:
+    .long codeSnippet_00000000_0 - _codeSnippets
+    .long codeSnippet_00000000_1 - _codeSnippets
+    .long codeSnippet_00000000_2 - _codeSnippets
+    .long codeSnippet_00000000_3 - _codeSnippets
+    .long codeSnippet_00000001_0 - _codeSnippets
+    .long codeSnippet_00000001_1 - _codeSnippets
+    .long codeSnippet_00000001_2 - _codeSnippets
+    .long codeSnippet_00000001_3 - _codeSnippets
+    .long codeSnippet_00000002_0 - _codeSnippets
+    .long codeSnippet_00000002_1 - _codeSnippets
+    .long codeSnippet_00000002_2 - _codeSnippets
+    .long codeSnippet_00000002_3 - _codeSnippets
+    .long codeSnippet_00000003_0 - _codeSnippets
+    .long codeSnippet_00000003_1 - _codeSnippets
+    .long codeSnippet_00000003_2 - _codeSnippets
+    .long codeSnippet_00000003_3 - _codeSnippets
+    .long codeSnippet_00000004_0 - _codeSnippets
+    .long codeSnippet_00000004_1 - _codeSnippets
+    .long codeSnippet_00000004_2 - _codeSnippets
+    .long codeSnippet_00000004_3 - _codeSnippets
+    .long codeSnippet_00000005_0 - _codeSnippets
+    .long codeSnippet_00000005_1 - _codeSnippets
+    .long codeSnippet_00000005_2 - _codeSnippets
+    .long codeSnippet_00000005_3 - _codeSnippets
+    .long codeSnippet_00000006_0 - _codeSnippets
+    .long codeSnippet_00000006_1 - _codeSnippets
+    .long codeSnippet_00000006_2 - _codeSnippets
+    .long codeSnippet_00000006_3 - _codeSnippets
+    .long codeSnippet_00000007_0 - _codeSnippets
+    .long codeSnippet_00000007_1 - _codeSnippets
+    .long codeSnippet_00000007_2 - _codeSnippets
+    .long codeSnippet_00000007_3 - _codeSnippets
+
 
-#include "codesnippets.S"
 
     .text
     .align 4
commit dc275890d62cb8f404fe6bed5c37f90835b53b0f
Author: jan Iversen <j...@libreoffice.org>
Date:   Sun Mar 11 09:17:05 2018 +0100

    iOS, typo in function decl.
    
    Change-Id: I269f5323ed0f984cfe9d28636a9cae84a863e7a6

diff --git a/bridges/source/cpp_uno/gcc3_ios/cpp2uno.cxx 
b/bridges/source/cpp_uno/gcc3_ios/cpp2uno.cxx
index 0ca1401ba960..8008d3a2193e 100644
--- a/bridges/source/cpp_uno/gcc3_ios/cpp2uno.cxx
+++ b/bridges/source/cpp_uno/gcc3_ios/cpp2uno.cxx
@@ -512,11 +512,13 @@ bridges::cpp_uno::shared::VtableFactory::initializeBlock(
 unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
     Slot ** slots,
     unsigned char * code,
+    sal_PtrDiff writetoexecdiff,
     typelib_InterfaceTypeDescription const * type,
     sal_Int32 functionOffset,
     sal_Int32 functionCount,
     sal_Int32 vtableOffset)
 {
+    (void)writetoexecdiff;
     (*slots) -= functionCount;
     Slot * s = *slots;
     for (sal_Int32 i = 0; i < type->nMembers; ++i)
commit bed135e02bf7db2ef8c29747bbf79f26da71e9ca
Author: jan Iversen <j...@libreoffice.org>
Date:   Sat Mar 10 19:44:25 2018 +0100

    iOS, activate USE_DOUBLE_MMAP
    
    If not activated code assumes dymanic behaivour.
    
    Change-Id: I6b2807f4a2402a7adfa0839454586b425ee1ae29

diff --git a/bridges/inc/vtablefactory.hxx b/bridges/inc/vtablefactory.hxx
index 70c87c385952..04e3addc3149 100644
--- a/bridges/inc/vtablefactory.hxx
+++ b/bridges/inc/vtablefactory.hxx
@@ -31,7 +31,7 @@
 /*See: http://people.redhat.com/drepper/selinux-mem.html*/
 #if defined(LINUX) || defined(OPENBSD) || defined(FREEBSD) \
     || defined(NETBSD) || defined(DRAGONFLY) || defined (ANDROID) \
-    || defined(HAIKU)
+    || defined(HAIKU)  || defined(IOS)
 #define USE_DOUBLE_MMAP
 #endif
 
commit be65314d131ea75610d9ed21323ce6025a615c99
Author: jan Iversen <j...@libreoffice.org>
Date:   Sat Mar 10 19:24:03 2018 +0100

    bridges,iOS removed suport for x86 and arm.
    
    Only arm64 is supported, code is more readable
    
    Change-Id: I6940b0d03dc26c9c8f10c1cb105a7564471f2ca5

diff --git a/bridges/source/cpp_uno/gcc3_ios/generate-snippets.pl 
b/bridges/source/cpp_uno/gcc3_ios/generate-snippets.pl
index a8548836fef3..3a3b0a3fbb1a 100755
--- a/bridges/source/cpp_uno/gcc3_ios/generate-snippets.pl
+++ b/bridges/source/cpp_uno/gcc3_ios/generate-snippets.pl
@@ -13,45 +13,15 @@ my $nVtableOffsets = 4;
 sub gen_arm ($$)
 {
     my ($funIndex, $vtableOffset) = @_;
-    if ($funIndex & 0x80000000) {
-        printf ("#ifndef __arm64\n");
-    }
     printf ("codeSnippet_%08x_%d:\n", $funIndex, $vtableOffset);
-    printf ("#ifdef __arm\n");
-    # Note: pc is the address of instruction being executed plus 8
-    printf ("    mov ip, pc\n");
-    printf ("#else\n");
     printf ("    adr x15, .+8\n");
-    printf ("#endif\n");
     printf ("    b _privateSnippetExecutor\n");
     printf ("    .long %#08x\n", $funIndex);
     printf ("    .long %d\n", $vtableOffset);
-    if ($funIndex & 0x80000000) {
-        printf ("#endif\n");
-    }
-}
-
-sub gen_x86 ($$$)
-{
-    my ($funIndex, $vtableOffset, $executor) = @_;
-    printf ("codeSnippet_%08x_%d_%s:\n", $funIndex, $vtableOffset, $executor);
-    printf ("    movl \$%#08x, %%eax\n", $funIndex);
-    printf ("    movl \$%d, %%edx\n", $vtableOffset);
-    printf ("    jmp _privateSnippetExecutor%s\n", $executor);
 }
 
 printf (".text\n");
-
-printf ("#if defined(__arm) || defined(__arm64)\n");
-
 printf ("\n");
-printf ("// Each codeSnippetX function stores into ip (arm64: x15) an address 
and branches to _privateSnippetExecutor\n");
-printf ("// The address is that following the branch instruction, containing 
two 32-bit ints:\n");
-printf ("// - the function index, which for 32-bit can have the 0x80000000 bit 
set\n");
-printf ("//   to indicate that a hidden parameter is used for returning large 
values\n");
-printf ("// - the vtable offset\n");
-printf ("\n");
-
 printf ("    .align 4\n");
 printf ("\n");
 
@@ -60,27 +30,9 @@ foreach my $funIndex (0 .. $nFunIndexes-1)
    foreach my $vtableOffset (0 .. $nVtableOffsets-1)
    {
        gen_arm ($funIndex, $vtableOffset);
-       gen_arm ($funIndex|0x80000000, $vtableOffset);
    }
 }
 
-printf ("#else\n");
-printf ("    .align 1, 0x90\n");
-
-foreach my $funIndex (0 .. $nFunIndexes-1)
-{
-    foreach my $vtableOffset (0 .. $nVtableOffsets-1)
-    {
-        foreach my $executor ('General', 'Void', 'Hyper', 'Float', 'Double', 
'Class')
-        {
-            gen_x86 ($funIndex, $vtableOffset, $executor);
-            gen_x86 ($funIndex|0x80000000, $vtableOffset, $executor);
-        }
-    }
-  }
-
-printf ("#endif\n");
-
 printf ("    .globl _nFunIndexes\n");
 printf ("_nFunIndexes:\n");
 printf ("    .long %d\n", $nFunIndexes);
@@ -96,18 +48,7 @@ foreach my $funIndex (0 .. $nFunIndexes-1)
 {
     foreach my $vtableOffset (0 .. $nVtableOffsets-1)
     {
-        printf ("#if defined(__arm) || defined(__arm64)\n");
         printf ("    .long codeSnippet_%08x_%d - _codeSnippets\n", $funIndex, 
$vtableOffset);
-        printf ("#ifndef __arm64\n");
-        printf ("    .long codeSnippet_%08x_%d - _codeSnippets\n", 
$funIndex|0x80000000, $vtableOffset);
-        printf ("#endif\n");
-        printf ("#else\n");
-        foreach my $executor ('General', 'Void', 'Hyper', 'Float', 'Double', 
'Class')
-        {
-            printf ("    .long codeSnippet_%08x_%d_%s - _codeSnippets\n", 
$funIndex, $vtableOffset, $executor);
-            printf ("    .long codeSnippet_%08x_%d_%s - _codeSnippets\n", 
$funIndex|0x80000000, $vtableOffset, $executor);
-        }
-        printf ("#endif\n");
     }
 }
 
diff --git a/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s 
b/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s
index 7461cbccc4e7..51e4d160dafe 100644
--- a/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s
+++ b/bridges/source/cpp_uno/gcc3_ios/ios64_helper.s
@@ -19,31 +19,6 @@
 
 #include "codesnippets.S"
 
-#if defined(__arm)
-// ARM support code for LibreOffice C++/UNO bridging
-//
-// Written by Peter Naulls <pe...@chocky.org>
-// Modified by Caolan McNamara <caol...@redhat.com>
-// Fixed by Michael Casadevall <mcasadev...@kubuntu.org>
-// Modified for iOS by Tor Lillqvist <t...@iki.fi>
-
-    .text
-    .align 4
-
-_privateSnippetExecutor:
-    stmfd   sp!, {r0-r3}    // follow other parameters on stack
-    mov     r0, ip          // r0 points to functionoffset/vtable
-    mov     r1, sp          // r1 points to this and params
-                            // (see cpp2uno.cxx:codeSnippet())
-    stmfd   sp!, {r4, lr}   // save return address
-                            // (r4 pushed to preserve stack alignment)
-    bl      _cpp_vtable_call
-
-    add     sp, sp, #4      // no need to restore r4 (we didn't touch it)
-    ldr     pc, [sp], #20   // return, discarding function arguments
-
-#elif defined(__arm64)
-
     .text
     .align 4
 
@@ -79,393 +54,4 @@ _privateSnippetExecutor:
     ret     lr
     .cfi_endproc
 
-#elif defined(__i386)
-    // i386 code, for the simulator
-    .text
-
-.align 1, 0x90
-_privateSnippetExecutorGeneral:
-LFBg:
-    movl    %esp,%ecx
-    pushl   %ebp              // proper stack frame needed for exception 
handling
-LCFIg0:
-    movl    %esp,%ebp
-LCFIg1:
-    subl    $0x8,%esp         // padding + 32bit returnValue
-    pushl   %esp              // 32bit &returnValue
-    pushl   %ecx              // 32bit pCallStack
-    pushl   %edx              // 32bit nVtableOffset
-    pushl   %eax              // 32bit nFunctionIndex
-    call    L_cpp_vtable_call$stub
-    movl    16(%esp),%eax     // 32bit returnValue
-    leave
-    ret
-LFEg:
-    .long   .-_privateSnippetExecutorGeneral
-
-.align 1, 0x90
-_privateSnippetExecutorVoid:
-LFBv:
-    movl    %esp,%ecx
-    pushl   %ebp              // proper stack frame needed for exception 
handling
-LCFIv0:
-    movl    %esp,%ebp
-LCFIv1:
-    sub     $8,%esp           // padding
-    pushl   $0                // 32bit null pointer (returnValue not used)
-    pushl   %ecx              // 32bit pCallStack
-    pushl   %edx              // 32bit nVtableOffset
-    pushl   %eax              // 32bit nFunctionIndex
-    call    L_cpp_vtable_call$stub
-    leave
-    ret
-LFEv:
-    .long   .-_privateSnippetExecutorVoid
-
-.align 1, 0x90
-_privateSnippetExecutorHyper:
-LFBh:
-    movl    %esp,%ecx
-    pushl   %ebp              // proper stack frame needed for exception 
handling
-LCFIh0:
-    movl    %esp,%ebp
-LCFIh1:
-    subl    $0x8,%esp         // 64bit returnValue
-    pushl   %esp              // 32bit &returnValue
-    pushl   %ecx              // 32bit pCallStack
-    pushl   %edx              // 32bit nVtableOffset
-    pushl   %eax              // 32bit nFunctionIndex
-    call    L_cpp_vtable_call$stub
-    movl    16(%esp),%eax     // 64bit returnValue, lower half
-    movl    20(%esp),%edx     // 64bit returnValue, upper half
-    leave
-    ret
-LFEh:
-    .long   .-_privateSnippetExecutorHyper
-
-.align 1, 0x90
-_privateSnippetExecutorFloat:
-LFBf:
-    movl    %esp,%ecx
-    pushl   %ebp              // proper stack frame needed for exception 
handling
-LCFIf0:
-    movl    %esp,%ebp
-LCFIf1:
-    subl    $0x8,%esp         // padding + 32bit returnValue
-    pushl   %esp              // 32bit &returnValue
-    pushl   %ecx              // 32bit pCallStack
-    pushl   %edx              // 32bit nVtableOffset
-    pushl   %eax              // 32bit nFunctionIndex
-    call    L_cpp_vtable_call$stub
-    flds    16(%esp)          // 32bit returnValue
-    leave
-    ret
-LFEf:
-    .long   .-_privateSnippetExecutorFloat
-
-.align 1, 0x90
-_privateSnippetExecutorDouble:
-LFBd:
-    movl    %esp,%ecx
-    pushl   %ebp              // proper stack frame needed for exception 
handling
-LCFId0:
-    movl    %esp,%ebp
-LCFId1:
-    subl    $0x8,%esp         // 64bit returnValue
-    pushl   %esp              // 32bit &returnValue
-    pushl   %ecx              // 32bit pCallStack
-    pushl   %edx              // 32bit nVtableOffset
-    pushl   %eax              // 32bit nFunctionIndex
-    call    L_cpp_vtable_call$stub
-    fldl    16(%esp)          // 64bit returnValue
-    leave
-    ret
-LFEd:
-    .long   .-_privateSnippetExecutorDouble
-
-.align 1, 0x90
-_privateSnippetExecutorClass:
-LFBc:
-    movl    %esp,%ecx
-    pushl   %ebp              // proper stack frame needed for exception 
handling
-LCFIc0:
-    movl    %esp,%ebp
-LCFIc1:
-    subl    $0x8,%esp         // padding + 32bit returnValue
-    pushl   %esp              // 32bit &returnValue
-    pushl   %ecx              // 32bit pCallStack
-    pushl   %edx              // 32bit nVtableOffset
-    pushl   %eax              // 32bit nFunctionIndex
-    call    L_cpp_vtable_call$stub
-    movl    16(%esp),%eax     // 32bit returnValue
-    leave
-    ret     $4
-LFEc:
-    .long   .-_privateSnippetExecutorClass
-
-    .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
-EH_frame1:
-    .set L$set$frame1,LECIE1-LSCIE1
-    .long   L$set$frame1      // length
-LSCIE1:
-    .long   0                 // CIE_ID
-    .byte   1                 // version
-    .ascii  "zPR\0"           // augmentation
-    .byte   1                 // code_alignment_factor (.uleb128 1)
-    .byte   0x7c              // data_alignment_factor (.sleb128 -4)
-    .byte   8                 // return_address_register
-    .byte   0x6               // augmentation size 7:
-    .byte   0x9b              //  ???
-    .long   L___gxx_personality_v0$non_lazy_ptr-.
-    .byte   0x10
-                              // initial_instructions:
-    .byte   0x0C              //  DW_CFA_def_cfa %esp, 4
-    .byte   5
-    .byte   4
-    .byte   0x88              //  DW_CFA_offset ret, 1
-    .byte   1
-    .align 2
-LECIE1:
-_privateSnippetExecutorGeneral.eh:
-LSFDEg:
-    .set L$set$g1,LEFDEg-LASFDEg
-    .long   L$set$g1          // length
-LASFDEg:
-    .long   LASFDEg-EH_frame1 // CIE_pointer
-    .long   LFBg-.            // initial_location
-    .long   LFEg-LFBg         // address_range
-    .byte   0                 // augmentation size 0
-                              // instructions:
-    .byte   0x04              //  DW_CFA_advance_loc4
-    .long   LCFIg0-LFBg
-    .byte   0x0E              //  DW_CFA_def_cfa_offset 8
-    .byte   8
-    .byte   0x84              //  DW_CFA_offset %ebp, 2
-    .byte   2
-    .byte   0x04              //  DW_CFA_advance_loc4
-    .long   LCFIg1-LCFIg0
-    .byte   0x0D              //  DW_CFA_def_cfa_register %ebp
-    .byte   4
-    .align 2
-LEFDEg:
-_privateSnippetExecutorVoid.eh:
-LSFDEv:
-    .set L$set$v1,LEFDEv-LASFDEv
-    .long   L$set$v1          // length
-LASFDEv:
-    .long   LASFDEv-EH_frame1 // CIE_pointer
-    .long   LFBv-.            // initial_location
-    .long   LFEv-LFBv         // address_range
-    .byte   0                 // augmentation size 0
-                              // instructions:
-    .byte   0x04              //  DW_CFA_advance_loc4
-    .long   LCFIv0-LFBv
-    .byte   0x0E              //  DW_CFA_def_cfa_offset 8
-    .byte   8
-    .byte   0x84              //  DW_CFA_offset %ebp, 2
-    .byte   2
-    .byte   0x04              //  DW_CFA_advance_loc4
-    .long   LCFIv1-LCFIv0
-    .byte   0x0D              //  DW_CFA_def_cfa_register %ebp
-    .byte   4
-    .align 2
-LEFDEv:
-_privateSnippetExecutorHyper.eh:
-LSFDEh:
-    .set L$set$h1,LEFDEh-LASFDEh
-    .long   L$set$h1          // length
-LASFDEh:
-    .long   LASFDEh-EH_frame1 // CIE_pointer
-    .long   LFBh-.            // initial_location
-    .long   LFEh-LFBh         // address_range
-    .byte   0                 // augmentation size 0
-                              // instructions:
-    .byte   0x04              //  DW_CFA_advance_loc4
-    .long   LCFIh0-LFBh
-    .byte   0x0E              //  DW_CFA_def_cfa_offset 8
-    .byte   8
-    .byte   0x84              //  DW_CFA_offset %ebp, 2
-    .byte   2
-    .byte   0x04              //  DW_CFA_advance_loc4
-    .long   LCFIh1-LCFIh0
-    .byte   0x0D              //  DW_CFA_def_cfa_register %ebp
-    .byte   4
-    .align 2
-LEFDEh:
-_privateSnippetExecutorFloat.eh:
-LSFDEf:
-    .set L$set$f1,LEFDEf-LASFDEf
-    .long   L$set$f1          // length
-LASFDEf:
-    .long   LASFDEf-EH_frame1 // CIE_pointer
-    .long   LFBf-.            // initial_location
-    .long   LFEf-LFBf         // address_range
-    .byte   0                 // augmentation size 0
-                              // instructions:
-    .byte   0x04              //  DW_CFA_advance_loc4
-    .long   LCFIf0-LFBf
-    .byte   0x0E              //  DW_CFA_def_cfa_offset 8
-    .byte   8
-    .byte   0x84              //  DW_CFA_offset %ebp, 2
-    .byte   2
-    .byte   0x04              //  DW_CFA_advance_loc4
-    .long   LCFIf1-LCFIf0
-    .byte   0x0D              //  DW_CFA_def_cfa_register %ebp
-    .byte   4
-    .align 2
-LEFDEf:
-_privateSnippetExecutorDouble.eh:
-LSFDEd:
-    .set L$set$d1,LEFDEd-LASFDEd
-    .long   L$set$d1          // length
-LASFDEd:
-    .long   LASFDEd-EH_frame1 // CIE_pointer
-    .long   LFBd-.            // initial_location
-    .long   LFEd-LFBd         // address_range
-    .byte   0                 // augmentation size 0
-                              // instructions:
-    .byte   0x04              //  DW_CFA_advance_loc4
-    .long   LCFId0-LFBd
-    .byte   0x0E              //  DW_CFA_def_cfa_offset 8
-    .byte   8
-    .byte   0x84              //  DW_CFA_offset %ebp, 2
-    .byte   2
-    .byte   0x04              //  DW_CFA_advance_loc4
-    .long   LCFId1-LCFId0
-    .byte   0x0D              //  DW_CFA_def_cfa_register %ebp
-    .byte   4
-    .align 2
-LEFDEd:
-_privateSnippetExecutorClass.eh:
-LSFDEc:
-    .set L$set$c1,LEFDEc-LASFDEc
-    .long   L$set$c1          // length
-LASFDEc:
-    .long   LASFDEc-EH_frame1 // CIE_pointer
-    .long   LFBc-.            // initial_location
-    .long   LFEc-LFBc         // address_range
-    .byte   0                 // augmentation size 0
-                              // instructions:
-    .byte   0x04              //  DW_CFA_advance_loc4
-    .long   LCFIc0-LFBc
-    .byte   0x0E              //  DW_CFA_def_cfa_offset 8
-    .byte   8
-    .byte   0x84              //  DW_CFA_offset %ebp, 2
-    .byte   2
-    .byte   0x04              //  DW_CFA_advance_loc4
-    .long   LCFIc1-LCFIc0
-    .byte   0x0D              //  DW_CFA_def_cfa_register %ebp
-    .byte   4
-    .align 2
-LEFDEc:
-    .section 
__IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5
-L_cpp_vtable_call$stub:
-    .indirect_symbol _cpp_vtable_call
-    hlt ; hlt ; hlt ; hlt ; hlt
-    .section __IMPORT,__pointers,non_lazy_symbol_pointers
-L___gxx_personality_v0$non_lazy_ptr:
-    .indirect_symbol ___gxx_personality_v0
-    .long 0
-    .constructor
-    .destructor
-    .align 1
-#else
-
-       .text
-       .align 2
-.globl privateSnippetExecutor
-_privateSnippetExecutor:
-.LFB3:
-       pushq   %rbp
-.LCFI0:
-       movq    %rsp, %rbp
-.LCFI1:
-       subq    $160, %rsp
-.LCFI2:
-       movq    %r10, -152(%rbp)                # Save (nVtableOffset << 32) + 
nFunctionIndex
-
-       movq    %rdi, -112(%rbp)                # Save GP registers
-       movq    %rsi, -104(%rbp)
-       movq    %rdx, -96(%rbp)
-       movq    %rcx, -88(%rbp)
-       movq    %r8 , -80(%rbp)
-       movq    %r9 , -72(%rbp)
-       
-       movsd   %xmm0, -64(%rbp)                # Save FP registers
-       movsd   %xmm1, -56(%rbp)
-       movsd   %xmm2, -48(%rbp)
-       movsd   %xmm3, -40(%rbp)
-       movsd   %xmm4, -32(%rbp)
-       movsd   %xmm5, -24(%rbp)
-       movsd   %xmm6, -16(%rbp)
-       movsd   %xmm7, -8(%rbp)
-
-       leaq    -144(%rbp), %r9                 # 6th param: sal_uInt64 * 
pRegisterReturn
-       leaq    16(%rbp), %r8                   # 5rd param: void ** ovrflw
-       leaq    -64(%rbp), %rcx                 # 4th param: void ** fpreg
-       leaq    -112(%rbp), %rdx                # 3rd param: void ** gpreg
-       movl    -148(%rbp), %esi                # 2nd param: sal_int32 
nVtableOffset
-       movl    -152(%rbp), %edi                # 1st param: sal_int32 
nFunctionIndex
-       
-       call    cpp_vtable_call
-
-       cmp     $10, %rax                                       # 
typelib_TypeClass_FLOAT
-       je      .Lfloat
-       cmp     $11, %rax                                       # 
typelib_TypeClass_DOUBLE
-       je      .Lfloat
-
-       movq    -144(%rbp), %rax                # Return value (int case)
-       movq    -136(%rbp), %rdx                # Return value (int case)
-       movq    -144(%rbp), %xmm0               # Return value (int case)
-       movq    -136(%rbp), %xmm1               # Return value (int case)
-       jmp     .Lfinish
-.Lfloat:
-       movlpd  -144(%rbp), %xmm0               # Return value (float/double 
case)
-
-.Lfinish:
-       leave
-       ret
-.LFE3:
-       # see 
http://refspecs.linuxfoundation.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html
-       # for details of the .eh_frame, the "Common Information Entry" and 
"Frame Description Entry" formats
-       # and http://mentorembedded.github.io/cxx-abi/exceptions.pdf for more 
info
-.Lframe1:
-       .long   .LECIE1-.LSCIE1
-.LSCIE1:
-       .long   0x0
-       .byte   0x1
-       .string "zR"
-       .uleb128 0x1
-       .sleb128 -8
-       .byte   0x10
-       .uleb128 0x1
-       .byte   0x1b
-       .byte   0xc
-       .uleb128 0x7
-       .uleb128 0x8
-       .byte   0x90
-       .uleb128 0x1
-       .align 8
-.LECIE1:
-.LSFDE1:
-       .long   .LEFDE1-.LASFDE1
-.LASFDE1:
-       .long   .LASFDE1-.Lframe1
-       .long   .LFB3-.
-       .long   .LFE3-.LFB3
-       .uleb128 0x0
-       .byte   0x4
-       .long   .LCFI0-.LFB3
-       .byte   0xe
-       .uleb128 0x10
-       .byte   0x86
-       .uleb128 0x2
-       .byte   0x4
-       .long   .LCFI1-.LCFI0
-       .byte   0xd
-       .uleb128 0x6
-       .align 8
-.LEFDE1:
-#endif
-
 // vim:set shiftwidth=4 softtabstop=4 expandtab:
commit a8fc81d478f4dcf8600ed9a2b4e0f7adff4a17ee
Author: Mike Kaganski <mike.kagan...@collabora.com>
Date:   Sun Mar 11 07:04:23 2018 +0300

    tdf#44774: Parent style's msApiName could yet be empty; use GetApiName()
    
    Change-Id: Ie0e218ea83d34aa7ee22fea1f32b2851a942544f
    Reviewed-on: https://gerrit.libreoffice.org/51069
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/sd/qa/unit/misc-tests.cxx b/sd/qa/unit/misc-tests.cxx
index 3d3c2c9064bb..c22b35b88435 100644
--- a/sd/qa/unit/misc-tests.cxx
+++ b/sd/qa/unit/misc-tests.cxx
@@ -27,6 +27,7 @@
 #include <com/sun/star/drawing/XDrawPage.hpp>
 #include <com/sun/star/drawing/XShapes.hpp>
 #include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/frame/XLoadable.hpp>
 
 #include <vcl/scheduler.hxx>
 #include <osl/thread.hxx>
@@ -60,6 +61,7 @@ public:
     void testTdf99396();
     void testTdf99396TextEdit();
     void testFillGradient();
+    void testTdf44774();
 
     CPPUNIT_TEST_SUITE(SdMiscTest);
     CPPUNIT_TEST(testTdf96206);
@@ -67,6 +69,7 @@ public:
     CPPUNIT_TEST(testTdf99396);
     CPPUNIT_TEST(testTdf99396TextEdit);
     CPPUNIT_TEST(testFillGradient);
+    CPPUNIT_TEST(testTdf44774);
     CPPUNIT_TEST_SUITE_END();
 
 private:
@@ -298,6 +301,33 @@ void SdMiscTest::testFillGradient()
     CPPUNIT_ASSERT_EQUAL(sal_Int32(Color(0, 255, 0)),aGradient2.EndColor);
 }
 
+void SdMiscTest::testTdf44774()
+{
+    sd::DrawDocShellRef xDocShRef = new 
sd::DrawDocShell(SfxObjectCreateMode::EMBEDDED, false,
+        DocumentType::Draw);
+    const uno::Reference<frame::XLoadable> xLoadable(xDocShRef->GetModel(), 
uno::UNO_QUERY_THROW);
+    xLoadable->initNew();
+    SfxStyleSheetBasePool* pSSPool = xDocShRef->GetStyleSheetPool();
+
+    // Create a new style with an empty name, like what happens in UI when 
creating a new style
+    SfxStyleSheetBase& rStyleA = pSSPool->Make("", SfxStyleFamily::Para, 
SFXSTYLEBIT_USERDEF);
+    // Assign a new name, which does not yet set its ApiName
+    rStyleA.SetName("StyleA");
+    // Create another style
+    SfxStyleSheetBase& rStyleB = pSSPool->Make("StyleB", SfxStyleFamily::Para, 
SFXSTYLEBIT_USERDEF);
+    // ... and set its parent to the first one
+    rStyleB.SetParent("StyleA");
+
+    // Now save the file and reload
+    xDocShRef = saveAndReload(xDocShRef.get(), ODG);
+    pSSPool = xDocShRef->GetStyleSheetPool();
+
+    SfxStyleSheetBase* pStyle = pSSPool->Find("StyleB", SfxStyleFamily::Para);
+    CPPUNIT_ASSERT(pStyle);
+    // The parent set in StyleB used to reset, because parent style's 
msApiName was empty
+    CPPUNIT_ASSERT_EQUAL(OUString("StyleA"), pStyle->GetParent());
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(SdMiscTest);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sd/source/core/stlsheet.cxx b/sd/source/core/stlsheet.cxx
index 042512f05b8e..a304bd36f65d 100644
--- a/sd/source/core/stlsheet.cxx
+++ b/sd/source/core/stlsheet.cxx
@@ -873,7 +873,7 @@ OUString SAL_CALL SdStyleSheet::getParentStyle()
     {
         SdStyleSheet* pParentStyle = static_cast< SdStyleSheet* >( 
mxPool->Find( GetParent(), nFamily ) );
         if( pParentStyle )
-            return pParentStyle->msApiName;
+            return pParentStyle->GetApiName();
     }
     return OUString();
 }
commit 98eb91a1b99ce9c5ff43b49a9a7789ee8b1c8cc5
Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
Date:   Thu Mar 8 15:45:48 2018 +0900

    remove whitespace
    
    Change-Id: I2ae5c344da3f523072754340e78288fbb29c6348
    Reviewed-on: https://gerrit.libreoffice.org/51067
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>

diff --git a/svtools/source/graphic/graphic.cxx 
b/svtools/source/graphic/graphic.cxx
index 4c39a09f2203..c2969d3cdf67 100644
--- a/svtools/source/graphic/graphic.cxx
+++ b/svtools/source/graphic/graphic.cxx
@@ -47,7 +47,6 @@ void Graphic::init( const ::Graphic& rGraphic )
     unographic::GraphicDescriptor::init(maGraphic);
 }
 
-
 uno::Any SAL_CALL Graphic::queryAggregation( const uno::Type& rType )
 {
     uno::Any aAny;
@@ -63,7 +62,6 @@ uno::Any SAL_CALL Graphic::queryAggregation( const uno::Type& 
rType )
     return aAny;
 }
 
-
 uno::Any SAL_CALL Graphic::queryInterface( const uno::Type & rType )
 {
     css::uno::Any aReturn = ::unographic::GraphicDescriptor::queryInterface( 
rType );
@@ -72,14 +70,12 @@ uno::Any SAL_CALL Graphic::queryInterface( const uno::Type 
& rType )
     return aReturn;
 }
 
-
 void SAL_CALL Graphic::acquire()
     throw()
 {
     unographic::GraphicDescriptor::acquire();
 }
 
-
 void SAL_CALL Graphic::release() throw()
 {
     unographic::GraphicDescriptor::release();
@@ -121,13 +117,11 @@ uno::Sequence< uno::Type > SAL_CALL Graphic::getTypes()
     return aRet;
 }
 
-
 uno::Sequence< sal_Int8 > SAL_CALL Graphic::getImplementationId()
 {
     return css::uno::Sequence<sal_Int8>();
 }
 
-
 sal_Int8 SAL_CALL Graphic::getType()
 {
     sal_Int8 cRet = graphic::GraphicType::EMPTY;
@@ -146,7 +140,6 @@ sal_Int8 SAL_CALL Graphic::getType()
     return cRet;
 }
 
-
 // XBitmap
 
 awt::Size SAL_CALL Graphic::getSize()
@@ -161,7 +154,6 @@ awt::Size SAL_CALL Graphic::getSize()
     return awt::Size(aVclSize.Width(), aVclSize.Height());
 }
 
-
 uno::Sequence<sal_Int8> SAL_CALL Graphic::getDIB()
 {
     SolarMutexGuard aGuard;
@@ -179,7 +171,6 @@ uno::Sequence<sal_Int8> SAL_CALL Graphic::getDIB()
     }
 }
 
-
 uno::Sequence<sal_Int8> SAL_CALL Graphic::getMaskDIB()
 {
     SolarMutexGuard aGuard;
@@ -197,7 +188,6 @@ uno::Sequence<sal_Int8> SAL_CALL Graphic::getMaskDIB()
     }
 }
 
-
 const ::Graphic* Graphic::getImplementation( const uno::Reference< 
uno::XInterface >& rxIFace )
     throw()
 {
@@ -205,7 +195,6 @@ const ::Graphic* Graphic::getImplementation( const 
uno::Reference< uno::XInterfa
     return( xTunnel.is() ? reinterpret_cast< ::Graphic* >( 
xTunnel->getSomething( ::Graphic::getUnoTunnelId() ) ) : nullptr );
 }
 
-
 sal_Int64 SAL_CALL Graphic::getSomething( const uno::Sequence< sal_Int8 >& rId 
)
 {
     return( ( rId.getLength() == 16 && 0 == memcmp( 
::Graphic::getUnoTunnelId().getConstArray(), rId.getConstArray(), 16 ) ) ?
diff --git a/svtools/source/graphic/graphic.hxx 
b/svtools/source/graphic/graphic.hxx
index 285cb5f10051..3f550fb733e1 100644
--- a/svtools/source/graphic/graphic.hxx
+++ b/svtools/source/graphic/graphic.hxx
@@ -39,7 +39,6 @@ class Graphic : public css::graphic::XGraphic,
                 public ::unographic::GraphicTransformer
 {
 public:
-
     Graphic();
     virtual ~Graphic() throw() override;
 
commit 8874c4ae7696328556a8f5c0c475b2cac6aa533b
Author: andreas kainz <kain...@gmail.com>
Date:   Sun Mar 11 02:22:08 2018 +0100

    Colibre Icons: add res/sx 16px app icons
    
    Change-Id: I3046da08c64881f81efcebd9aea4d8e34e19a647
    Reviewed-on: https://gerrit.libreoffice.org/51066
    Reviewed-by: andreas_kainz <kain...@gmail.com>
    Tested-by: andreas_kainz <kain...@gmail.com>

diff --git a/icon-themes/colibre/res/sx03242.png 
b/icon-themes/colibre/res/sx03242.png
new file mode 100644
index 000000000000..541c89e3a838
Binary files /dev/null and b/icon-themes/colibre/res/sx03242.png differ
diff --git a/icon-themes/colibre/res/sx03245.png 
b/icon-themes/colibre/res/sx03245.png
new file mode 100644
index 000000000000..4839ed647792
Binary files /dev/null and b/icon-themes/colibre/res/sx03245.png differ
diff --git a/icon-themes/colibre/res/sx03246.png 
b/icon-themes/colibre/res/sx03246.png
new file mode 100644
index 000000000000..8f7adcce588c

... etc. - the rest is truncated
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to