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