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