1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19 #include "ParaPropertyPanel.hxx"
20 #include <sfx2/dispatch.hxx>
21 #include <sfx2/module.hxx>
22 #include <sfx2/viewfrm.hxx>
23 #include <sfx2/weldutils.hxx>
24 #include <editeng/lrspitem.hxx>
25 #include <editeng/ulspitem.hxx>
26 #include <svx/dlgctrl.hxx>
27 #include <svx/svxids.hrc>
28 #include <svl/intitem.hxx>
29 #include <sfx2/objsh.hxx>
30 #include <svtools/unitconv.hxx>
31 #include <sal/log.hxx>
32
33 #include <com/sun/star/lang/IllegalArgumentException.hpp>
34
35 using namespace css;
36 using namespace css::uno;
37
38 namespace svx::sidebar {
39 #define DEFAULT_VALUE 0
40
41 #define MAX_DURCH 5670
42
43 #define MAX_SW 1709400
44 #define MAX_SC_SD 116220200
45 #define NEGA_MAXVALUE -10000000
46
Create(weld::Widget * pParent,const css::uno::Reference<css::frame::XFrame> & rxFrame,SfxBindings * pBindings,const css::uno::Reference<css::ui::XSidebar> & rxSidebar)47 std::unique_ptr<PanelLayout> ParaPropertyPanel::Create (
48 weld::Widget* pParent,
49 const css::uno::Reference<css::frame::XFrame>& rxFrame,
50 SfxBindings* pBindings,
51 const css::uno::Reference<css::ui::XSidebar>& rxSidebar)
52 {
53 if (pParent == nullptr)
54 throw lang::IllegalArgumentException("no parent Window given to ParaPropertyPanel::Create", nullptr, 0);
55 if ( ! rxFrame.is())
56 throw lang::IllegalArgumentException("no XFrame given to ParaPropertyPanel::Create", nullptr, 1);
57 if (pBindings == nullptr)
58 throw lang::IllegalArgumentException("no SfxBindings given to ParaPropertyPanel::Create", nullptr, 2);
59
60 return std::make_unique<ParaPropertyPanel>(pParent, rxFrame, pBindings, rxSidebar);
61 }
62
HandleContextChange(const vcl::EnumContext & rContext)63 void ParaPropertyPanel::HandleContextChange (
64 const vcl::EnumContext& rContext)
65 {
66 if (maContext == rContext)
67 {
68 // Nothing to do.
69 return;
70 }
71
72 maContext = rContext;
73 switch (maContext.GetCombinedContext_DI())
74 {
75 case CombinedEnumContext(Application::Calc, Context::DrawText):
76 case CombinedEnumContext(Application::WriterVariants, Context::DrawText):
77 mxTBxVertAlign->show();
78 mxTBxBackColor->hide();
79 mxTBxNumBullet->hide();
80 ReSize();
81 break;
82
83 case CombinedEnumContext(Application::DrawImpress, Context::Draw):
84 case CombinedEnumContext(Application::DrawImpress, Context::TextObject):
85 case CombinedEnumContext(Application::DrawImpress, Context::Graphic):
86 case CombinedEnumContext(Application::DrawImpress, Context::DrawText):
87 case CombinedEnumContext(Application::DrawImpress, Context::Table):
88 mxTBxVertAlign->show();
89 mxTBxBackColor->hide();
90 mxTBxNumBullet->hide();
91 ReSize();
92 break;
93
94 case CombinedEnumContext(Application::WriterVariants, Context::Default):
95 case CombinedEnumContext(Application::WriterVariants, Context::Text):
96 mxTBxVertAlign->hide();
97 mxTBxBackColor->show();
98 mxTBxNumBullet->show();
99 ReSize();
100 break;
101
102 case CombinedEnumContext(Application::WriterVariants, Context::Table):
103 mxTBxVertAlign->show();
104 mxTBxBackColor->show();
105 mxTBxNumBullet->show();
106 ReSize();
107 break;
108
109 case CombinedEnumContext(Application::WriterVariants, Context::Annotation):
110 mxTBxVertAlign->hide();
111 mxTBxBackColor->hide();
112 mxTBxNumBullet->hide();
113 ReSize();
114 break;
115
116 case CombinedEnumContext(Application::Calc, Context::EditCell):
117 case CombinedEnumContext(Application::Calc, Context::Cell):
118 case CombinedEnumContext(Application::Calc, Context::Pivot):
119 case CombinedEnumContext(Application::DrawImpress, Context::Text):
120 case CombinedEnumContext(Application::DrawImpress, Context::OutlineText):
121 break;
122
123 default:
124 break;
125 }
126 }
127
ReSize()128 void ParaPropertyPanel::ReSize()
129 {
130 if (mxSidebar.is())
131 mxSidebar->requestLayout();
132 }
133
InitToolBoxIndent()134 void ParaPropertyPanel::InitToolBoxIndent()
135 {
136 Link<weld::MetricSpinButton&,void> aLink = LINK( this, ParaPropertyPanel, ModifyIndentHdl_Impl );
137 mxLeftIndent->connect_value_changed( aLink );
138 mxRightIndent->connect_value_changed( aLink );
139 mxFLineIndent->connect_value_changed( aLink );
140
141 m_eLRSpaceUnit = maLRSpaceControl.GetCoreMetric();
142 }
143
InitToolBoxSpacing()144 void ParaPropertyPanel::InitToolBoxSpacing()
145 {
146 Link<weld::MetricSpinButton&,void> aLink = LINK( this, ParaPropertyPanel, ULSpaceHdl_Impl );
147 mxTopDist->connect_value_changed(aLink);
148 mxBottomDist->connect_value_changed( aLink );
149
150 m_eULSpaceUnit = maULSpaceControl.GetCoreMetric();
151 }
152
initial()153 void ParaPropertyPanel::initial()
154 {
155 limitMetricWidths();
156
157 //toolbox
158 InitToolBoxIndent();
159 InitToolBoxSpacing();
160 }
161
162 // for Paragraph Indent
IMPL_LINK_NOARG(ParaPropertyPanel,ModifyIndentHdl_Impl,weld::MetricSpinButton &,void)163 IMPL_LINK_NOARG( ParaPropertyPanel, ModifyIndentHdl_Impl, weld::MetricSpinButton&, void)
164 {
165 SvxLRSpaceItem aMargin( SID_ATTR_PARA_LRSPACE );
166 aMargin.SetTextLeft(mxLeftIndent->GetCoreValue(m_eLRSpaceUnit));
167 aMargin.SetRight(mxRightIndent->GetCoreValue(m_eLRSpaceUnit));
168 aMargin.SetTextFirstLineOffset(static_cast<short>(mxFLineIndent->GetCoreValue(m_eLRSpaceUnit)));
169
170 GetBindings()->GetDispatcher()->ExecuteList(
171 SID_ATTR_PARA_LRSPACE, SfxCallMode::RECORD, { &aMargin });
172 }
173
174
175 // for Paragraph Spacing
IMPL_LINK_NOARG(ParaPropertyPanel,ULSpaceHdl_Impl,weld::MetricSpinButton &,void)176 IMPL_LINK_NOARG( ParaPropertyPanel, ULSpaceHdl_Impl, weld::MetricSpinButton&, void)
177 {
178 SvxULSpaceItem aMargin( SID_ATTR_PARA_ULSPACE );
179 aMargin.SetUpper( static_cast<sal_uInt16>(mxTopDist->GetCoreValue(m_eULSpaceUnit)));
180 aMargin.SetLower( static_cast<sal_uInt16>(mxBottomDist->GetCoreValue(m_eULSpaceUnit)));
181
182 GetBindings()->GetDispatcher()->ExecuteList(
183 SID_ATTR_PARA_ULSPACE, SfxCallMode::RECORD, { &aMargin });
184 }
185
186 // for Paragraph State change
NotifyItemUpdate(sal_uInt16 nSID,SfxItemState eState,const SfxPoolItem * pState)187 void ParaPropertyPanel::NotifyItemUpdate(
188 sal_uInt16 nSID,
189 SfxItemState eState,
190 const SfxPoolItem* pState)
191 {
192 switch (nSID)
193 {
194 case SID_ATTR_METRIC:
195 {
196 m_eMetricUnit = GetCurrentUnit(eState,pState);
197 if( m_eMetricUnit!=m_last_eMetricUnit )
198 {
199 mxLeftIndent->SetFieldUnit(m_eMetricUnit);
200 mxRightIndent->SetFieldUnit(m_eMetricUnit);
201 mxFLineIndent->SetFieldUnit(m_eMetricUnit);
202 mxTopDist->SetFieldUnit(m_eMetricUnit);
203 mxBottomDist->SetFieldUnit(m_eMetricUnit);
204
205 limitMetricWidths();
206 }
207 m_last_eMetricUnit = m_eMetricUnit;
208 }
209 break;
210
211 case SID_ATTR_PARA_LRSPACE:
212 StateChangedIndentImpl( eState, pState );
213 break;
214
215 case SID_ATTR_PARA_ULSPACE:
216 StateChangedULImpl( eState, pState );
217 break;
218 }
219 }
220
StateChangedIndentImpl(SfxItemState eState,const SfxPoolItem * pState)221 void ParaPropertyPanel::StateChangedIndentImpl( SfxItemState eState, const SfxPoolItem* pState )
222 {
223 switch (maContext.GetCombinedContext_DI())
224 {
225
226 case CombinedEnumContext(Application::WriterVariants, Context::DrawText):
227 case CombinedEnumContext(Application::WriterVariants, Context::Annotation):
228 case CombinedEnumContext(Application::Calc, Context::DrawText):
229 case CombinedEnumContext(Application::DrawImpress, Context::DrawText):
230 case CombinedEnumContext(Application::DrawImpress, Context::Draw):
231 case CombinedEnumContext(Application::DrawImpress, Context::TextObject):
232 case CombinedEnumContext(Application::DrawImpress, Context::Graphic):
233 case CombinedEnumContext(Application::DrawImpress, Context::Table):
234 {
235 mxLeftIndent->set_min( DEFAULT_VALUE, FieldUnit::NONE );
236 mxRightIndent->set_min( DEFAULT_VALUE, FieldUnit::NONE );
237 mxFLineIndent->set_min( DEFAULT_VALUE, FieldUnit::NONE );
238 }
239 break;
240 case CombinedEnumContext(Application::WriterVariants, Context::Default):
241 case CombinedEnumContext(Application::WriterVariants, Context::Text):
242 case CombinedEnumContext(Application::WriterVariants, Context::Table):
243 {
244 mxLeftIndent->set_min( NEGA_MAXVALUE, FieldUnit::MM_100TH );
245 mxRightIndent->set_min( NEGA_MAXVALUE, FieldUnit::MM_100TH );
246 mxFLineIndent->set_min( NEGA_MAXVALUE, FieldUnit::MM_100TH );
247 }
248 break;
249 }
250
251 bool bDisabled = eState == SfxItemState::DISABLED;
252 mxLeftIndent->set_sensitive(!bDisabled);
253 mxRightIndent->set_sensitive(!bDisabled);
254 mxFLineIndent->set_sensitive(!bDisabled);
255
256 if (pState && eState >= SfxItemState::DEFAULT)
257 {
258 const SvxLRSpaceItem* pSpace = static_cast<const SvxLRSpaceItem*>(pState);
259 maTxtLeft = pSpace->GetTextLeft();
260 maTxtLeft = OutputDevice::LogicToLogic( maTxtLeft, m_eLRSpaceUnit, MapUnit::Map100thMM );
261 maTxtLeft = OutputDevice::LogicToLogic( maTxtLeft, MapUnit::Map100thMM, MapUnit::MapTwip );
262
263 tools::Long aTxtRight = pSpace->GetRight();
264 aTxtRight = OutputDevice::LogicToLogic( aTxtRight, m_eLRSpaceUnit, MapUnit::Map100thMM );
265 aTxtRight = OutputDevice::LogicToLogic( aTxtRight, MapUnit::Map100thMM, MapUnit::MapTwip );
266
267 tools::Long aTxtFirstLineOfst = pSpace->GetTextFirstLineOffset();
268 aTxtFirstLineOfst = OutputDevice::LogicToLogic( aTxtFirstLineOfst, m_eLRSpaceUnit, MapUnit::Map100thMM );
269 aTxtFirstLineOfst = OutputDevice::LogicToLogic( aTxtFirstLineOfst, MapUnit::Map100thMM, MapUnit::MapTwip );
270
271 tools::Long nVal = OutputDevice::LogicToLogic( maTxtLeft, MapUnit::MapTwip, MapUnit::Map100thMM );
272 nVal = static_cast<tools::Long>(mxLeftIndent->normalize( nVal ));
273
274 if ( maContext.GetCombinedContext_DI() != CombinedEnumContext(Application::WriterVariants, Context::Text)
275 && maContext.GetCombinedContext_DI() != CombinedEnumContext(Application::WriterVariants, Context::Default)
276 && maContext.GetCombinedContext_DI() != CombinedEnumContext(Application::WriterVariants, Context::Table))
277 {
278 mxFLineIndent->set_min( nVal*-1, FieldUnit::MM_100TH );
279 }
280
281 tools::Long nrVal = OutputDevice::LogicToLogic( aTxtRight, MapUnit::MapTwip, MapUnit::Map100thMM );
282 nrVal = static_cast<tools::Long>(mxRightIndent->normalize( nrVal ));
283
284 switch (maContext.GetCombinedContext_DI())
285 {
286 case CombinedEnumContext(Application::WriterVariants, Context::DrawText):
287 case CombinedEnumContext(Application::WriterVariants, Context::Text):
288 case CombinedEnumContext(Application::WriterVariants, Context::Default):
289 case CombinedEnumContext(Application::WriterVariants, Context::Table):
290 case CombinedEnumContext(Application::WriterVariants, Context::Annotation):
291 {
292 mxLeftIndent->set_max( MAX_SW - nrVal, FieldUnit::MM_100TH );
293 mxRightIndent->set_max( MAX_SW - nVal, FieldUnit::MM_100TH );
294 mxFLineIndent->set_max( MAX_SW - nVal - nrVal, FieldUnit::MM_100TH );
295 }
296 break;
297 case CombinedEnumContext(Application::DrawImpress, Context::DrawText):
298 case CombinedEnumContext(Application::DrawImpress, Context::Draw):
299 case CombinedEnumContext(Application::DrawImpress, Context::Table):
300 case CombinedEnumContext(Application::DrawImpress, Context::TextObject):
301 case CombinedEnumContext(Application::DrawImpress, Context::Graphic):
302 {
303 mxLeftIndent->set_max( MAX_SC_SD - nrVal, FieldUnit::MM_100TH );
304 mxRightIndent->set_max( MAX_SC_SD - nVal, FieldUnit::MM_100TH );
305 mxFLineIndent->set_max( MAX_SC_SD - nVal - nrVal, FieldUnit::MM_100TH );
306 }
307 }
308
309 mxLeftIndent->set_value( nVal, FieldUnit::MM_100TH );
310 mxRightIndent->set_value( nrVal, FieldUnit::MM_100TH );
311
312 tools::Long nfVal = OutputDevice::LogicToLogic( aTxtFirstLineOfst, MapUnit::MapTwip, MapUnit::Map100thMM );
313 nfVal = static_cast<tools::Long>(mxFLineIndent->normalize( nfVal ));
314 mxFLineIndent->set_value( nfVal, FieldUnit::MM_100TH );
315 }
316 else if (eState != SfxItemState::DISABLED )
317 {
318 mxLeftIndent->set_text("");
319 mxRightIndent->set_text("");
320 mxFLineIndent->set_text("");
321 }
322
323 limitMetricWidths();
324 }
325
StateChangedULImpl(SfxItemState eState,const SfxPoolItem * pState)326 void ParaPropertyPanel::StateChangedULImpl( SfxItemState eState, const SfxPoolItem* pState )
327 {
328 mxTopDist->set_max( mxTopDist->normalize( MAX_DURCH ), MapToFieldUnit(m_eULSpaceUnit) );
329 mxBottomDist->set_max( mxBottomDist->normalize( MAX_DURCH ), MapToFieldUnit(m_eULSpaceUnit) );
330
331 bool bDisabled = eState == SfxItemState::DISABLED;
332 mxTopDist->set_sensitive(!bDisabled);
333 mxBottomDist->set_sensitive(!bDisabled);
334
335 if( pState && eState >= SfxItemState::DEFAULT )
336 {
337 const SvxULSpaceItem* pOldItem = static_cast<const SvxULSpaceItem*>(pState);
338
339 maUpper = pOldItem->GetUpper();
340 maUpper = OutputDevice::LogicToLogic( maUpper, m_eULSpaceUnit, MapUnit::Map100thMM );
341 maUpper = OutputDevice::LogicToLogic( maUpper, MapUnit::Map100thMM, MapUnit::MapTwip );
342
343 maLower = pOldItem->GetLower();
344 maLower = OutputDevice::LogicToLogic( maLower, m_eULSpaceUnit, MapUnit::Map100thMM );
345 maLower = OutputDevice::LogicToLogic( maLower, MapUnit::Map100thMM, MapUnit::MapTwip );
346
347 sal_Int64 nVal = OutputDevice::LogicToLogic( maUpper, MapUnit::MapTwip, MapUnit::Map100thMM );
348 nVal = mxTopDist->normalize( nVal );
349 mxTopDist->set_value( nVal, FieldUnit::MM_100TH );
350
351 nVal = OutputDevice::LogicToLogic( maLower, MapUnit::MapTwip, MapUnit::Map100thMM );
352 nVal = mxBottomDist->normalize( nVal );
353 mxBottomDist->set_value( nVal, FieldUnit::MM_100TH );
354 }
355 else if (eState != SfxItemState::DISABLED )
356 {
357 mxTopDist->set_text("");
358 mxBottomDist->set_text("");
359 }
360 limitMetricWidths();
361 }
362
GetCurrentUnit(SfxItemState eState,const SfxPoolItem * pState)363 FieldUnit ParaPropertyPanel::GetCurrentUnit( SfxItemState eState, const SfxPoolItem* pState )
364 {
365 FieldUnit eUnit = FieldUnit::NONE;
366
367 if ( pState && eState >= SfxItemState::DEFAULT )
368 eUnit = static_cast<FieldUnit>(static_cast<const SfxUInt16Item*>(pState)->GetValue());
369 else
370 {
371 SfxViewFrame* pFrame = SfxViewFrame::Current();
372 SfxObjectShell* pSh = nullptr;
373 if ( pFrame )
374 pSh = pFrame->GetObjectShell();
375 if ( pSh ) //the object shell is not always available during reload
376 {
377 SfxModule* pModule = pSh->GetModule();
378 if ( pModule )
379 {
380 const SfxPoolItem* pItem = pModule->GetItem( SID_ATTR_METRIC );
381 if ( pItem )
382 eUnit = static_cast<FieldUnit>(static_cast<const SfxUInt16Item*>(pItem)->GetValue());
383 }
384 else
385 {
386 SAL_WARN("svx.sidebar", "GetModuleFieldUnit(): no module found");
387 }
388 }
389 }
390
391 return eUnit;
392 }
393
ParaPropertyPanel(weld::Widget * pParent,const css::uno::Reference<css::frame::XFrame> & rxFrame,SfxBindings * pBindings,const css::uno::Reference<css::ui::XSidebar> & rxSidebar)394 ParaPropertyPanel::ParaPropertyPanel(weld::Widget* pParent,
395 const css::uno::Reference<css::frame::XFrame>& rxFrame,
396 SfxBindings* pBindings,
397 const css::uno::Reference<css::ui::XSidebar>& rxSidebar)
398 : PanelLayout(pParent, "ParaPropertyPanel", "svx/ui/sidebarparagraph.ui"),
399 //Alignment
400 mxTBxHorzAlign(m_xBuilder->weld_toolbar("horizontalalignment")),
401 mxHorzAlignDispatch(new ToolbarUnoDispatcher(*mxTBxHorzAlign, *m_xBuilder, rxFrame)),
402 mxTBxVertAlign(m_xBuilder->weld_toolbar("verticalalignment")),
403 mxVertAlignDispatch(new ToolbarUnoDispatcher(*mxTBxVertAlign, *m_xBuilder, rxFrame)),
404 //NumBullet&Backcolor
405 mxTBxNumBullet(m_xBuilder->weld_toolbar("numberbullet")),
406 mxNumBulletDispatch(new ToolbarUnoDispatcher(*mxTBxNumBullet, *m_xBuilder, rxFrame)),
407 mxTBxBackColor(m_xBuilder->weld_toolbar("backgroundcolor")),
408 mxBackColorDispatch(new ToolbarUnoDispatcher(*mxTBxBackColor, *m_xBuilder, rxFrame)),
409 mxTBxWriteDirection(m_xBuilder->weld_toolbar("writedirection")),
410 mxWriteDirectionDispatch(new ToolbarUnoDispatcher(*mxTBxWriteDirection, *m_xBuilder, rxFrame)),
411 mxTBxParaSpacing(m_xBuilder->weld_toolbar("paraspacing")),
412 mxParaSpacingDispatch(new ToolbarUnoDispatcher(*mxTBxParaSpacing, *m_xBuilder, rxFrame)),
413 mxTBxLineSpacing(m_xBuilder->weld_toolbar("linespacing")),
414 mxLineSpacingDispatch(new ToolbarUnoDispatcher(*mxTBxLineSpacing, *m_xBuilder, rxFrame)),
415 mxTBxIndent(m_xBuilder->weld_toolbar("indent")),
416 mxIndentDispatch(new ToolbarUnoDispatcher(*mxTBxIndent, *m_xBuilder, rxFrame)),
417 //Paragraph spacing
418 mxTopDist(new SvxRelativeField(m_xBuilder->weld_metric_spin_button("aboveparaspacing", FieldUnit::CM))),
419 mxBottomDist(new SvxRelativeField(m_xBuilder->weld_metric_spin_button("belowparaspacing", FieldUnit::CM))),
420 mxLeftIndent(new SvxRelativeField(m_xBuilder->weld_metric_spin_button("beforetextindent", FieldUnit::CM))),
421 mxRightIndent(new SvxRelativeField(m_xBuilder->weld_metric_spin_button("aftertextindent", FieldUnit::CM))),
422 mxFLineIndent(new SvxRelativeField(m_xBuilder->weld_metric_spin_button("firstlineindent", FieldUnit::CM))),
423 maTxtLeft (0),
424 maUpper (0),
425 maLower (0),
426 m_eMetricUnit(FieldUnit::NONE),
427 m_last_eMetricUnit(FieldUnit::NONE),
428 m_eLRSpaceUnit(),
429 m_eULSpaceUnit(),
430 maLRSpaceControl (SID_ATTR_PARA_LRSPACE,*pBindings,*this),
431 maULSpaceControl (SID_ATTR_PARA_ULSPACE, *pBindings,*this),
432 m_aMetricCtl (SID_ATTR_METRIC, *pBindings,*this),
433 maContext(),
434 mpBindings(pBindings),
435 mxSidebar(rxSidebar)
436 {
437 // tdf#130197 We want to give this toolbar a width as if it had 5 entries
438 // (the parent grid has homogeneous width set so both columns will have the
439 // same width). This ParaPropertyPanel is a default panel in writer, so
440 // subsequent panels, e.g. the TableEditPanel panel can have up to 5
441 // entries in each of its column and remain in alignment with this panel
442 padWidthForSidebar(*mxTBxIndent, rxFrame);
443
444 initial();
445 m_aMetricCtl.RequestUpdate();
446 }
447
limitMetricWidths()448 void ParaPropertyPanel::limitMetricWidths()
449 {
450 limitWidthForSidebar(*mxTopDist);
451 limitWidthForSidebar(*mxBottomDist);
452 limitWidthForSidebar(*mxLeftIndent);
453 limitWidthForSidebar(*mxRightIndent);
454 limitWidthForSidebar(*mxFLineIndent);
455 }
456
~ParaPropertyPanel()457 ParaPropertyPanel::~ParaPropertyPanel()
458 {
459 mxHorzAlignDispatch.reset();
460 mxTBxHorzAlign.reset();
461
462 mxVertAlignDispatch.reset();
463 mxTBxVertAlign.reset();
464
465 mxNumBulletDispatch.reset();
466 mxTBxNumBullet.reset();
467
468 mxBackColorDispatch.reset();
469 mxTBxBackColor.reset();
470
471 mxWriteDirectionDispatch.reset();
472 mxTBxWriteDirection.reset();
473
474 mxParaSpacingDispatch.reset();
475 mxTBxParaSpacing.reset();
476
477 mxLineSpacingDispatch.reset();
478 mxTBxLineSpacing.reset();
479
480 mxIndentDispatch.reset();
481 mxTBxIndent.reset();
482
483 mxTopDist.reset();
484 mxBottomDist.reset();
485 mxLeftIndent.reset();
486 mxRightIndent.reset();
487 mxFLineIndent.reset();
488
489 maLRSpaceControl.dispose();
490 maULSpaceControl.dispose();
491 m_aMetricCtl.dispose();
492 }
493
494 } // end of namespace svx::sidebar
495
496 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
497