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 <config_features.h>
21 #include <config_wasm_strip.h>
23 #include <SwSpellDialogChildWindow.hxx>
24 #include <svl/eitem.hxx>
25 #include <unotools/configmgr.hxx>
26 #include <unotools/linguprops.hxx>
27 #include <unotools/lingucfg.hxx>
28 #include <officecfg/Office/Common.hxx>
29 #include <viewopt.hxx>
31 #include <sfx2/infobar.hxx>
32 #include <sfx2/lokhelper.hxx>
33 #include <sfx2/request.hxx>
34 #include <svl/whiter.hxx>
35 #include <svx/srchdlg.hxx>
36 #include <sfx2/viewfrm.hxx>
37 #include <sfx2/bindings.hxx>
38 #include <sfx2/dispatch.hxx>
39 #include <sfx2/sidebar/SidebarChildWindow.hxx>
40 #include <uivwimp.hxx>
41 #include <unotxdoc.hxx>
42 #include <avmedia/mediaplayer.hxx>
43 #include <swmodule.hxx>
44 #include <com/sun/star/linguistic2/XLinguProperties.hpp>
45 #include <comphelper/servicehelper.hxx>
46 #include <osl/diagnose.h>
48 #include <sfx2/objface.hxx>
54 #include <globals.hrc>
56 #include <globdoc.hxx>
58 #include <OnlineAccessibilityCheck.hxx>
60 #define ShellClass_SwView
61 #define ShellClass_Text
62 #define ShellClass_TextDrawText
64 #include <sfx2/msg.hxx>
65 #include <swslots.hxx>
66 #include <PostItMgr.hxx>
68 #include <unotools/moduleoptions.hxx>
69 #include <sfx2/viewfac.hxx>
72 #include <swabstdlg.hxx>
74 using namespace ::com::sun::star
;
76 SFX_IMPL_NAMED_VIEWFACTORY(SwView
, "Default")
78 if (comphelper::IsFuzzing() || SvtModuleOptions().IsWriterInstalled())
80 SFX_VIEW_REGISTRATION(SwDocShell
);
81 SFX_VIEW_REGISTRATION(SwGlobalDocShell
);
85 SFX_IMPL_INTERFACE(SwView
, SfxViewShell
)
87 void SwView::InitInterface_Impl()
89 GetStaticInterface()->RegisterChildWindow(SID_NAVIGATOR
, true);
91 GetStaticInterface()->RegisterChildWindow(::sfx2::sidebar::SidebarChildWindow::GetChildWindowId());
93 GetStaticInterface()->RegisterChildWindow(SfxInfoBarContainerChild::GetChildWindowId());
94 GetStaticInterface()->RegisterChildWindow(SvxSearchDialogWrapper::GetChildWindowId());
95 GetStaticInterface()->RegisterChildWindow(SwSpellDialogChildWindow::GetChildWindowId());
96 GetStaticInterface()->RegisterChildWindow(FN_REDLINE_ACCEPT
);
97 GetStaticInterface()->RegisterChildWindow(SID_HYPERLINK_DIALOG
);
98 GetStaticInterface()->RegisterChildWindow(FN_WORDCOUNT_DIALOG
);
99 #if HAVE_FEATURE_AVMEDIA
100 GetStaticInterface()->RegisterChildWindow(::avmedia::MediaPlayer::GetChildWindowId());
102 GetStaticInterface()->RegisterChildWindow(FN_INSERT_FIELD_DATA_ONLY
);
104 GetStaticInterface()->RegisterChildWindow(FN_SYNC_LABELS
, false, SfxShellFeature::SwChildWindowLabel
);
106 GetStaticInterface()->RegisterObjectBar(SFX_OBJECTBAR_TOOLS
, SfxVisibilityFlags::Standard
|SfxVisibilityFlags::Server
,
107 ToolbarId::Tools_Toolbox
);
111 ShellMode
SwView::GetShellMode() const
113 return m_pViewImpl
->GetShellMode();
116 view::XSelectionSupplier
* SwView::GetUNOObject()
118 return m_pViewImpl
->GetUNOObject();
121 void SwView::SetMailMergeConfigItem(std::shared_ptr
<SwMailMergeConfigItem
> const & rConfigItem
)
123 m_pViewImpl
->SetMailMergeConfigItem(rConfigItem
);
127 std::shared_ptr
<SwMailMergeConfigItem
> const & SwView::GetMailMergeConfigItem() const
129 return m_pViewImpl
->GetMailMergeConfigItem();
132 static bool lcl_IsViewMarks( const SwViewOption
& rVOpt
)
134 return rVOpt
.IsFieldShadings();
136 static void lcl_SetViewMarks(SwViewOption
& rVOpt
, bool bOn
)
138 rVOpt
.SetAppearanceFlag(
139 ViewOptFlags::FieldShadings
, bOn
, true);
142 static void lcl_SetViewMetaChars( SwViewOption
& rVOpt
, bool bOn
)
144 rVOpt
.SetViewMetaChars( bOn
);
145 if(bOn
&& !(rVOpt
.IsParagraph() ||
147 rVOpt
.IsLineBreak() ||
148 rVOpt
.IsShowHiddenChar() ||
149 rVOpt
.IsShowBookmarks() ||
152 rVOpt
.SetParagraph(bOn
);
154 rVOpt
.SetLineBreak(bOn
);
156 rVOpt
.SetShowHiddenChar(bOn
);
157 rVOpt
.SetShowBookmarks(bOn
);
161 void SwView::RecheckBrowseMode()
163 // OS: pay attention to numerical order!
164 static sal_uInt16
const aInva
[] =
166 //SID_NEWWINDOW,/*5620*/
167 SID_BROWSER_MODE
, /*6313*/
168 SID_RULER_BORDERS
, SID_RULER_PAGE_POS
,
169 //SID_ATTR_LONG_LRSPACE,
171 SID_RULER_PROTECT
, /* 10915 */
172 //SID_AUTOSPELL_CHECK,
173 //SID_AUTOSPELL_MARKOFF,
174 SID_TOGGLE_RESOLVED_NOTES
, /* 11672*/
176 FN_VIEW_BOUNDARIES
, /*20212*/
177 FN_VIEW_GRAPHIC
, /*20213*/
179 FN_VIEW_FIELDS
, /*20215*/
180 FN_VLINEAL
, /*20216*/
181 FN_VSCROLLBAR
, /*20217*/
182 FN_HSCROLLBAR
, /*20218*/
183 FN_VIEW_SECTION_BOUNDARIES
, /*20219*/
184 FN_VIEW_META_CHARS
, /**/
186 //FN_VIEW_FIELDNAME, /**/
187 FN_VIEW_TABLEGRID
, /*20227*/
188 FN_PRINT_LAYOUT
, /*20237*/
189 FN_QRY_MERGE
, /*20364*/
190 FN_SHADOWCURSOR
, /**/
191 FN_SINGLE_PAGE_PER_ROW
, /**/
192 FN_MULTIPLE_PAGES_PER_ROW
, /**/
196 // the view must not exist!
197 GetViewFrame().GetBindings().Invalidate(aInva
);
201 if( GetWrtShell().GetViewOptions()->getBrowseMode() && SvxZoomType::PERCENT
!= (eType
=
202 GetWrtShell().GetViewOptions()->GetZoomType()) )
207 // State of view options
209 void SwView::StateViewOptions(SfxItemSet
&rSet
)
211 SfxWhichIter
aIter(rSet
);
212 sal_uInt16 nWhich
= aIter
.FirstWhich();
214 const SwViewOption
* pOpt
= GetWrtShell().GetViewOptions();
218 bool bReadonly
= GetDocShell()->IsReadOnly();
219 if (bReadonly
&& nWhich
!= FN_VIEW_GRAPHIC
&& nWhich
!= FN_HIGHLIGHT_CHAR_DF
220 && nWhich
!= SID_AUTOSPELL_CHECK
)
222 rSet
.DisableItem(nWhich
);
229 if(!pOpt
->IsViewHRuler(true) && !pOpt
->IsViewVRuler(true))
231 rSet
.DisableItem(nWhich
);
235 aBool
.SetValue( pOpt
->IsViewAnyRuler());
238 case SID_BROWSER_MODE
:
239 case FN_PRINT_LAYOUT
:
241 bool bState
= pOpt
->getBrowseMode();
242 if(FN_PRINT_LAYOUT
== nWhich
)
244 aBool
.SetValue( bState
);
247 case FN_VIEW_BOUNDARIES
:
248 aBool
.SetValue( pOpt
->IsShowBoundaries()); break;
250 aBool
.SetValue( pOpt
->IsTextBoundaries()); break;
251 case FN_VIEW_SECTION_BOUNDARIES
:
252 aBool
.SetValue(pOpt
->IsSectionBoundaries()); break;
253 case FN_VIEW_GRAPHIC
:
254 aBool
.SetValue( pOpt
->IsGraphic() ); break;
256 aBool
.SetValue( pOpt
->IsFieldShadings() ); break;
257 case FN_VIEW_FIELDNAME
:
258 aBool
.SetValue( pOpt
->IsFieldName() ); break;
260 aBool
.SetValue( lcl_IsViewMarks(*pOpt
) ); break;
261 case FN_VIEW_META_CHARS
:
262 aBool
.SetValue( pOpt
->IsViewMetaChars() ); break;
263 case FN_VIEW_TABLEGRID
:
264 aBool
.SetValue( pOpt
->IsTableBoundaries() ); break;
265 case SID_TOGGLE_NOTES
:
267 if (!GetPostItMgr()->HasNotes())
269 rSet
.DisableItem(nWhich
);
273 aBool
.SetValue( pOpt
->IsPostIts());
276 case SID_TOGGLE_RESOLVED_NOTES
:
278 if (!GetPostItMgr()->HasNotes())
280 rSet
.DisableItem(nWhich
);
284 aBool
.SetValue( pOpt
->IsResolvedPostIts());
287 case FN_VIEW_HIDDEN_PARA
:
288 aBool
.SetValue( pOpt
->IsShowHiddenPara()); break;
289 case FN_VIEW_HIDE_WHITESPACE
:
291 if (pOpt
->getBrowseMode() || !pOpt
->CanHideWhitespace())
293 rSet
.DisableItem(nWhich
);
297 aBool
.SetValue(pOpt
->IsHideWhitespaceMode());
300 case FN_VIEW_SHOW_WHITESPACE
:
302 aBool
.SetValue(!pOpt
->IsHideWhitespaceMode());
305 case SID_GRID_VISIBLE
:
306 aBool
.SetValue( pOpt
->IsGridVisible() ); break;
308 aBool
.SetValue( pOpt
->IsSnap() ); break;
309 case SID_HELPLINES_MOVE
:
310 aBool
.SetValue( pOpt
->IsCrossHair() ); break;
311 case FN_VIEW_SMOOTH_SCROLL
:
312 aBool
.SetValue( pOpt
->IsSmoothScroll()); break;
314 aBool
.SetValue( StatVRuler() ); break;
316 if( pOpt
->getBrowseMode() )
318 rSet
.DisableItem(nWhich
);
322 aBool
.SetValue( IsHScrollbarVisible() );
325 aBool
.SetValue( IsVScrollbarVisible() ); break;
326 case SID_AUTOSPELL_CHECK
:
327 aBool
.SetValue( pOpt
->IsOnlineSpell() );
329 case SID_ACCESSIBILITY_CHECK_ONLINE
:
331 bool bOnlineAccessibilityCheck
= officecfg::Office::Common::Accessibility::OnlineAccessibilityCheck::get();
332 aBool
.SetValue(bOnlineAccessibilityCheck
);
335 case FN_SHADOWCURSOR
:
336 if ( pOpt
->getBrowseMode() )
338 rSet
.DisableItem( nWhich
);
342 aBool
.SetValue( pOpt
->IsShadowCursor() );
344 case FN_SHOW_INLINETOOLTIPS
:
345 aBool
.SetValue( pOpt
->IsShowInlineTooltips() );
347 case FN_USE_HEADERFOOTERMENU
:
348 aBool
.SetValue( pOpt
->IsUseHeaderFooterMenu() );
350 case FN_SHOW_OUTLINECONTENTVISIBILITYBUTTON
:
351 aBool
.SetValue( pOpt
->IsShowOutlineContentVisibilityButton() );
353 case FN_SHOW_CHANGES_IN_MARGIN
:
354 aBool
.SetValue( pOpt
->IsShowChangesInMargin() );
356 case FN_HIGHLIGHT_CHAR_DF
:
357 aBool
.SetValue(m_bIsHighlightCharDF
);
359 case SID_SPOTLIGHT_PARASTYLES
:
360 aBool
.SetValue(m_bIsSpotlightParaStyles
);
362 case SID_SPOTLIGHT_CHARSTYLES
:
363 aBool
.SetValue(m_bIsSpotlightCharStyles
);
365 case FN_SINGLE_PAGE_PER_ROW
:
366 aBool
.SetValue( !pOpt
->IsMultipageView());
368 case FN_MULTIPLE_PAGES_PER_ROW
:
369 aBool
.SetValue( pOpt
->GetViewLayoutColumns() == 0);
372 aBool
.SetValue( pOpt
->IsViewLayoutBookMode());
378 aBool
.SetWhich( nWhich
);
381 nWhich
= aIter
.NextWhich();
385 // execute view options
387 void SwView::ExecViewOptions(SfxRequest
&rReq
)
389 std::optional
<SwViewOption
> pOpt( *GetWrtShell().GetViewOptions() );
390 bool bModified
= GetWrtShell().IsModified();
392 int eState
= STATE_TOGGLE
;
394 bool bBrowseModeChanged
= false;
396 const SfxItemSet
*pArgs
= rReq
.GetArgs();
397 sal_uInt16 nSlot
= rReq
.GetSlot();
398 const SfxPoolItem
* pAttr
=nullptr;
400 if( pArgs
&& SfxItemState::SET
== pArgs
->GetItemState( nSlot
, false, &pAttr
))
402 bSet
= static_cast<const SfxBoolItem
*>(pAttr
)->GetValue();
403 eState
= bSet
? STATE_ON
: STATE_OFF
;
406 bool bFlag
= STATE_ON
== eState
;
407 uno::Reference
< linguistic2::XLinguProperties
> xLngProp( ::GetLinguPropertySet() );
411 case FN_VIEW_GRAPHIC
:
412 if( STATE_TOGGLE
== eState
)
413 bFlag
= !pOpt
->IsGraphic();
414 pOpt
->SetGraphic( bFlag
);
418 if( STATE_TOGGLE
== eState
)
419 bFlag
= !pOpt
->IsFieldShadings() ;
420 pOpt
->SetAppearanceFlag(ViewOptFlags::FieldShadings
, bFlag
, true );
424 if( STATE_TOGGLE
== eState
)
425 bFlag
= !pOpt
->IsTextBoundaries();
426 pOpt
->SetTextBoundaries( bFlag
);
429 case FN_VIEW_SECTION_BOUNDARIES
:
430 if( STATE_TOGGLE
== eState
)
431 bFlag
= !pOpt
->IsSectionBoundaries();
432 pOpt
->SetSectionBoundaries( bFlag
);
435 case FN_VIEW_TABLEGRID
:
436 if( STATE_TOGGLE
== eState
)
437 bFlag
= !pOpt
->IsTableBoundaries();
438 pOpt
->SetTableBoundaries( bFlag
);
441 case FN_VIEW_BOUNDARIES
:
442 if( STATE_TOGGLE
== eState
)
443 bFlag
= !pOpt
->IsShowBoundaries();
444 pOpt
->SetShowBoundaries( bFlag
);
447 case SID_GRID_VISIBLE
:
448 if( STATE_TOGGLE
== eState
)
449 bFlag
= !pOpt
->IsGridVisible();
451 pOpt
->SetGridVisible( bFlag
);
455 if( STATE_TOGGLE
== eState
)
456 bFlag
= !pOpt
->IsSnap();
458 pOpt
->SetSnap( bFlag
);
461 case SID_HELPLINES_MOVE
:
462 if( STATE_TOGGLE
== eState
)
463 bFlag
= !pOpt
->IsCrossHair();
465 pOpt
->SetCrossHair( bFlag
);
468 case SID_BROWSER_MODE
:
469 bBrowseModeChanged
= !pOpt
->getBrowseMode();
470 pOpt
->setBrowseMode(true );
473 case FN_PRINT_LAYOUT
:
474 bBrowseModeChanged
= pOpt
->getBrowseMode();
475 pOpt
->setBrowseMode( false );
478 case SID_TOGGLE_NOTES
:
479 if ( STATE_TOGGLE
== eState
)
480 bFlag
= !pOpt
->IsPostIts();
482 GetPostItMgr()->SetLayout();
483 pOpt
->SetPostIts( bFlag
);
484 if (pOpt
->IsPostIts())
485 GetPostItMgr()->CheckMetaText();
488 case SID_TOGGLE_RESOLVED_NOTES
:
489 if ( STATE_TOGGLE
== eState
)
490 bFlag
= pOpt
->IsResolvedPostIts();
492 GetPostItMgr()->ShowHideResolvedNotes(!bFlag
);
494 GetPostItMgr()->SetLayout();
495 pOpt
->SetResolvedPostIts( !bFlag
);
499 case FN_VIEW_HIDDEN_PARA
:
500 if ( STATE_TOGGLE
== eState
)
501 bFlag
= !pOpt
->IsShowHiddenPara();
503 pOpt
->SetShowHiddenPara( bFlag
);
506 case FN_VIEW_HIDE_WHITESPACE
:
507 if ( STATE_TOGGLE
== eState
)
508 bFlag
= !pOpt
->IsHideWhitespaceMode();
510 pOpt
->SetHideWhitespaceMode(bFlag
);
513 case FN_VIEW_SHOW_WHITESPACE
:
514 if ( STATE_TOGGLE
== eState
)
515 bFlag
= pOpt
->IsHideWhitespaceMode();
517 pOpt
->SetHideWhitespaceMode(!bFlag
);
520 case FN_VIEW_SMOOTH_SCROLL
:
522 if ( STATE_TOGGLE
== eState
)
523 bFlag
= !pOpt
->IsSmoothScroll();
525 pOpt
->SetSmoothScroll( bFlag
);
529 if( STATE_TOGGLE
== eState
)
530 bFlag
= !pOpt
->IsViewVRuler();
532 pOpt
->SetViewVRuler( bFlag
);
536 if( STATE_TOGGLE
== eState
)
537 bFlag
= !pOpt
->IsViewVScrollBar();
539 pOpt
->SetViewVScrollBar( bFlag
);
543 if( STATE_TOGGLE
== eState
)
544 bFlag
= !pOpt
->IsViewHScrollBar();
546 pOpt
->SetViewHScrollBar( bFlag
);
550 if( STATE_TOGGLE
== eState
)
551 bFlag
= !pOpt
->IsViewAnyRuler();
553 pOpt
->SetViewAnyRuler( bFlag
);
555 case FN_VIEW_FIELDNAME
:
556 if( STATE_TOGGLE
== eState
)
557 bFlag
= !pOpt
->IsFieldName() ;
559 pOpt
->SetFieldName( bFlag
);
563 if( STATE_TOGGLE
== eState
)
564 bFlag
= !lcl_IsViewMarks(*pOpt
) ;
566 lcl_SetViewMarks( *pOpt
, bFlag
);
569 case FN_HIGHLIGHT_CHAR_DF
:
570 if (STATE_TOGGLE
== eState
)
571 bFlag
= !m_bIsHighlightCharDF
;
572 m_bIsHighlightCharDF
= bFlag
;
575 case SID_SPOTLIGHT_PARASTYLES
:
576 if (!comphelper::LibreOfficeKit::isActive())
578 if (!pArgs
|| !pArgs
->HasItem(FN_PARAM_1
))
580 const SfxStringItem
sDeckName(SID_SIDEBAR_DECK
, u
"StyleListDeck"_ustr
);
581 GetDispatcher().ExecuteList(SID_SIDEBAR_DECK
, SfxCallMode::SYNCHRON
, { &sDeckName
});
584 if (STATE_TOGGLE
== eState
)
585 bFlag
= !m_bIsSpotlightParaStyles
;
586 m_bIsSpotlightParaStyles
= bFlag
;
589 case SID_SPOTLIGHT_CHARSTYLES
:
590 if (!comphelper::LibreOfficeKit::isActive())
592 if (!pArgs
|| !pArgs
->HasItem(FN_PARAM_1
))
594 const SfxStringItem
sDeckName(SID_SIDEBAR_DECK
, u
"StyleListDeck"_ustr
);
595 GetDispatcher().ExecuteList(SID_SIDEBAR_DECK
, SfxCallMode::SYNCHRON
, { &sDeckName
});
598 if (STATE_TOGGLE
== eState
)
599 bFlag
= !m_bIsSpotlightCharStyles
;
600 m_bIsSpotlightCharStyles
= bFlag
;
603 case FN_VIEW_META_CHARS
:
604 if( STATE_TOGGLE
== eState
)
605 bFlag
= !pOpt
->IsViewMetaChars();
607 lcl_SetViewMetaChars( *pOpt
, bFlag
);
610 case SID_AUTOSPELL_CHECK
:
611 const SfxPoolItem
* pItem
;
613 if (pArgs
&& pArgs
->HasItem(FN_PARAM_1
, &pItem
))
614 bSet
= static_cast<const SfxBoolItem
*>(pItem
)->GetValue();
615 else if( STATE_TOGGLE
== eState
)
617 bFlag
= !pOpt
->IsOnlineSpell();
621 pOpt
->SetOnlineSpell(bSet
);
624 aCfg
.SetProperty( UPN_IS_SPELL_AUTO
, uno::Any( bSet
) );
627 xLngProp
->setIsSpellAuto( bSet
);
629 // for the time being we do not have a specific option for grammarchecking.
630 // thus we'll use the one for spell checking...
633 SwDocShell
*pDocSh
= GetDocShell();
634 SwDoc
*pDoc
= pDocSh
? pDocSh
->GetDoc() : nullptr;
636 // right now we don't have view options for automatic grammar checking. Thus...
637 bool bIsAutoGrammar
= false;
638 aCfg
.GetProperty( UPN_IS_GRAMMAR_AUTO
) >>= bIsAutoGrammar
;
640 if (pDoc
&& bIsAutoGrammar
)
641 pDoc
->StartGrammarChecking();
646 case SID_ACCESSIBILITY_CHECK_ONLINE
:
648 if (pArgs
&& pArgs
->HasItem(FN_PARAM_1
, &pItem
))
650 bSet
= static_cast<const SfxBoolItem
*>(pItem
)->GetValue();
652 else if (STATE_TOGGLE
== eState
)
654 bool bOnlineCheck
= officecfg::Office::Common::Accessibility::OnlineAccessibilityCheck::get();
655 bSet
= !bOnlineCheck
;
657 std::shared_ptr
<comphelper::ConfigurationChanges
> batch(comphelper::ConfigurationChanges::create());
658 officecfg::Office::Common::Accessibility::OnlineAccessibilityCheck::set(bSet
, batch
);
661 SwDocShell
*pDocSh
= GetDocShell();
662 SwDoc
* pDocument
= pDocSh
? pDocSh
->GetDoc() : nullptr;
664 pDocument
->getOnlineAccessibilityCheck()->updateCheckerActivity();
668 case FN_SHADOWCURSOR
:
669 if( STATE_TOGGLE
== eState
)
671 bFlag
= !pOpt
->IsShadowCursor();
675 pOpt
->SetShadowCursor(bSet
);
678 case FN_SHOW_INLINETOOLTIPS
:
679 if( STATE_TOGGLE
== eState
)
680 bFlag
= !pOpt
->IsShowInlineTooltips();
682 pOpt
->SetShowInlineTooltips( bFlag
);
685 case FN_USE_HEADERFOOTERMENU
:
686 if( STATE_TOGGLE
== eState
)
687 bFlag
= !pOpt
->IsUseHeaderFooterMenu();
689 pOpt
->SetUseHeaderFooterMenu( bFlag
);
692 case FN_SHOW_OUTLINECONTENTVISIBILITYBUTTON
:
694 if( STATE_TOGGLE
== eState
)
695 bFlag
= !pOpt
->IsShowOutlineContentVisibilityButton();
697 SwWrtShell
&rSh
= GetWrtShell();
699 if (!bFlag
) // Outline folding is being turned ON!
700 rSh
.MakeAllFoldedOutlineContentVisible();
702 pOpt
->SetShowOutlineContentVisibilityButton(bFlag
);
704 // Apply option change here so if toggling the outline folding feature ON
705 // the invalidate function will see this.
707 rSh
.ApplyViewOptions(*pOpt
);
710 if (bFlag
) // Outline folding is being turned OFF!
711 rSh
.MakeAllFoldedOutlineContentVisible(false);
716 case FN_SHOW_CHANGES_IN_MARGIN
:
717 if( STATE_TOGGLE
== eState
)
718 bFlag
= !pOpt
->IsShowChangesInMargin();
720 pOpt
->SetShowChangesInMargin( bFlag
);
723 case FN_SINGLE_PAGE_PER_ROW
:
724 pOpt
->SetViewLayoutBookMode( false );
725 pOpt
->SetViewLayoutColumns( 1 );
728 case FN_MULTIPLE_PAGES_PER_ROW
:
729 pOpt
->SetViewLayoutBookMode( false );
730 pOpt
->SetViewLayoutColumns( 0 );
734 pOpt
->SetViewLayoutColumns( 2 );
735 pOpt
->SetViewLayoutBookMode( true );
739 OSL_FAIL("wrong request method");
743 // Set UserPrefs, mark request as modified
744 bool bWebView
= dynamic_cast<const SwWebView
*>(this) != nullptr;
745 SwWrtShell
&rSh
= GetWrtShell();
747 SwModule
* pModule
= SwModule::get();
748 if( *rSh
.GetViewOptions() != *pOpt
)
750 rSh
.ApplyViewOptions( *pOpt
);
751 if( bBrowseModeChanged
)
753 GetDocShell()->ToggleLayoutMode(this);
756 // The UsrPref must be marked as modified.
757 // call for initialization
758 pModule
->GetUsrPref(bWebView
);
759 SwModule::CheckSpellChanges( pOpt
->IsOnlineSpell(), false, false, false );
761 //OS: Set back modified again, because view/fields sets the Doc modified.
765 pModule
->ApplyUsrPref( *pOpt
, this, bWebView
? SvViewOpt::DestWeb
: SvViewOpt::DestText
);
767 if (nSlot
== SID_SPOTLIGHT_CHARSTYLES
|| nSlot
== SID_SPOTLIGHT_PARASTYLES
)
769 SwXTextDocument
* pModel
= comphelper::getFromUnoTunnel
<SwXTextDocument
>(GetCurrentDocument());
770 SfxLokHelper::notifyViewRenderState(this, pModel
);
771 if (vcl::Window
*pMyWin
= rSh
.GetWin())
772 pMyWin
->Invalidate();
775 // #i6193# let postits know about new spellcheck setting
776 if ( nSlot
== SID_AUTOSPELL_CHECK
)
777 GetPostItMgr()->SetSpellChecking();
779 const bool bLockedView
= rSh
.IsViewLocked();
780 rSh
.LockView( true ); //lock visible section
781 GetWrtShell().EndAction();
782 if( bBrowseModeChanged
&& !bFlag
)
783 CalcVisArea( GetEditWin().GetOutputSizePixel() );
784 rSh
.LockView( bLockedView
);
787 Invalidate(rReq
.GetSlot());
789 rReq
.AppendItem(SfxBoolItem(nSlot
, bFlag
));
793 void SwView::ExecFormatFootnote()
795 SwAbstractDialogFactory
* pFact
= SwAbstractDialogFactory::Create();
796 VclPtr
<VclAbstractDialog
> pDlg(pFact
->CreateSwFootNoteOptionDlg(GetFrameWeld(), GetWrtShell()));
797 pDlg
->StartExecuteAsync(
798 [pDlg
] (sal_Int32
/*nResult*/)->void
805 void SwView::ExecNumberingOutline(SfxItemPool
& rPool
)
807 SfxItemSet
aTmp(SfxItemSet::makeFixedSfxItemSet
<FN_PARAM_1
, FN_PARAM_1
>(rPool
));
808 SwAbstractDialogFactory
* pFact
= SwAbstractDialogFactory::Create();
809 VclPtr
<SfxAbstractTabDialog
> pDlg(pFact
->CreateOutlineTabDialog(GetFrameWeld(), &aTmp
, GetWrtShell()));
810 pDlg
->StartExecuteAsync(
811 [pDlg
] (sal_Int32
/*nResult*/)->void
818 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */