[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
Armin Le Grand (CIB)
Armin.Le.Grand at cib.de
Sun Mar 11 18:40:38 UTC 2018
Rebased ref, commits from common ancestor:
commit 0c2dc352ed73b9eecb464b79e155f37910b2e551
Author: Armin Le Grand <Armin.Le.Grand at 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.Grand at 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 <jani at 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.kaganski at 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 <ci at libreoffice.org>
Reviewed-by: Mike Kaganski <mike.kaganski at 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.bunth at 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 <ci at libreoffice.org>
Reviewed-by: Tamás Bunth <btomi96 at 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 <kainz.a at 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 <kainz.a at gmail.com>
Tested-by: andreas_kainz <kainz.a at 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">
+
/>
- <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">
+
+
+ />
+ <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">/><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 <jani at 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 <jani at 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 <jani at 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 <jani at 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 <peter at chocky.org>
-// Modified by Caolan McNamara <caolanm at redhat.com>
-// Fixed by Michael Casadevall <mcasadevall at kubuntu.org>
-// Modified for iOS by Tor Lillqvist <tml at 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.kaganski at 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 <ci at libreoffice.org>
Reviewed-by: Mike Kaganski <mike.kaganski at 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.vajngerl at 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 <ci at libreoffice.org>
Reviewed-by: Tomaž Vajngerl <quikee at 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 <kainz.a at 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 <kainz.a at gmail.com>
Tested-by: andreas_kainz <kainz.a at 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
More information about the Libreoffice-commits
mailing list