1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #include <TextObjectBar.hxx>
22 #include <svx/svxids.hrc>
24 #include <com/sun/star/linguistic2/XThesaurus.hpp>
26 #include <editeng/eeitem.hxx>
27 #include <editeng/udlnitem.hxx>
28 #include <editeng/ulspitem.hxx>
29 #include <editeng/lspcitem.hxx>
30 #include <editeng/adjustitem.hxx>
31 #include <editeng/editview.hxx>
32 #include <editeng/outliner.hxx>
33 #include <editeng/unolingu.hxx>
34 #include <editeng/kernitem.hxx>
35 #include <svl/whiter.hxx>
36 #include <svl/itempool.hxx>
37 #include <svl/stritem.hxx>
38 #include <svl/style.hxx>
39 #include <svl/languageoptions.hxx>
40 #include <svl/cjkoptions.hxx>
41 #include <svl/ctloptions.hxx>
42 #include <sfx2/tplpitem.hxx>
43 #include <editeng/escapementitem.hxx>
44 #include <svx/svdoutl.hxx>
45 #include <editeng/scripttypeitem.hxx>
46 #include <editeng/writingmodeitem.hxx>
47 #include <editeng/frmdiritem.hxx>
48 #include <editeng/fhgtitem.hxx>
49 #include <o3tl/temporary.hxx>
51 #include <sfx2/objface.hxx>
53 #include <drawdoc.hxx>
54 #include <DrawDocShell.hxx>
55 #include <DrawViewShell.hxx>
56 #include <OutlineViewShell.hxx>
58 #include <OutlineView.hxx>
61 using namespace ::com::sun::star
;
63 #define ShellClass_TextObjectBar
64 #include <sdslots.hxx>
69 * Declare default interface (Slotmap must not be empty, therefore enter
70 * something that (hopefully) never occurs.
72 SFX_IMPL_INTERFACE(TextObjectBar
, SfxShell
)
74 void TextObjectBar::InitInterface_Impl()
79 TextObjectBar::TextObjectBar (
81 SfxItemPool
& rItemPool
,
83 : SfxShell(pSdViewSh
->GetViewShell()),
84 mpViewShell( pSdViewSh
),
91 OutlineView
* pOutlinerView
= dynamic_cast< OutlineView
* >( mpView
);
94 SetUndoManager(&pOutlinerView
->GetOutliner().GetUndoManager());
98 DrawDocShell
* pDocShell
= mpView
->GetDoc().GetDocSh();
101 SetUndoManager(pDocShell
->GetUndoManager());
102 DrawViewShell
* pDrawViewShell
= dynamic_cast< DrawViewShell
* >( pSdViewSh
);
103 if ( pDrawViewShell
)
104 SetRepeatTarget(pSdView
);
109 SetName( "TextObjectBar");
111 // SetHelpId( SD_IF_SDDRAWTEXTOBJECTBAR );
114 TextObjectBar::~TextObjectBar()
116 SetRepeatTarget(nullptr);
119 void TextObjectBar::GetCharState( SfxItemSet
& rSet
)
121 SfxItemSet
aCharAttrSet( mpView
->GetDoc().GetPool() );
122 mpView
->GetAttributes( aCharAttrSet
);
124 SfxItemSetFixed
<EE_ITEMS_START
,EE_ITEMS_END
> aNewAttr( mpViewShell
->GetPool() );
126 aNewAttr
.Put(aCharAttrSet
, false);
127 rSet
.Put(aNewAttr
, false);
129 SvxKerningItem aKern
= aCharAttrSet
.Get( EE_CHAR_KERNING
);
130 //aKern.SetWhich(SID_ATTR_CHAR_KERNING);
133 SfxItemState eState
= aCharAttrSet
.GetItemState( EE_CHAR_KERNING
);
134 if ( eState
== SfxItemState::DONTCARE
)
136 rSet
.InvalidateItem(EE_CHAR_KERNING
);
141 * Status of attribute items.
143 void TextObjectBar::GetAttrState( SfxItemSet
& rSet
)
145 SfxWhichIter
aIter( rSet
);
146 sal_uInt16 nWhich
= aIter
.FirstWhich();
147 SfxItemSet
aAttrSet( mpView
->GetDoc().GetPool() );
148 bool bDisableParagraphTextDirection
= !SvtCTLOptions::IsCTLFontEnabled();
149 bool bDisableVerticalText
= !SvtCJKOptions::IsVerticalTextEnabled();
151 mpView
->GetAttributes( aAttrSet
);
155 sal_uInt16 nSlotId
= SfxItemPool::IsWhich(nWhich
)
156 ? GetPool().GetSlotId(nWhich
)
161 case SID_ATTR_CHAR_FONT
:
162 case SID_ATTR_CHAR_FONTHEIGHT
:
163 case SID_ATTR_CHAR_WEIGHT
:
164 case SID_ATTR_CHAR_POSTURE
:
165 case SID_ATTR_CHAR_SHADOWED
:
166 case SID_ATTR_CHAR_STRIKEOUT
:
167 case SID_ATTR_CHAR_CASEMAP
:
169 double stretchY
= 100.0;
170 SvxScriptSetItem
aSetItem( nSlotId
, GetPool() );
171 aSetItem
.GetItemSet().Put( aAttrSet
, false );
173 SvtScriptType nScriptType
= mpView
->GetScriptType();
175 if( (nSlotId
== SID_ATTR_CHAR_FONT
) || (nSlotId
== SID_ATTR_CHAR_FONTHEIGHT
) )
177 // input language should be preferred over
178 // current cursor position to detect script type
179 OutlinerView
* pOLV
= mpView
->GetTextEditOutlinerView();
180 SdrOutliner
*pOutliner
= mpView
->GetTextEditOutliner();
184 if (OutlineView
* pOView
= dynamic_cast<OutlineView
*>(mpView
))
185 pOLV
= pOView
->GetViewByWindow(mpViewShell
->GetActiveWindow());
188 pOutliner
->getGlobalScale(o3tl::temporary(double()), stretchY
, o3tl::temporary(double()), o3tl::temporary(double()));
190 if(pOLV
&& !pOLV
->GetSelection().HasRange())
192 if (mpViewShell
->GetViewShell() && mpViewShell
->GetViewShell()->GetWindow())
194 LanguageType nInputLang
= mpViewShell
->GetViewShell()->GetWindow()->GetInputLanguage();
195 if(nInputLang
!= LANGUAGE_DONTKNOW
&& nInputLang
!= LANGUAGE_SYSTEM
)
196 nScriptType
= SvtLanguageOptions::GetScriptTypeOfLanguage( nInputLang
);
201 const SfxPoolItem
* pI
= aSetItem
.GetItemOfScript( nScriptType
);
204 if( nSlotId
== SID_ATTR_CHAR_FONTHEIGHT
)
206 SvxFontHeightItem aFontItem
= dynamic_cast<const SvxFontHeightItem
&>(*pI
);
207 aFontItem
.SetHeight(aFontItem
.GetHeight() * (stretchY
/ 100.0), 100, aFontItem
.GetPropUnit());
208 aFontItem
.SetWhich(nWhich
);
209 aAttrSet
.Put( aFontItem
);
213 aAttrSet
.Put( pI
->CloneSetWhich(nWhich
) );
218 aAttrSet
.InvalidateItem( nWhich
);
223 case SID_STYLE_APPLY
:
224 case SID_STYLE_FAMILY2
:
226 SfxStyleSheet
* pStyleSheet
= mpView
->GetStyleSheetFromMarked();
228 rSet
.Put( SfxTemplateItem( nWhich
, pStyleSheet
->GetName() ) );
231 rSet
.Put( SfxTemplateItem( nWhich
, OUString() ) );
236 case SID_OUTLINE_LEFT
:
237 case SID_OUTLINE_RIGHT
:
239 case SID_OUTLINE_DOWN
:
241 bool bDisableLeft
= true;
242 bool bDisableRight
= true;
243 bool bDisableUp
= true;
244 bool bDisableDown
= true;
246 //fdo#78151 it doesn't make sense to promote or demote outline levels in master view.
247 const DrawViewShell
* pDrawViewShell
= dynamic_cast< DrawViewShell
* >(mpViewShell
);
248 const bool bInMasterView
= pDrawViewShell
&& pDrawViewShell
->GetEditMode() == EditMode::MasterPage
;
252 OutlinerView
* pOLV
= mpView
->GetTextEditOutlinerView();
254 if (OutlineView
* pOView
= dynamic_cast<OutlineView
*>(mpView
))
255 pOLV
= pOView
->GetViewByWindow(mpViewShell
->GetActiveWindow());
257 bool bOutlineViewSh
= dynamic_cast< const OutlineViewShell
*>( mpViewShell
) != nullptr;
261 // Outliner at outline-mode
262 ::Outliner
* pOutl
= pOLV
->GetOutliner();
264 std::vector
<Paragraph
*> aSelList
;
265 pOLV
->CreateSelectionList(aSelList
);
266 Paragraph
* pPara
= aSelList
.empty() ? nullptr : *(aSelList
.begin());
268 // find out if we are an OutlineView
269 bool bIsOutlineView(OutlinerMode::OutlineView
== pOLV
->GetOutliner()->GetOutlinerMode());
271 // This is ONLY for OutlineViews
274 // allow move up if position is 2 or greater OR it
275 // is a title object (and thus depth==1)
276 if(pOutl
->GetAbsPos(pPara
) > 1 || ( ::Outliner::HasParaFlag(pPara
,ParaFlag::ISPAGE
) && pOutl
->GetAbsPos(pPara
) > 0 ) )
284 // old behaviour for OutlinerMode::OutlineObject
285 if(pOutl
->GetAbsPos(pPara
) > 0)
292 for (const auto& rpItem
: aSelList
)
296 sal_Int16 nDepth
= pOutl
->GetDepth( pOutl
->GetAbsPos( pPara
) );
298 if (nDepth
> 0 || (bOutlineViewSh
&& (nDepth
<= 0) && !::Outliner::HasParaFlag( pPara
, ParaFlag::ISPAGE
)) )
301 bDisableLeft
= false;
304 if( (nDepth
< pOLV
->GetOutliner()->GetMaxDepth() && ( !bOutlineViewSh
|| pOutl
->GetAbsPos(pPara
) != 0 )) ||
305 (bOutlineViewSh
&& (nDepth
<= 0) && ::Outliner::HasParaFlag( pPara
, ParaFlag::ISPAGE
) && pOutl
->GetAbsPos(pPara
) != 0) )
307 // not maximum depth and not at top
308 bDisableRight
= false;
312 if ( ( pOutl
->GetAbsPos(pPara
) < pOutl
->GetParagraphCount() - 1 ) &&
313 ( pOutl
->GetParagraphCount() > 1 || !bOutlineViewSh
) )
315 // not last paragraph
316 bDisableDown
= false;
319 // disable when first para and 2nd is not a title
320 pPara
= aSelList
.empty() ? nullptr : *(aSelList
.begin());
322 if(!bDisableDown
&& bIsOutlineView
324 && 0 == pOutl
->GetAbsPos(pPara
)
325 && pOutl
->GetParagraphCount() > 1
326 && !::Outliner::HasParaFlag( pOutl
->GetParagraph(1), ParaFlag::ISPAGE
) )
328 // Needs to be disabled
335 rSet
.DisableItem(SID_OUTLINE_LEFT
);
337 rSet
.DisableItem(SID_OUTLINE_RIGHT
);
339 rSet
.DisableItem(SID_OUTLINE_UP
);
341 rSet
.DisableItem(SID_OUTLINE_DOWN
);
345 case SID_TEXTDIRECTION_LEFT_TO_RIGHT
:
346 case SID_TEXTDIRECTION_TOP_TO_BOTTOM
:
348 if ( bDisableVerticalText
)
350 rSet
.DisableItem( SID_TEXTDIRECTION_LEFT_TO_RIGHT
);
351 rSet
.DisableItem( SID_TEXTDIRECTION_TOP_TO_BOTTOM
);
355 bool bLeftToRight
= true;
357 SdrOutliner
* pOutl
= mpView
->GetTextEditOutliner();
360 if( pOutl
->IsVertical() )
361 bLeftToRight
= false;
364 bLeftToRight
= aAttrSet
.Get( SDRATTR_TEXTDIRECTION
).GetValue() == css::text::WritingMode_LR_TB
;
366 rSet
.Put( SfxBoolItem( SID_TEXTDIRECTION_LEFT_TO_RIGHT
, bLeftToRight
) );
367 rSet
.Put( SfxBoolItem( SID_TEXTDIRECTION_TOP_TO_BOTTOM
, !bLeftToRight
) );
370 bDisableParagraphTextDirection
= true;
375 case SID_ULINE_VAL_NONE
:
376 case SID_ULINE_VAL_SINGLE
:
377 case SID_ULINE_VAL_DOUBLE
:
378 case SID_ULINE_VAL_DOTTED
:
380 if( aAttrSet
.GetItemState( EE_CHAR_UNDERLINE
) >= SfxItemState::DEFAULT
)
382 FontLineStyle eLineStyle
= aAttrSet
.Get(EE_CHAR_UNDERLINE
).GetLineStyle();
386 case SID_ULINE_VAL_NONE
:
387 rSet
.Put(SfxBoolItem(nSlotId
, eLineStyle
== LINESTYLE_NONE
));
389 case SID_ULINE_VAL_SINGLE
:
390 rSet
.Put(SfxBoolItem(nSlotId
, eLineStyle
== LINESTYLE_SINGLE
));
392 case SID_ULINE_VAL_DOUBLE
:
393 rSet
.Put(SfxBoolItem(nSlotId
, eLineStyle
== LINESTYLE_DOUBLE
));
395 case SID_ULINE_VAL_DOTTED
:
396 rSet
.Put(SfxBoolItem(nSlotId
, eLineStyle
== LINESTYLE_DOTTED
));
403 case SID_GROW_FONT_SIZE
:
404 case SID_SHRINK_FONT_SIZE
:
412 if (mpView
->GetTextEditOutlinerView())
414 EditView
& rEditView
= mpView
->GetTextEditOutlinerView()->GetEditView();
416 LanguageType nLang
= LANGUAGE_NONE
;
417 bool bIsLookUpWord
= GetStatusValueForThesaurusFromContext( aStatusVal
, nLang
, rEditView
);
418 rSet
.Put( SfxStringItem( SID_THES
, aStatusVal
) );
420 // disable "Thesaurus" context menu entry if there is nothing to look up
421 uno::Reference
< linguistic2::XThesaurus
> xThes( LinguMgr::GetThesaurus() );
422 if (!bIsLookUpWord
||
423 !xThes
.is() || nLang
== LANGUAGE_NONE
|| !xThes
->hasLocale( LanguageTag( nLang
). getLocale() ))
424 rSet
.DisableItem( SID_THES
);
428 rSet
.DisableItem( SID_THES
);
437 nWhich
= aIter
.NextWhich();
440 rSet
.Put( aAttrSet
, false ); // <- sal_False, so DontCare-Status gets acquired
442 // these are disabled in outline-mode
443 if (!mpViewShell
|| dynamic_cast< const DrawViewShell
*>( mpViewShell
) == nullptr)
445 rSet
.DisableItem( SID_ATTR_PARA_ADJUST_LEFT
);
446 rSet
.DisableItem( SID_ATTR_PARA_ADJUST_RIGHT
);
447 rSet
.DisableItem( SID_ATTR_PARA_ADJUST_CENTER
);
448 rSet
.DisableItem( SID_ATTR_PARA_ADJUST_BLOCK
);
449 rSet
.DisableItem( SID_ATTR_PARA_LINESPACE_10
);
450 rSet
.DisableItem( SID_ATTR_PARA_LINESPACE_15
);
451 rSet
.DisableItem( SID_ATTR_PARA_LINESPACE_20
);
452 rSet
.DisableItem( SID_DEC_INDENT
);
453 rSet
.DisableItem( SID_INC_INDENT
);
454 rSet
.DisableItem( SID_PARASPACE_INCREASE
);
455 rSet
.DisableItem( SID_PARASPACE_DECREASE
);
456 rSet
.DisableItem( SID_TEXTDIRECTION_TOP_TO_BOTTOM
);
457 rSet
.DisableItem( SID_TEXTDIRECTION_LEFT_TO_RIGHT
);
458 rSet
.DisableItem( SID_ATTR_PARA_LEFT_TO_RIGHT
);
459 rSet
.DisableItem( SID_ATTR_PARA_RIGHT_TO_LEFT
);
464 OutlinerView
* pOLV
= mpView
->GetTextEditOutlinerView();
467 ESelection aSel
= pOLV
->GetSelection();
469 sal_Int32 nStartPara
= aSel
.nStartPara
;
470 sal_Int32 nEndPara
= aSel
.nEndPara
;
471 if( !aSel
.HasRange() )
474 nEndPara
= pOLV
->GetOutliner()->GetParagraphCount() - 1;
476 ::tools::Long nUpper
= 0;
478 for( sal_Int32 nPara
= nStartPara
; nPara
<= nEndPara
; nPara
++ )
480 const SfxItemSet
& rItems
= pOLV
->GetOutliner()->GetParaAttribs( nPara
);
481 const SvxULSpaceItem
& rItem
= rItems
.Get( EE_PARA_ULSPACE
);
482 nUpper
= std::max( nUpper
, static_cast<::tools::Long
>(rItem
.GetUpper()) );
485 rSet
.DisableItem( SID_PARASPACE_DECREASE
);
489 // never disabled at the moment!
490 //rSet.DisableItem( SID_PARASPACE_INCREASE );
491 //rSet.DisableItem( SID_PARASPACE_DECREASE );
494 // paragraph justification
495 const SvxLRSpaceItem
& aLR
= aAttrSet
.Get( EE_PARA_LRSPACE
);
497 SvxAdjust eAdj
= aAttrSet
.Get( EE_PARA_JUST
).GetAdjust();
500 case SvxAdjust::Left
:
501 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_LEFT
, true ) );
502 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_CENTER
, false ) );
503 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_RIGHT
, false ) );
504 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_BLOCK
, false ) );
506 case SvxAdjust::Center
:
507 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_CENTER
, true ) );
508 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_LEFT
, false ) );
509 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_RIGHT
, false ) );
510 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_BLOCK
, false ) );
512 case SvxAdjust::Right
:
513 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_RIGHT
, true ) );
514 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_CENTER
, false ) );
515 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_LEFT
, false ) );
516 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_BLOCK
, false ) );
518 case SvxAdjust::Block
:
519 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_BLOCK
, true ) );
520 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_CENTER
, false ) );
521 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_RIGHT
, false ) );
522 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_ADJUST_LEFT
, false ) );
528 Invalidate(SID_ATTR_PARA_ADJUST_LEFT
);
529 Invalidate(SID_ATTR_PARA_ADJUST_CENTER
);
530 Invalidate(SID_ATTR_PARA_ADJUST_RIGHT
);
531 Invalidate(SID_ATTR_PARA_ADJUST_BLOCK
);
532 Invalidate(SID_ATTR_PARA_LINESPACE
);
533 Invalidate(SID_ATTR_PARA_ULSPACE
);
535 // paragraph text direction
536 if( bDisableParagraphTextDirection
)
538 rSet
.DisableItem( SID_ATTR_PARA_LEFT_TO_RIGHT
);
539 rSet
.DisableItem( SID_ATTR_PARA_RIGHT_TO_LEFT
);
543 switch( aAttrSet
.Get( EE_PARA_WRITINGDIR
).GetValue() )
545 case SvxFrameDirection::Vertical_LR_TB
:
546 case SvxFrameDirection::Vertical_RL_TB
:
548 rSet
.DisableItem( SID_ATTR_PARA_LEFT_TO_RIGHT
);
549 rSet
.DisableItem( SID_ATTR_PARA_RIGHT_TO_LEFT
);
553 case SvxFrameDirection::Horizontal_LR_TB
:
554 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_LEFT_TO_RIGHT
, true ) );
555 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_RIGHT_TO_LEFT
, false ) );
558 case SvxFrameDirection::Horizontal_RL_TB
:
559 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_LEFT_TO_RIGHT
, false ) );
560 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_RIGHT_TO_LEFT
, true ) );
563 // The case for the superordinate object is missing.
564 case SvxFrameDirection::Environment
:
566 SdDrawDocument
& rDoc
= mpView
->GetDoc();
567 css::text::WritingMode eMode
= rDoc
.GetDefaultWritingMode();
568 bool bIsLeftToRight(false);
570 if(css::text::WritingMode_LR_TB
== eMode
571 || css::text::WritingMode_TB_RL
== eMode
)
573 bIsLeftToRight
= true;
576 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_LEFT_TO_RIGHT
, bIsLeftToRight
) );
577 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_RIGHT_TO_LEFT
, !bIsLeftToRight
) );
584 SvxLRSpaceItem aLRSpace
= aAttrSet
.Get( EE_PARA_LRSPACE
);
585 aLRSpace
.SetWhich(SID_ATTR_PARA_LRSPACE
);
587 Invalidate(SID_ATTR_PARA_LRSPACE
);
590 SfxItemState eState
= aAttrSet
.GetItemState( EE_PARA_LRSPACE
);
591 if ( eState
== SfxItemState::DONTCARE
)
593 rSet
.InvalidateItem(EE_PARA_LRSPACE
);
594 rSet
.InvalidateItem(SID_ATTR_PARA_LRSPACE
);
596 sal_uInt16 nLineSpace
= aAttrSet
.Get( EE_PARA_SBL
).GetPropLineSpace();
600 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_10
, true ) );
601 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_15
, false ) );
602 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_20
, false ) );
605 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_15
, true ) );
606 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_10
, false ) );
607 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_20
, false ) );
610 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_20
, true ) );
611 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_10
, false ) );
612 rSet
.Put( SfxBoolItem( SID_ATTR_PARA_LINESPACE_15
, false ) );
617 // justification (superscript, subscript) is also needed in outline-mode
618 SvxEscapement eEsc
= static_cast<SvxEscapement
>(aAttrSet
.Get( EE_CHAR_ESCAPEMENT
).GetEnumValue());
619 rSet
.Put(SfxBoolItem(SID_SET_SUPER_SCRIPT
, eEsc
== SvxEscapement::Superscript
));
620 rSet
.Put(SfxBoolItem(SID_SET_SUB_SCRIPT
, eEsc
== SvxEscapement::Subscript
));
623 } // end of namespace sd
625 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */