summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorArmin Le Grand (Allotropia) <Armin.Le.Grand@me.com>2021-04-30 17:26:41 +0200
committerJan-Marek Glogowski <glogow@fbihome.de>2022-01-20 12:28:54 +0100
commit02140554ee1d70b219a42546191e2219d58be4b0 (patch)
tree3dd419dbdd0c23676c7f749bd8a83d09ad26c8bd /svx
parent02634fb7c7e8dc613ffc3717bb244f85cf81a7c6 (diff)
WASM --enable-wasm-strip now skips lots of LO code
... resulting in a stripped-down, Writer-only build to decrease the resulting WASM bytecode size. It removes the following code from the build: * All other major modules: Base, Calc, Chart, Draw, Impress and Math and related writerperfect filters * The premultiply tables * The (auto-)recovery functionality * All accessibility (but not the accessibility document checker) * The LanguageGuess component * EPUB support * The start center / BackingWindow * The TipOfTheDay functionality * The splash screen communication Currently crashs with anything different then soffice --writer. Closing the document also still crashes. FYI: many of these features are now behind ENABLE_WASM_STRIP_* defines, but they normally don't work on their own, globally! That's because we started with stripping the main components. Change-Id: Ib9c0f9452815910c0a2aceaf142ba1ad4a9cb0d7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126182 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
Diffstat (limited to 'svx')
-rw-r--r--svx/Library_svx.mk25
-rw-r--r--svx/Library_svxcore.mk4
-rw-r--r--svx/source/dialog/charmap.cxx12
-rw-r--r--svx/source/dialog/dlgctrl.cxx22
-rw-r--r--svx/source/dialog/frmsel.cxx24
-rw-r--r--svx/source/dialog/graphctl.cxx9
-rw-r--r--svx/source/dialog/searchcharmap.cxx4
-rw-r--r--svx/source/dialog/weldeditview.cxx14
-rw-r--r--svx/util/svx.component1
-rw-r--r--svx/util/svx.component.recoveryui7
-rw-r--r--svx/util/svxcore.component1
-rw-r--r--svx/util/svxcore.component.draw7
12 files changed, 121 insertions, 9 deletions
diff --git a/svx/Library_svx.mk b/svx/Library_svx.mk
index 22e266ff19c6..092a4613f374 100644
--- a/svx/Library_svx.mk
+++ b/svx/Library_svx.mk
@@ -21,7 +21,10 @@ $(eval $(call gb_Library_Library,svx))
$(eval $(call gb_Library_set_componentfile,svx,svx/util/svx,services))
-$(eval $(call gb_Helper_optional,BREAKPAD,$(call gb_Library_add_componentimpl,svx,crashreport)))
+$(eval $(call gb_Library_add_componentimpls,svx, \
+ $(call gb_Helper_optional,BREAKPAD,crashreport) \
+ $(if $(ENABLE_WASM_STRIP_RECOVERYUI),,recoveryui) \
+))
$(eval $(call gb_Library_set_include,svx,\
-I$(SRCDIR)/svx/inc \
@@ -82,10 +85,17 @@ $(eval $(call gb_Library_use_externals,svx,\
icu_headers \
))
+ifneq ($(ENABLE_WASM_STRIP_RECOVERYUI),TRUE)
+$(eval $(call gb_Library_add_exception_objects,svx,\
+ svx/source/dialog/docrecovery \
+ svx/source/unodraw/recoveryui \
+))
+endif
+
+ifneq ($(ENABLE_WASM_STRIP_ACCESSIBILITY),TRUE)
$(eval $(call gb_Library_add_exception_objects,svx,\
svx/source/accessibility/AccessibleControlShape \
svx/source/accessibility/AccessibleEmptyEditSource \
- svx/source/accessibility/AccessibleFrameSelector \
svx/source/accessibility/AccessibleGraphicShape \
svx/source/accessibility/AccessibleOLEShape \
svx/source/accessibility/AccessibleShape \
@@ -99,9 +109,14 @@ $(eval $(call gb_Library_add_exception_objects,svx,\
svx/source/accessibility/GraphCtlAccessibleContext \
svx/source/accessibility/ShapeTypeHandler \
svx/source/accessibility/SvxShapeTypes \
- svx/source/accessibility/charmapacc \
svx/source/accessibility/lookupcolorname \
- svx/source/accessibility/svxpixelctlaccessiblecontext \
+))
+endif
+
+$(eval $(call gb_Library_add_exception_objects,svx,\
+ svx/source/accessibility/AccessibleFrameSelector \
+ svx/source/accessibility/charmapacc \
+ svx/source/accessibility/svxpixelctlaccessiblecontext \
svx/source/accessibility/svxrectctaccessiblecontext \
svx/source/customshapes/EnhancedCustomShape3d \
svx/source/customshapes/EnhancedCustomShapeEngine \
@@ -127,7 +142,6 @@ $(eval $(call gb_Library_add_exception_objects,svx,\
svx/source/dialog/dialcontrol \
svx/source/dialog/dlgctl3d \
svx/source/dialog/dlgctrl \
- svx/source/dialog/docrecovery \
svx/source/dialog/fntctrl \
svx/source/dialog/fontwork \
svx/source/dialog/frmdirlbox \
@@ -259,7 +273,6 @@ $(eval $(call gb_Library_add_exception_objects,svx,\
svx/source/tbxctrls/tbxdrctl \
svx/source/tbxctrls/verttexttbxctrl \
svx/source/uitest/uiobject \
- svx/source/unodraw/recoveryui \
svx/source/unodraw/unoctabl \
svx/source/unodraw/UnoNamespaceMap \
svx/source/unodraw/unopool \
diff --git a/svx/Library_svxcore.mk b/svx/Library_svxcore.mk
index fd6dcfd6f455..b386f72ef15c 100644
--- a/svx/Library_svxcore.mk
+++ b/svx/Library_svxcore.mk
@@ -21,6 +21,10 @@ $(eval $(call gb_Library_Library,svxcore))
$(eval $(call gb_Library_set_componentfile,svxcore,svx/util/svxcore,services))
+$(eval $(call gb_Library_add_componentimpls,svxcore, \
+ $(if $(ENABLE_WASM_STRIP_BASIC_CALC_DRAW_MATH_IMPRESS),,draw) \
+))
+
$(eval $(call gb_Library_add_sdi_headers,svxcore,svx/sdi/svxslots))
$(eval $(call gb_Library_use_custom_headers,svxcore,\
diff --git a/svx/source/dialog/charmap.cxx b/svx/source/dialog/charmap.cxx
index fd72c77d52d6..3617e48a82c8 100644
--- a/svx/source/dialog/charmap.cxx
+++ b/svx/source/dialog/charmap.cxx
@@ -17,6 +17,8 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <config_wasm_strip.h>
+
#include <vcl/event.hxx>
#include <vcl/fontcharmap.hxx>
#include <vcl/svapp.hxx>
@@ -732,6 +734,7 @@ void SvxShowCharSet::SelectIndex(int nNewIndex, bool bFocus)
if( nSelectedIndex >= 0 )
{
getSelectedChar() = mxFontCharMap->GetCharFromIndex( nSelectedIndex );
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
if( m_xAccessible.is() )
{
svx::SvxShowCharSetItem* pItem = ImplGetItem(nSelectedIndex);
@@ -751,6 +754,7 @@ void SvxShowCharSet::SelectIndex(int nNewIndex, bool bFocus)
aNewAny <<= AccessibleStateType::SELECTED;
pItem->m_xItem->fireEvent( AccessibleEventId::STATE_CHANGED, aOldAny, aNewAny );
}
+#endif
}
aHighHdl.Call( this );
}
@@ -785,6 +789,7 @@ IMPL_LINK_NOARG(SvxShowCharSet, VscrollHdl, weld::ScrolledWindow&, void)
}
else if( nSelectedIndex > LastInView() )
{
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
if( m_xAccessible.is() )
{
css::uno::Any aOldAny, aNewAny;
@@ -795,6 +800,7 @@ IMPL_LINK_NOARG(SvxShowCharSet, VscrollHdl, weld::ScrolledWindow&, void)
m_xAccessible ->fireEvent( AccessibleEventId::CHILD, aOldAny, aNewAny );
}
}
+#endif
SelectIndex( (LastInView() - COLUMN_COUNT + 1) + (nSelectedIndex % COLUMN_COUNT) );
}
@@ -803,18 +809,22 @@ IMPL_LINK_NOARG(SvxShowCharSet, VscrollHdl, weld::ScrolledWindow&, void)
SvxShowCharSet::~SvxShowCharSet()
{
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
if (m_xAccessible.is())
{
m_aItems.clear();
m_xAccessible->clearCharSetControl();
m_xAccessible.clear();
}
+#endif
}
css::uno::Reference< XAccessible > SvxShowCharSet::CreateAccessible()
{
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
OSL_ENSURE(!m_xAccessible.is(),"Accessible already created!");
m_xAccessible = new svx::SvxShowCharSetAcc(this);
+#endif
return m_xAccessible;
}
@@ -823,7 +833,9 @@ svx::SvxShowCharSetItem* SvxShowCharSet::ImplGetItem( int _nPos )
ItemsMap::iterator aFind = m_aItems.find(_nPos);
if ( aFind == m_aItems.end() )
{
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
OSL_ENSURE(m_xAccessible.is(), "Who wants to create a child of my table without a parent?");
+#endif
auto xItem = std::make_shared<svx::SvxShowCharSetItem>(*this,
m_xAccessible.get(), sal::static_int_cast< sal_uInt16 >(_nPos));
aFind = m_aItems.emplace(_nPos, xItem).first;
diff --git a/svx/source/dialog/dlgctrl.cxx b/svx/source/dialog/dlgctrl.cxx
index f14cc1822a39..35737285a231 100644
--- a/svx/source/dialog/dlgctrl.cxx
+++ b/svx/source/dialog/dlgctrl.cxx
@@ -17,6 +17,8 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <config_wasm_strip.h>
+
#include <vcl/svapp.hxx>
#include <vcl/settings.hxx>
#include <vcl/virdev.hxx>
@@ -89,7 +91,9 @@ void SvxRectCtl::SetControlSettings(RectPoint eRpt, sal_uInt16 nBorder)
SvxRectCtl::~SvxRectCtl()
{
pBitmap.reset();
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
pAccContext.clear();
+#endif
}
void SvxRectCtl::Resize()
@@ -415,11 +419,13 @@ void SvxRectCtl::GetFocus()
{
Invalidate();
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
// Send accessibility event.
if (pAccContext.is())
{
pAccContext->FireChildFocus(GetActualRP());
}
+#endif
}
void SvxRectCtl::LoseFocus()
@@ -499,9 +505,11 @@ void SvxRectCtl::SetActualRP( RectPoint eNewRP )
Invalidate();
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
// notify accessibility object about change
if (pAccContext.is())
pAccContext->selectChild( eNewRP /* MT, bFireFocus */ );
+#endif
}
void SvxRectCtl::SetState( CTL_STATE nState )
@@ -552,7 +560,9 @@ tools::Rectangle SvxRectCtl::CalculateFocusRectangle( RectPoint eRectPoint ) con
Reference< XAccessible > SvxRectCtl::CreateAccessible()
{
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
pAccContext = new SvxRectCtlAccessibleContext(this);
+#endif
return pAccContext;
}
@@ -572,8 +582,10 @@ void SvxRectCtl::DoCompletelyDisable(bool bNew)
css::uno::Reference< css::accessibility::XAccessible > SvxPixelCtl::CreateAccessible()
{
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
if (!m_xAccess.is())
m_xAccess = new SvxPixelCtlAccessible(this);
+#endif
return m_xAccess;
}
@@ -673,10 +685,14 @@ bool SvxPixelCtl::MouseButtonDown( const MouseEvent& rMEvt )
tools::Long nIndex = ShowPosition(rMEvt.GetPosPixel());
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
if(m_xAccess.is())
{
m_xAccess->NotifyChild(nIndex,true, true);
}
+#else
+ (void)nIndex;
+#endif
return true;
}
@@ -816,6 +832,7 @@ bool SvxPixelCtl::KeyInput( const KeyEvent& rKEvt )
default:
return CustomWidgetController::KeyInput( rKEvt );
}
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
if(m_xAccess.is())
{
tools::Long nIndex = GetFocusPosIndex();
@@ -837,6 +854,9 @@ bool SvxPixelCtl::KeyInput( const KeyEvent& rKEvt )
break;
}
}
+#else
+ (void)bFocusPosChanged;
+#endif
return true;
}
else
@@ -850,10 +870,12 @@ void SvxPixelCtl::GetFocus()
{
Invalidate(implCalFocusRect(aFocusPosition));
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
if (m_xAccess.is())
{
m_xAccess->NotifyChild(GetFocusPosIndex(),true,false);
}
+#endif
}
void SvxPixelCtl::LoseFocus()
diff --git a/svx/source/dialog/frmsel.cxx b/svx/source/dialog/frmsel.cxx
index 117bec6f6784..f7d470896cc5 100644
--- a/svx/source/dialog/frmsel.cxx
+++ b/svx/source/dialog/frmsel.cxx
@@ -17,6 +17,8 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <config_wasm_strip.h>
+
#include <sal/config.h>
#include <o3tl/safeint.hxx>
@@ -236,8 +238,10 @@ FrameSelectorImpl::FrameSelectorImpl( FrameSelector& rFrameSel ) :
mbBLTR( false ),
mbFullRepaint( true ),
mbAutoSelect( true ),
- mbHCMode( false ),
- maChildVec( 8 )
+ mbHCMode( false )
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
+ ,maChildVec( 8 )
+#endif
{
maAllBorders.resize( FRAMEBORDERTYPE_COUNT, nullptr );
maAllBorders[ GetIndexFromFrameBorderType( FrameBorderType::Left ) ] = &maLeft;
@@ -269,11 +273,12 @@ FrameSelectorImpl::FrameSelectorImpl( FrameSelector& rFrameSel ) :
}
FrameSelectorImpl::~FrameSelectorImpl()
-
{
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
for( auto& rpChild : maChildVec )
if( rpChild.is() )
rpChild->Invalidate();
+#endif
}
// initialization
@@ -754,17 +759,24 @@ void FrameSelectorImpl::SetBorderState( FrameBorder& rBorder, FrameBorderState e
Any aNew;
Any& rMod = eState == FrameBorderState::Show ? aNew : aOld;
rMod <<= AccessibleStateType::CHECKED;
+
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
rtl::Reference< a11y::AccFrameSelectorChild > xRet;
size_t nVecIdx = static_cast< size_t >( rBorder.GetType() );
if( GetBorder(rBorder.GetType()).IsEnabled() && (1 <= nVecIdx) && (nVecIdx <= maChildVec.size()) )
xRet = maChildVec[ --nVecIdx ].get();
+#endif
if( eState == FrameBorderState::Show )
SetBorderCoreStyle( rBorder, &maCurrStyle );
else
rBorder.SetState( eState );
+
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
if (xRet.is())
xRet->NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOld, aNew );
+#endif
+
DoInvalidate( true );
}
@@ -838,8 +850,10 @@ void FrameSelector::SetDrawingArea(weld::DrawingArea* pDrawingArea)
FrameSelector::~FrameSelector()
{
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
if( mxAccess.is() )
mxAccess->Invalidate();
+#endif
}
void FrameSelector::Initialize( FrameSelFlags nFlags )
@@ -972,6 +986,7 @@ bool FrameSelector::IsBorderSelected( FrameBorderType eBorder ) const
void FrameSelector::SelectBorder( FrameBorderType eBorder )
{
mxImpl->SelectBorder( mxImpl->GetBorderAccess( eBorder ), true/*bSelect*/ );
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
// MT: bFireFox as API parameter is ugly...
// if (bFocus)
{
@@ -983,6 +998,7 @@ void FrameSelector::SelectBorder( FrameBorderType eBorder )
xRet->NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
}
}
+#endif
}
bool FrameSelector::IsAnyBorderSelected() const
@@ -1026,8 +1042,10 @@ SvxBorderLineStyle FrameSelector::getCurrentStyleLineStyle() const
// accessibility
Reference< XAccessible > FrameSelector::CreateAccessible()
{
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
if( !mxAccess.is() )
mxAccess = new a11y::AccFrameSelector(*this);
+#endif
return mxAccess;
}
diff --git a/svx/source/dialog/graphctl.cxx b/svx/source/dialog/graphctl.cxx
index ba44840a9b16..136eae27b52c 100644
--- a/svx/source/dialog/graphctl.cxx
+++ b/svx/source/dialog/graphctl.cxx
@@ -17,6 +17,8 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <config_wasm_strip.h>
+
#include <svl/itempool.hxx>
#include <vcl/settings.hxx>
#include <vcl/ptrstyle.hxx>
@@ -74,11 +76,14 @@ GraphCtrl::~GraphCtrl()
{
aUpdateIdle.Stop();
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
if( mpAccContext.is() )
{
mpAccContext->disposing();
mpAccContext.clear();
}
+#endif
+
pView.reset();
pModel.reset();
pUserCall.reset();
@@ -142,9 +147,11 @@ void GraphCtrl::InitSdrModel()
pView->SetBufferedOutputAllowed(true);
pView->SetBufferedOverlayAllowed(true);
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
// Tell the accessibility object about the changes.
if (mpAccContext.is())
mpAccContext->setModelAndView (pModel.get(), pView.get());
+#endif
}
void GraphCtrl::SetGraphic( const Graphic& rGraphic, bool bNewModel )
@@ -829,12 +836,14 @@ Point GraphCtrl::GetPositionInDialog() const
css::uno::Reference< css::accessibility::XAccessible > GraphCtrl::CreateAccessible()
{
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
if(mpAccContext == nullptr )
{
// Disable accessibility if no model/view data available
if (pView && pModel)
mpAccContext = new SvxGraphCtrlAccessibleContext(*this);
}
+#endif
return mpAccContext;
}
diff --git a/svx/source/dialog/searchcharmap.cxx b/svx/source/dialog/searchcharmap.cxx
index 1cdb3cfc082a..201e018d5652 100644
--- a/svx/source/dialog/searchcharmap.cxx
+++ b/svx/source/dialog/searchcharmap.cxx
@@ -17,6 +17,8 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <config_wasm_strip.h>
+
#include <vcl/event.hxx>
#include <vcl/svapp.hxx>
#include <vcl/settings.hxx>
@@ -394,7 +396,9 @@ svx::SvxShowCharSetItem* SvxSearchCharSet::ImplGetItem( int _nPos )
ItemsMap::iterator aFind = m_aItems.find(_nPos);
if ( aFind == m_aItems.end() )
{
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
OSL_ENSURE(m_xAccessible.is(), "Who wants to create a child of my table without a parent?");
+#endif
auto xItem = std::make_shared<svx::SvxShowCharSetItem>(*this,
m_xAccessible.get(), sal::static_int_cast< sal_uInt16 >(_nPos));
aFind = m_aItems.emplace(_nPos, xItem).first;
diff --git a/svx/source/dialog/weldeditview.cxx b/svx/source/dialog/weldeditview.cxx
index 341a7cc58a67..d3f3c3f79c9e 100644
--- a/svx/source/dialog/weldeditview.cxx
+++ b/svx/source/dialog/weldeditview.cxx
@@ -17,6 +17,8 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <config_wasm_strip.h>
+
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <com/sun/star/accessibility/AccessibleRole.hpp>
#include <com/sun/star/accessibility/AccessibleStateType.hpp>
@@ -846,18 +848,22 @@ public:
css::uno::Reference<css::accessibility::XAccessible> WeldEditView::CreateAccessible()
{
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
if (!m_xAccessible.is())
m_xAccessible.set(new WeldEditAccessible(this));
+#endif
return m_xAccessible;
}
WeldEditView::~WeldEditView()
{
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
if (m_xAccessible.is())
{
m_xAccessible->ClearWin(); // make Accessible nonfunctional
m_xAccessible.clear();
}
+#endif
}
bool WeldViewForwarder::IsValid() const { return m_rEditAcc.GetEditView() != nullptr; }
@@ -1566,14 +1572,18 @@ void WeldEditView::SetDrawingArea(weld::DrawingArea* pDrawingArea)
pDrawingArea->set_cursor(PointerStyle::Text);
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
InitAccessible();
+#endif
}
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
void WeldEditView::InitAccessible()
{
if (m_xAccessible.is())
m_xAccessible->Init(GetEditEngine(), GetEditView());
}
+#endif
int WeldEditView::GetSurroundingText(OUString& rSurrounding)
{
@@ -1603,6 +1613,7 @@ void WeldEditView::GetFocus()
weld::CustomWidgetController::GetFocus();
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
if (m_xAccessible.is())
{
// Note: will implicitly send the AccessibleStateType::FOCUSED event
@@ -1610,6 +1621,7 @@ void WeldEditView::GetFocus()
if (pHelper)
pHelper->SetFocus();
}
+#endif
}
void WeldEditView::LoseFocus()
@@ -1617,6 +1629,7 @@ void WeldEditView::LoseFocus()
weld::CustomWidgetController::LoseFocus();
Invalidate(); // redraw without cursor
+#if !ENABLE_WASM_STRIP_ACCESSIBILITY
if (m_xAccessible.is())
{
// Note: will implicitly send the AccessibleStateType::FOCUSED event
@@ -1624,6 +1637,7 @@ void WeldEditView::LoseFocus()
if (pHelper)
pHelper->SetFocus(false);
}
+#endif
}
bool WeldEditView::CanFocus() const { return true; }
diff --git a/svx/util/svx.component b/svx/util/svx.component
index db47c36fc1e7..c655da210995 100644
--- a/svx/util/svx.component
+++ b/svx/util/svx.component
@@ -31,6 +31,7 @@
<implementation name="com.sun.star.comp.svx.RecoveryUI"
constructor="com_sun_star_comp_svx_RecoveryUI_get_implementation">
<service name="com.sun.star.dialog.RecoveryUI"/>
+ <optional/>
</implementation>
<implementation name="com.sun.star.comp.svx.CrashReportUI"
constructor="com_sun_star_comp_svx_CrashReportUI_get_implementation">
diff --git a/svx/util/svx.component.recoveryui b/svx/util/svx.component.recoveryui
new file mode 100644
index 000000000000..2a3f4b0aed89
--- /dev/null
+++ b/svx/util/svx.component.recoveryui
@@ -0,0 +1,7 @@
+# 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/.
+
+com.sun.star.comp.svx.RecoveryUI
diff --git a/svx/util/svxcore.component b/svx/util/svxcore.component
index d8989b71f4e9..d3b0942f4a84 100644
--- a/svx/util/svxcore.component
+++ b/svx/util/svxcore.component
@@ -21,6 +21,7 @@
<implementation name="com.sun.star.comp.Draw.GraphicExporter"
constructor="com_sun_star_comp_Draw_GraphicExporter_get_implementation">
<service name="com.sun.star.drawing.GraphicExportFilter"/>
+ <optional/>
</implementation>
<implementation name="com.sun.star.comp.svx.ExtrusionDepthController"
constructor="com_sun_star_comp_svx_ExtrusionDepthController_get_implementation">
diff --git a/svx/util/svxcore.component.draw b/svx/util/svxcore.component.draw
new file mode 100644
index 000000000000..5192ae34fd88
--- /dev/null
+++ b/svx/util/svxcore.component.draw
@@ -0,0 +1,7 @@
+# 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/.
+
+com.sun.star.comp.Draw.GraphicExporter