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