xref: /trunk/main/sw/source/ui/uiview/view0.cxx (revision 67f7bfb15893aaa2f3b1ee7ec6b966aaaad422fc)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 // MARKER(update_precomp.py): autogen include statement, do not remove
23 #include "precompiled_sw.hxx"
24 
25 #include "hintids.hxx"
26 #include <vcl/graph.hxx>
27 #include <svx/galbrws.hxx>
28 #include <svl/srchitem.hxx>
29 #include <SwSpellDialogChildWindow.hxx>
30 #include <svl/eitem.hxx>
31 #include <unotools/linguprops.hxx>
32 #include <unotools/lingucfg.hxx>
33 #include <viewopt.hxx>
34 #include <globals.h>
35 #include <sfx2/app.hxx>
36 #include <sfx2/request.hxx>
37 #include <svl/whiter.hxx>
38 #include <svx/srchdlg.hxx>
39 #include <sfx2/templdlg.hxx>
40 #include <sfx2/viewfrm.hxx>
41 #include <sfx2/bindings.hxx>
42 #include <sfx2/sidebar/SidebarChildWindow.hxx>
43 #include <uivwimp.hxx>
44 #include <avmedia/mediaplayer.hxx>
45 //#include <swlinguconfig.hxx>
46 #include <swmodule.hxx>
47 
48 #include <sfx2/objface.hxx>
49 #include <navipi.hxx>
50 #include <wrtsh.hxx>
51 #include <edtwin.hxx>
52 #include "view.hxx"
53 #include "basesh.hxx"
54 #include "docsh.hxx"
55 #include "doc.hxx"
56 #include "globals.hrc"
57 #include "cmdid.h"          // FN_       ...
58 #include "globdoc.hxx"
59 #include "wview.hxx"
60 #include "shells.hrc"
61 
62 #define OLEObjects
63 #define SwView
64 #define Frames
65 #define Graphics
66 #define Tables
67 #define Controls
68 #define GlobalContents
69 #define Text
70 #define Frame
71 #define Graphic
72 #define Object
73 #define Draw
74 #define TextDrawText
75 #define TextInTable
76 #define ListInText
77 #define ListInTable
78 #define WebTextInTable
79 #define WebListInText
80 #define WebListInTable
81 #define TextPage
82 #include <sfx2/msg.hxx>
83 #include "swslots.hxx"
84 #include <PostItMgr.hxx>
85 
86 
87 using namespace ::com::sun::star;
88 using ::rtl::OUString;
89 
90 #include <unotools/moduleoptions.hxx>
91 
92 #include <IDocumentSettingAccess.hxx>
93 
94 #include <unomid.h>
95 
96 SFX_IMPL_NAMED_VIEWFACTORY(SwView, "Default")
97 {
98     if ( SvtModuleOptions().IsWriter() )
99     {
100         SFX_VIEW_REGISTRATION(SwDocShell);
101         SFX_VIEW_REGISTRATION(SwGlobalDocShell);
102     }
103 }
104 
105 SFX_IMPL_INTERFACE( SwView, SfxViewShell, SW_RES(RID_TOOLS_TOOLBOX) )
106 {
107     SFX_CHILDWINDOW_CONTEXT_REGISTRATION(SID_NAVIGATOR);
108     SFX_CHILDWINDOW_REGISTRATION(::sfx2::sidebar::SidebarChildWindow::GetChildWindowId());
109     SFX_CHILDWINDOW_REGISTRATION(SfxTemplateDialogWrapper::GetChildWindowId());
110     SFX_CHILDWINDOW_REGISTRATION(SvxSearchDialogWrapper::GetChildWindowId());
111     SFX_CHILDWINDOW_REGISTRATION(SwSpellDialogChildWindow::GetChildWindowId());
112     SFX_CHILDWINDOW_REGISTRATION(FN_REDLINE_ACCEPT);
113     SFX_CHILDWINDOW_REGISTRATION(SID_HYPERLINK_DIALOG);
114     SFX_CHILDWINDOW_REGISTRATION(GalleryChildWindow::GetChildWindowId());
115     SFX_CHILDWINDOW_REGISTRATION(::avmedia::MediaPlayer::GetChildWindowId());
116     SFX_CHILDWINDOW_REGISTRATION(FN_INSERT_FIELD_DATA_ONLY);
117         SFX_FEATURED_CHILDWINDOW_REGISTRATION(FN_SYNC_LABELS,           CHILDWIN_LABEL    );
118         SFX_FEATURED_CHILDWINDOW_REGISTRATION(FN_MAILMERGE_CHILDWINDOW, CHILDWIN_MAILMERGE);
119 //    SFX_CHILDWINDOW_REGISTRATION(FN_MAILMERGE_SENDMAIL_CHILDWINDOW);
120     SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_TOOLS|
121                                 SFX_VISIBILITY_STANDARD|SFX_VISIBILITY_SERVER,
122                                 SW_RES(RID_TOOLS_TOOLBOX) );
123 }
124 
125 TYPEINIT1(SwView,SfxViewShell)
126 
127 /*-----------------13.12.97 11:06-------------------
128 
129 --------------------------------------------------*/
130 ShellModes  SwView::GetShellMode()
131 {
132     return pViewImpl->GetShellMode();
133 }
134 
135 /*-----------------13.12.97 11:28-------------------
136 
137 --------------------------------------------------*/
138 view::XSelectionSupplier* SwView::GetUNOObject()
139 {
140     return pViewImpl->GetUNOObject();
141 }
142 /* -----------------------------06.05.2002 13:18------------------------------
143 
144  ---------------------------------------------------------------------------*/
145 void SwView::ApplyAccessiblityOptions(SvtAccessibilityOptions& rAccessibilityOptions)
146 {
147     pWrtShell->ApplyAccessiblityOptions(rAccessibilityOptions);
148     //to enable the right state of the selection cursor in readonly documents
149     if(GetDocShell()->IsReadOnly())
150         pWrtShell->ShowCrsr();
151 
152 }
153 /*-- 26.05.2004 09:14:25---------------------------------------------------
154 
155   -----------------------------------------------------------------------*/
156 void   SwView::SetMailMergeConfigItem(SwMailMergeConfigItem*  pConfigItem,
157                 sal_uInt16 nRestart, sal_Bool bIsSource)
158 {
159     pViewImpl->SetMailMergeConfigItem(pConfigItem, nRestart, bIsSource);
160     UIFeatureChanged();
161 }
162 /*-- 26.05.2004 09:14:25---------------------------------------------------
163 
164   -----------------------------------------------------------------------*/
165 SwMailMergeConfigItem*  SwView::GetMailMergeConfigItem()
166 {
167     return pViewImpl->GetMailMergeConfigItem();
168 }
169 /*-- 26.05.2004 09:14:25---------------------------------------------------
170 
171   -----------------------------------------------------------------------*/
172 sal_uInt16 SwView::GetMailMergeRestartPage() const
173 {
174     return pViewImpl->GetMailMergeRestartPage();
175 }
176 /*-- 03.09.2004 11:56:33---------------------------------------------------
177 
178   -----------------------------------------------------------------------*/
179 sal_Bool SwView::IsMailMergeSourceView() const
180 {
181     return pViewImpl->IsMailMergeSourceView();
182 }
183 /*-- 12.04.2006 11:51:40---------------------------------------------------
184 
185   -----------------------------------------------------------------------*/
186 sal_Bool lcl_IsViewMarks( const SwViewOption& rVOpt )
187 {
188     return  rVOpt.IsHardBlank() &&
189             rVOpt.IsSoftHyph() &&
190             SwViewOption::IsFieldShadings();
191 }
192 void lcl_SetViewMarks(SwViewOption& rVOpt, sal_Bool bOn )
193 {
194     rVOpt.SetHardBlank(bOn);
195     rVOpt.SetSoftHyph(bOn);
196     SwViewOption::SetAppearanceFlag(
197             VIEWOPT_FIELD_SHADINGS, bOn, sal_True);
198 }
199 
200 void lcl_SetViewMetaChars( SwViewOption& rVOpt, sal_Bool bOn)
201 {
202     rVOpt.SetViewMetaChars( bOn );
203     if(bOn && !(rVOpt.IsParagraph()     ||
204             rVOpt.IsTab()       ||
205             rVOpt.IsLineBreak() ||
206             rVOpt.IsShowHiddenChar() ||
207             rVOpt.IsBlank()))
208     {
209         rVOpt.SetParagraph(bOn);
210         rVOpt.SetTab(bOn);
211         rVOpt.SetLineBreak(bOn);
212         rVOpt.SetBlank(bOn);
213         rVOpt.SetShowHiddenChar(bOn);
214     }
215 }
216 
217 void SwView::RecheckBrowseMode()
218 {
219     // OS: numerische Reihenfolge beachten!
220     static sal_uInt16 __READONLY_DATA aInva[] =
221         {
222             //SID_NEWWINDOW,/*5620*/
223             SID_BROWSER_MODE, /*6313*/
224             SID_RULER_BORDERS, SID_RULER_PAGE_POS,
225             //SID_ATTR_LONG_LRSPACE,
226             SID_HTML_MODE,
227             SID_RULER_PROTECT,
228             //SID_AUTOSPELL_CHECK,
229             //SID_AUTOSPELL_MARKOFF,
230             FN_RULER,       /*20211*/
231             FN_VIEW_GRAPHIC,    /*20213*/
232             FN_VIEW_BOUNDS,     /**/
233             FN_VIEW_FIELDS,     /*20215*/
234             FN_VRULER,          /*20216*/
235             FN_VSCROLLBAR,      /*20217*/
236             FN_HSCROLLBAR,      /*20218*/
237             FN_VIEW_META_CHARS, /**/
238             FN_VIEW_MARKS,      /**/
239             //FN_VIEW_FIELDNAME,    /**/
240             FN_VIEW_TABLEGRID,  /*20227*/
241             FN_PRINT_LAYOUT, /*20237*/
242             FN_QRY_MERGE,   /*20364*/
243             FN_SHADOWCURSOR, /**/
244             0
245         };
246     // the view must not exist!
247     GetViewFrame()->GetBindings().Invalidate(aInva);
248     CheckVisArea();
249 
250     SvxZoomType eType;
251     if( GetWrtShell().GetViewOptions()->getBrowseMode() && SVX_ZOOM_PERCENT != (eType = (SvxZoomType)
252         GetWrtShell().GetViewOptions()->GetZoomType()) )
253         SetZoom( eType );
254     InvalidateBorder();
255 }
256 
257 /*--------------------------------------------------------------------
258     State of view options
259  --------------------------------------------------------------------*/
260 void SwView::StateViewOptions(SfxItemSet &rSet)
261 {
262     SfxWhichIter aIter(rSet);
263     sal_uInt16 nWhich = aIter.FirstWhich();
264     SfxBoolItem aBool;
265     const SwViewOption* pOpt = GetWrtShell().GetViewOptions();
266     const IDocumentSettingAccess* pIDSA = GetDocShell()->getIDocumentSettingAccess();
267 
268     while(nWhich)
269     {
270         sal_Bool bReadonly = GetDocShell()->IsReadOnly();
271         if ( bReadonly && nWhich != FN_VIEW_GRAPHIC )
272         {
273             rSet.DisableItem(nWhich);
274             nWhich = 0;
275         }
276         switch(nWhich)
277         {
278             case FN_RULER:
279             {
280                 if(!pOpt->IsViewHRuler(sal_True) && !pOpt->IsViewVRuler(sal_True))
281                 {
282                     rSet.DisableItem(nWhich);
283                     nWhich = 0;
284                 }
285                 else
286                     aBool.SetValue( pOpt->IsViewAnyRuler());
287             }
288             break;
289             case SID_BROWSER_MODE:
290             case FN_PRINT_LAYOUT:
291             {
292                 sal_Bool bState = pOpt->getBrowseMode();
293                 if(FN_PRINT_LAYOUT == nWhich)
294                     bState = !bState;
295                 aBool.SetValue( bState );
296             }
297             break;
298             case FN_VIEW_BOUNDS:
299                 aBool.SetValue( SwViewOption::IsDocBoundaries()); break;
300             case FN_VIEW_GRAPHIC:
301                 aBool.SetValue( !pOpt->IsGraphic() ); break;
302             case FN_VIEW_FIELDS:
303                 aBool.SetValue( SwViewOption::IsFieldShadings() ); break;
304             case FN_VIEW_FIELDNAME:
305                 aBool.SetValue( pOpt->IsFldName() ); break;
306             case FN_VIEW_MARKS:
307                 aBool.SetValue( lcl_IsViewMarks(*pOpt) ); break;
308             case FN_VIEW_META_CHARS:
309                 aBool.SetValue( pOpt->IsViewMetaChars() ); break;
310             case FN_VIEW_TABLEGRID:
311                 aBool.SetValue( SwViewOption::IsTableBoundaries() ); break;
312             case FN_VIEW_NOTES:
313             {
314                 aBool.SetValue( pOpt->IsPostIts());
315                 if (!GetPostItMgr()->HasNotes())
316                 {
317                     aBool.SetWhich( nWhich );
318                     rSet.Put( aBool );
319                     rSet.DisableItem(nWhich);
320                     nWhich = 0;
321                 }
322                 break;
323             }
324             case FN_VIEW_HIDDEN_PARA:
325                 aBool.SetValue( pOpt->IsShowHiddenPara()); break;
326             case SID_GRID_VISIBLE:
327                 aBool.SetValue( pOpt->IsGridVisible() ); break;
328             case SID_GRID_USE:
329                 aBool.SetValue( pOpt->IsSnap() ); break;
330             case SID_HELPLINES_MOVE:
331                 aBool.SetValue( pOpt->IsCrossHair() ); break;
332             case FN_VIEW_SMOOTH_SCROLL:
333                 aBool.SetValue( pOpt->IsSmoothScroll()); break;
334             case FN_VRULER:
335                 aBool.SetValue( 0 != StatVRuler() ); break;
336             case FN_HSCROLLBAR:
337                 if( pOpt->getBrowseMode() )
338                 {
339                     rSet.DisableItem(nWhich);
340                     nWhich = 0;
341                 }
342                 else
343                     aBool.SetValue( IsHScrollbarVisible() ); break;
344             case FN_VSCROLLBAR:
345                 aBool.SetValue( IsVScrollbarVisible() ); break;
346             case SID_AUTOSPELL_CHECK:
347                 aBool.SetValue( pOpt->IsOnlineSpell() );
348             break;
349             case FN_SHADOWCURSOR:
350                 if (pIDSA == 0 || pOpt->getBrowseMode() )
351                 {
352                     rSet.DisableItem( nWhich );
353                     nWhich = 0;
354                 }
355                 else
356                     aBool.SetValue( pOpt->IsShadowCursor() );
357             break;
358 
359         }
360 
361         if( nWhich )
362         {
363             aBool.SetWhich( nWhich );
364             rSet.Put( aBool );
365         }
366         nWhich = aIter.NextWhich();
367     }
368 }
369 
370 /*--------------------------------------------------------------------
371     execute view options
372  --------------------------------------------------------------------*/
373 void SwView::ExecViewOptions(SfxRequest &rReq)
374 {
375     SwViewOption* pOpt = new SwViewOption( *GetWrtShell().GetViewOptions() );
376     sal_Bool bModified = GetWrtShell().IsModified();
377 
378     int eState = STATE_TOGGLE;
379     sal_Bool bSet = sal_False;
380     bool bBrowseModeChanged = false;
381 
382     const SfxItemSet *pArgs = rReq.GetArgs();
383     sal_uInt16 nSlot = rReq.GetSlot();
384     const SfxPoolItem* pAttr=NULL;
385 
386     if( pArgs && SFX_ITEM_SET == pArgs->GetItemState( nSlot , sal_False, &pAttr ))
387     {
388         bSet = ((SfxBoolItem*)pAttr)->GetValue();
389         eState = bSet ? STATE_ON : STATE_OFF;
390     }
391 
392     sal_Bool bFlag = STATE_ON == eState;
393     uno::Reference< beans::XPropertySet >  xLngProp( ::GetLinguPropertySet() );
394 
395     switch ( nSlot )
396     {
397         case FN_VIEW_GRAPHIC:
398 
399                 if( STATE_TOGGLE == eState )
400                     bFlag = !pOpt->IsGraphic();
401                 pOpt->SetGraphic( bFlag );
402                 break;
403 
404         case FN_VIEW_FIELDS:
405                 if( STATE_TOGGLE == eState )
406                     bFlag = !SwViewOption::IsFieldShadings() ;
407                 SwViewOption::SetAppearanceFlag(VIEWOPT_FIELD_SHADINGS, bFlag, sal_True );
408                 break;
409 
410         case FN_VIEW_BOUNDS:
411                 if( STATE_TOGGLE == eState )
412                     bFlag = !SwViewOption::IsDocBoundaries();
413                 SwViewOption::SetAppearanceFlag(VIEWOPT_DOC_BOUNDARIES, bFlag, sal_True );
414                 break;
415 
416         case SID_GRID_VISIBLE:
417                 if( STATE_TOGGLE == eState )
418                     bFlag = !pOpt->IsGridVisible();
419 
420                 pOpt->SetGridVisible( bFlag );
421                 break;
422 
423         case SID_GRID_USE:
424                 if( STATE_TOGGLE == eState )
425                     bFlag = !pOpt->IsSnap();
426 
427                 pOpt->SetSnap( bFlag );
428                 break;
429 
430         case SID_HELPLINES_MOVE:
431                 if( STATE_TOGGLE == eState )
432                     bFlag = !pOpt->IsCrossHair();
433 
434                 pOpt->SetCrossHair( bFlag );
435                 break;
436 
437         case SID_BROWSER_MODE:
438         case FN_PRINT_LAYOUT:
439                 if( STATE_TOGGLE == eState )
440                     bFlag = !pOpt->getBrowseMode();
441                 else if( nSlot == FN_PRINT_LAYOUT )
442                     bFlag = !bFlag;
443                 bBrowseModeChanged = bFlag != pOpt->getBrowseMode();
444                 // Disable "multiple layout"
445                 GetDocShell()->ToggleBrowserMode( bFlag, this );
446 
447                 pOpt->setBrowseMode( bFlag );
448                 break;
449 
450     case FN_VIEW_NOTES:
451                 if ( STATE_TOGGLE == eState )
452                     bFlag = !pOpt->IsPostIts();
453 
454                 GetPostItMgr()->SetLayout();
455                 pOpt->SetPostIts( bFlag );
456                 if (pOpt->IsPostIts())
457             GetPostItMgr()->CheckMetaText();
458          break;
459 
460         case FN_VIEW_HIDDEN_PARA:
461                 if ( STATE_TOGGLE == eState )
462                     bFlag = !pOpt->IsShowHiddenPara();
463 
464                 pOpt->SetShowHiddenPara( bFlag );
465                 break;
466 
467         case FN_VIEW_SMOOTH_SCROLL:
468 
469                 if ( STATE_TOGGLE == eState )
470                     bFlag = !pOpt->IsSmoothScroll();
471 
472                 pOpt->SetSmoothScroll( bFlag );
473                 break;
474 
475 
476         case FN_VRULER:
477                 if( STATE_TOGGLE == eState )
478                     bFlag = !pOpt->IsViewVRuler();
479 
480                 pOpt->SetViewVRuler( bFlag );
481                 break;
482 
483         case FN_VSCROLLBAR:
484                 if( STATE_TOGGLE == eState )
485                     bFlag = !pOpt->IsViewVScrollBar();
486 
487                 pOpt->SetViewVScrollBar( bFlag );
488                 break;
489 
490         case FN_HSCROLLBAR:
491                 if( STATE_TOGGLE == eState )
492                     bFlag = !pOpt->IsViewHScrollBar();
493 
494                 pOpt->SetViewHScrollBar( bFlag );
495                 break;
496         case FN_RULER:
497                 if( STATE_TOGGLE == eState )
498                     bFlag = !pOpt->IsViewAnyRuler();
499 
500                 pOpt->SetViewAnyRuler( bFlag );
501                 break;
502 
503         case FN_VIEW_TABLEGRID:
504                 if( STATE_TOGGLE == eState )
505                     bFlag = !SwViewOption::IsTableBoundaries();
506                 SwViewOption::SetAppearanceFlag(VIEWOPT_TABLE_BOUNDARIES, bFlag, sal_True );
507                 break;
508 
509         case FN_VIEW_FIELDNAME:
510                 if( STATE_TOGGLE == eState )
511                     bFlag = !pOpt->IsFldName() ;
512 
513                 pOpt->SetFldName( bFlag );
514                 break;
515         case FN_VIEW_MARKS:
516                 if( STATE_TOGGLE == eState )
517                     bFlag = !lcl_IsViewMarks(*pOpt) ;
518 
519                 lcl_SetViewMarks( *pOpt, bFlag );
520                 break;
521         case FN_VIEW_META_CHARS:
522                 if( STATE_TOGGLE == eState )
523                     bFlag = !pOpt->IsViewMetaChars();
524 
525                 lcl_SetViewMetaChars( *pOpt, bFlag );
526         break;
527         case SID_AUTOSPELL_CHECK:
528             if( STATE_TOGGLE == eState )
529                 bFlag = bSet = !pOpt->IsOnlineSpell();
530 
531             pOpt->SetOnlineSpell(bSet);
532             {
533                 uno::Any aVal( &bSet, ::getCppuBooleanType() );
534                 String aPropName( C2S(UPN_IS_SPELL_AUTO) );
535 
536                 SvtLinguConfig  aCfg;
537                 aCfg.SetProperty( aPropName, aVal );
538 
539                 if (xLngProp.is())
540                     xLngProp->setPropertyValue( aPropName, aVal );
541 
542                 // for the time being we do not have a specific option for grammarchecking.
543                 // thus we'll use the one for spell checking...
544                 if (bSet)
545                 {
546                     SwDocShell *pDocSh = GetDocShell();
547                     SwDoc *pDoc = pDocSh? pDocSh->GetDoc() : NULL;
548 
549                     // right now we don't have view options for automatic grammar checking. Thus...
550                     sal_Bool bIsAutoGrammar = sal_False;
551                     aCfg.GetProperty( C2U( UPN_IS_GRAMMAR_AUTO ) ) >>= bIsAutoGrammar;
552 
553                     if (pDoc && bIsAutoGrammar)
554                         StartGrammarChecking( *pDoc );
555                 }
556             }
557         break;
558         case FN_SHADOWCURSOR:
559             if( STATE_TOGGLE == eState )
560                 bFlag = bSet = !pOpt->IsShadowCursor();
561 
562             pOpt->SetShadowCursor(bSet);
563         break;
564 
565         default:
566             delete pOpt;
567             ASSERT(sal_False, Falsche Request-Methode);
568             return;
569     }
570 
571     // UserPrefs setzen Request als bearbeitet kennzeichnen
572     sal_Bool bWebView =  0 != dynamic_cast<const SwWebView*>(this);
573     SwWrtShell &rSh = GetWrtShell();
574     rSh.StartAction();
575     SwModule* pModule = SW_MOD();
576     if( !(*rSh.GetViewOptions() == *pOpt ))
577     {
578         rSh.ApplyViewOptions( *pOpt );
579         if( bBrowseModeChanged )
580         {
581             RecheckBrowseMode();
582             CheckVisArea();
583         }
584 
585         //Die UsrPref muessen als Modified gekennzeichnet werden.
586         //call for initialization
587         pModule->GetUsrPref(bWebView);
588         pModule->CheckSpellChanges( pOpt->IsOnlineSpell(), sal_False, sal_False, sal_False );
589     }
590     //OS:   Modified wieder zuruecksetzen, weil Ansicht/Felder
591     //      das Doc modified setzt.
592     if( !bModified )
593         rSh.ResetModified();
594 
595     pModule->ApplyUsrPref( *pOpt, this, bWebView ? VIEWOPT_DEST_WEB : VIEWOPT_DEST_TEXT );
596 
597     //mod #i6193# let postits know about new spellcheck setting
598     if ( nSlot == SID_AUTOSPELL_CHECK )
599         GetPostItMgr()->SetSpellChecking();
600 
601     const sal_Bool bLockedView = rSh.IsViewLocked();
602     rSh.LockView( sal_True ); //lock visible section
603     GetWrtShell().EndAction();
604     if( bBrowseModeChanged && !bFlag )
605         CalcVisArea( GetEditWin().GetOutputSizePixel() );
606     rSh.LockView( bLockedView );
607 
608     delete pOpt;
609     Invalidate(rReq.GetSlot());
610     if(!pArgs)
611         rReq.AppendItem(SfxBoolItem(nSlot, (sal_Bool)bFlag));
612     rReq.Done();
613 }
614 
615 IMPL_LINK( SwView, HtmlOptionsHdl, void*, EMPTYARG )
616 {
617     // Invalidierung, falls blinkender Text erlaubt/verboten wurde
618     GetViewFrame()->GetBindings().Invalidate(SID_DRAW_TEXT_MARQUEE);
619     return 0;
620 }
621 
622 /* vim: set noet sw=4 ts=4: */
623