1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: viewsh.hxx,v $
10 * $Revision: 1.65.40.1 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
32 #include <com/sun/star/embed/XClassifiedObject.hpp>
33 #include <com/sun/star/embed/XEmbeddedObject.hpp>
34 #include <tools/rtti.hxx>
35 #include <svtools/svarray.hxx>
37 #include <swtypes.hxx>
41 #include <vcl/mapmod.hxx>
43 namespace com
{ namespace sun
{ namespace star
{ namespace accessibility
{
44 class XAccessible
; } } } }
46 class SfxObjectShellRef
;
48 class IDocumentSettingAccess
;
49 class IDocumentDeviceAccess
;
50 class IDocumentMarkAccess
;
51 class IDocumentDrawModelAccess
;
52 class IDocumentRedlineAccess
;
53 class IDocumentLayoutAccess
;
54 class IDocumentFieldsAccess
;
55 class IDocumentContentOperations
;
56 class IDocumentStylePoolAccess
;
57 class IDocumentStatistics
;
58 class IDocumentUndoRedo
;
59 // --> OD 2007-11-14 #i83479#
60 class IDocumentListItems
;
61 class IDocumentOutlineNodes
;
73 class SwPagePreViewPrtData
;
80 class SvtAccessibilityOptions
;
81 // OD 12.12.2002 #103492#
82 class SwPagePreviewLayout
;
83 // --> OD 2005-12-01 #i27138#
88 struct SwAccessibilityOptions
;
95 //JP 19.07.98: - Bug 52312
96 // define fuer Flags, die im CTOR oder den darunter liegenden Schichten
98 // Zur Zeit wird fuer die DrawPage das PreView Flag benoetigt
99 #define VSHELLFLAG_ISPREVIEW ((long)0x1)
101 class SW_DLLPUBLIC ViewShell
: public Ring
103 friend void SetOutDev( ViewShell
*pSh
, OutputDevice
*pOut
);
104 friend void SetOutDevAndWin( ViewShell
*pSh
, OutputDevice
*pOut
,
105 Window
*pWin
, sal_uInt16 nZoom
);
107 friend class SwViewImp
;
108 friend class SwLayIdle
;
110 // OD 12.12.2002 #103492# - for setting visible area for page preview paint
111 friend class SwPagePreviewLayout
;
113 //Umsetzen der SwVisArea, damit vor dem Drucken sauber formatiert
115 friend void SetSwVisArea( ViewShell
*pSh
, const SwRect
&, BOOL bPDFExport
= FALSE
);
117 // --> PB 2007-05-30 #146850#
118 static BitmapEx
* pReplaceBmp
; // replaced display of still loaded images
119 static BitmapEx
* pErrorBmp
; // error display of missed images
122 static sal_Bool bLstAct
; // sal_True wenn Das EndAction der letzten Shell
123 // laeuft; also die EndActions der
124 // anderen Shells auf das Dokument
125 // abgearbeitet sind.
127 Point aPrtOffst
; //Ofst fuer den Printer,
128 //nicht bedruckbarer Rand.
129 Size aBrowseBorder
; //Rand fuer Framedokumente
132 SfxViewShell
*pSfxViewShell
;
133 SwViewImp
*pImp
; //Core-Interna der ViewShell.
134 //Der Pointer ist niemals 0.
136 Window
*pWin
; // = 0 during printing or pdf export
137 OutputDevice
*pOut
; // Window, Printer, VirtDev, ...
138 OutputDevice
* mpTmpRef
; // Temporariy reference device. Is used
139 // during (printer depending) prospect
140 // and page preview printing
141 // (because a scaling has to be set at
142 // the original printer)
145 SwAccessibilityOptions
* pAccOptions
;
148 sal_Bool bDocSizeChgd
:1; //Fuer DocChgNotify(): Neue DocGroesse bei
149 //EndAction an das DocMDI melden.
150 sal_Bool bPaintWorks
:1; //Normal Painten wenn sal_True,
151 //Paint merken wenn sal_False
152 sal_Bool bPaintInProgress
:1; //Kein zweifaches Paint durchlassen.
153 sal_Bool bViewLocked
:1; //Lockt den sichtbaren Bereich,
154 //MakeVisible laeuft dann in's leere.
155 sal_Bool bInEndAction
:1; //Fiese unstaende vermeiden, siehe viewsh.cxx
156 sal_Bool bPreView
:1; //Ist sal_True wenns eine PreView-ViewShell ist.
157 sal_Bool bFrameView
:1; //sal_True wenn es ein (HTML-)Frame ist.
158 sal_Bool bEnableSmooth
:1; //Disable des SmoothScroll z.B. fuer
159 //Drag der Scrollbars.
160 sal_Bool bEndActionByVirDev
:1; //Paints aus der EndAction immer ueber virtuelles
162 //Device (etwa beim Browsen)
164 // OD 2004-06-01 #i26791# - boolean, indicating that class in in constructor
165 bool mbInConstructor
:1;
168 SdrPaintWindow
* mpTargetPaintWindow
;
169 OutputDevice
* mpBufferedOut
;
171 //Initialisierung, wird von den verschiedenen Konstruktoren gerufen.
172 SW_DLLPRIVATE
void Init( const SwViewOption
*pNewOpt
);
174 inline void ResetInvalidRect();
176 SW_DLLPRIVATE
void Reformat(); //Invalidert das ges. Layout (ApplyViewOption)
178 SW_DLLPRIVATE
void PaintDesktop( const SwRect
& ); // sammeln der Werte fuers
179 // Malen der Wiese und rufen
180 // PaintDesktop gesplittet, dieser Teil wird auch von PreViewPage benutzt
181 SW_DLLPRIVATE
void _PaintDesktop( const SwRegionRects
&rRegion
);
183 SW_DLLPRIVATE sal_Bool
CheckInvalidForPaint( const SwRect
& );//Direkt Paint oder lieber
184 //eine Aktion ausloesen.
186 SW_DLLPRIVATE
void Scroll(); //Scrollen wenn sich aus der LayAction Scrollmoeglichkeiten
189 SW_DLLPRIVATE
void PrepareForPrint( const SwPrtOptions
&rOptions
);
191 SW_DLLPRIVATE
void ImplApplyViewOptions( const SwViewOption
&rOpt
);
194 static ShellResource
* pShellRes
; // Resourcen fuer die Shell
195 static Window
* pCareWindow
; // diesem Fenster ausweichen
197 SwRect aVisArea
; //Die moderne Ausfuerung der VisArea
198 SwDoc
*pDoc
; //Das Dokument, niemals 0
200 sal_uInt16 nStartAction
; //ist != 0 wenn mindestens eine ::com::sun::star::chaos::Action laeuft
201 sal_uInt16 nLockPaint
; //ist != 0 wenn das Paint gelocked ist.
206 SwViewImp
*Imp() { return pImp
; }
207 const SwViewImp
*Imp() const { return pImp
; }
209 const SwNodes
& GetNodes() const;
211 //Nach Druckerwechsel, vom Doc
212 //pPDFOut != NULL is used for PDF export.
213 void InitPrt( SfxPrinter
* , OutputDevice
*pPDFOut
= NULL
);
215 //Klammerung von zusammengehoerenden Aktionen.
216 inline void StartAction();
217 void ImplStartAction();
218 inline void EndAction( const sal_Bool bIdleEnd
= sal_False
);
219 void ImplEndAction( const sal_Bool bIdleEnd
= sal_False
);
220 sal_uInt16
ActionCount() const { return nStartAction
; }
221 sal_Bool
ActionPend() const { return nStartAction
!= 0; }
222 sal_Bool
IsInEndAction() const { return bInEndAction
; }
224 void SetEndActionByVirDev( sal_Bool b
) { bEndActionByVirDev
= b
; }
225 sal_Bool
IsEndActionByVirDev() { return bEndActionByVirDev
; }
227 // Per UNO wird am RootFrame fuer alle shells der ActionCount kurzfristig
228 // auf Null gesetzt und wieder restauriert
229 void SetRestoreActions(sal_uInt16 nSet
);
230 sal_uInt16
GetRestoreActions() const;
232 inline sal_Bool
HasInvalidRect() const { return aInvalidRect
.HasArea(); }
233 void ChgHyphenation() { Reformat(); }
234 void ChgNumberDigits();
236 //Methoden fuer Paint- und Scrollrects, die auf allen Shells im
238 sal_Bool
AddPaintRect( const SwRect
&rRect
);
239 void AddScrollRect( const SwFrm
*pFrm
, const SwRect
&rRect
, long nOffs
);
240 void SetNoNextScroll();
242 void InvalidateWindows( const SwRect
&rRect
);
244 //////////////////////////////////////////////////////////////////////////////
245 // #i72754# set of Pre/PostPaints with lock counter and initial target OutDev
247 sal_uInt32 mnPrePostPaintCount
;
248 OutputDevice
* mpPrePostOutDev
;
249 MapMode maPrePostMapMode
;
252 void DLPrePaint2(const Region
& rRegion
);
253 void DLPostPaint2(bool bPaintFormLayer
);
254 const MapMode
& getPrePostMapMode() const { return maPrePostMapMode
; }
255 //////////////////////////////////////////////////////////////////////////////
257 virtual void Paint(const Rectangle
&rRect
);
258 sal_Bool
IsPaintInProgress() const { return bPaintInProgress
; }
259 bool IsDrawingLayerPaintInProgress() const { return 0 != mnPrePostPaintCount
; }
261 //Benachrichtung, dass sich der sichtbare Bereich geaendert hat.
262 //VisArea wird neu gesetzt, anschliessend wird gescrollt.
263 //Das uebergebene Rect liegt auf Pixelgrenzen,
264 //um Pixelfehler beim Scrollen zu vermeiden.
265 virtual void VisPortChgd( const SwRect
& );
266 sal_Bool
SmoothScroll( long lXDiff
, long lYDiff
, const Rectangle
* );//Browser
267 void EnableSmooth( sal_Bool b
) { bEnableSmooth
= b
; }
269 const SwRect
&VisArea() const { return aVisArea
; }
270 //Es wird, wenn notwendig, soweit gescrollt, dass das
271 //uebergebene Rect im sichtbaren Ausschnitt liegt.
272 void MakeVisible( const SwRect
& );
274 //Bei naechster Gelegenheit die neue Dokuemntgroesse an das UI weiterreichen.
275 void SizeChgNotify();
276 void UISizeNotify(); //Das weiterreichen der aktuellen groesse.
278 Point
GetPagePos( sal_uInt16 nPageNum
) const;
280 sal_uInt16
GetNumPages(); //Anzahl der aktuellen Seiten Layout erfragen.
281 sal_Bool
IsDummyPage( USHORT nPageNum
) const; // An empty page?
283 //Invalidierung der ersten Sichtbaren Seite fuer alle Shells im Ring.
284 void SetFirstVisPageInvalid();
286 SwRootFrm
*GetLayout() const;
287 sal_Bool
IsNewLayout() const; //Wurde das Layout geladen oder neu
290 Size
GetDocSize() const;// erfrage die Groesse des Dokuments
292 void CalcLayout(); //Durchformatierung des Layouts erzwingen.
294 inline SwDoc
*GetDoc() const { return pDoc
; } //niemals 0.
296 /** Provides access to the document setting interface
298 const IDocumentSettingAccess
* getIDocumentSettingAccess() const;
299 IDocumentSettingAccess
* getIDocumentSettingAccess();
301 /** Provides access to the document device interface
303 const IDocumentDeviceAccess
* getIDocumentDeviceAccess() const;
304 IDocumentDeviceAccess
* getIDocumentDeviceAccess();
306 /** Provides access to the document bookmark interface
308 const IDocumentMarkAccess
* getIDocumentMarkAccess() const;
309 IDocumentMarkAccess
* getIDocumentMarkAccess();
311 /** Provides access to the document draw model interface
313 const IDocumentDrawModelAccess
* getIDocumentDrawModelAccess() const;
314 IDocumentDrawModelAccess
* getIDocumentDrawModelAccess();
316 /** Provides access to the document redline interface
318 const IDocumentRedlineAccess
* getIDocumentRedlineAccess() const;
319 IDocumentRedlineAccess
* getIDocumentRedlineAccess();
321 /** Provides access to the document layout interface
323 const IDocumentLayoutAccess
* getIDocumentLayoutAccess() const;
324 IDocumentLayoutAccess
* getIDocumentLayoutAccess();
326 /** Provides access to the document fields administration interface
328 const IDocumentFieldsAccess
* getIDocumentFieldsAccess() const;
330 /** Provides access to the content operations interface
332 IDocumentContentOperations
* getIDocumentContentOperations();
334 /** Provides access to the document style pool interface
336 IDocumentStylePoolAccess
* getIDocumentStylePoolAccess();
338 /** Provides access to the document statistics interface
340 const IDocumentStatistics
* getIDocumentStatistics() const;
342 /** Provides access to the document undo/redo interface
344 IDocumentUndoRedo
* getIDocumentUndoRedoAccess();
346 // --> OD 2007-11-14 #i83479#
347 const IDocumentListItems
* getIDocumentListItemsAccess() const;
348 const IDocumentOutlineNodes
* getIDocumentOutlineNodesAccess() const;
351 // 1. GetRefDev: Either the printer or the virtual device from the doc
352 // 2. GetWin: Available if we not printing
353 // 3. GetOut: Printer, Window or Virtual device
354 OutputDevice
& GetRefDev() const;
355 inline Window
* GetWin() const { return pWin
; }
356 inline OutputDevice
* GetOut() const { return pOut
; }
358 static inline sal_Bool
IsLstEndAction() { return ViewShell::bLstAct
; }
360 //Andern alle PageDescriptoren
361 void ChgAllPageOrientation( sal_uInt16 eOri
);
362 void ChgAllPageSize( Size
&rSz
);
364 //Druckauftrag abwickeln.
365 // pPDFOut != Null is: do PDF Export (no printing!)
366 sal_Bool
Prt( SwPrtOptions
& rOptions
, SfxProgress
* pProgress
,
367 OutputDevice
* pPDFOut
= NULL
);
369 //"Drucken" fuer OLE 2.0
370 static void PrtOle2( SwDoc
*pDoc
, const SwViewOption
*pOpt
, SwPrtOptions
& rOptions
,
371 OutputDevice
* pOleOut
, const Rectangle
& rRect
);
373 // creates temporary doc with selected text for PDF export
374 SwDoc
* CreatePrtDoc( SfxPrinter
* pPrt
, SfxObjectShellRef
& );
375 SwDoc
* FillPrtDoc( SwDoc
* pPrtDoc
, const SfxPrinter
* pPrt
);
377 //Wird intern fuer die Shell gerufen die Druckt. Formatiert die Seiten.
378 void CalcPagesForPrint( sal_uInt16 nMax
, SfxProgress
* pProgress
= 0,
379 const String
* pStr
= NULL
, ULONG nMergeAct
= 0, ULONG nMergeCnt
= 0 );
382 void UpdateFlds(sal_Bool bCloseDB
= sal_False
);
383 sal_Bool
IsAnyFieldInDoc() const;
384 // update all charts, for that exists any table
385 void UpdateAllCharts();
386 sal_Bool
HasCharts() const;
389 // DOCUMENT COMPATIBILITY FLAGS START
392 // Sollen Absatzabstaende addiert oder maximiert werden?
393 void SetParaSpaceMax( bool bNew
);
395 // Sollen Absatzabstaende addiert oder maximiert werden?
396 void SetParaSpaceMaxAtPages( bool bNew
);
398 // compatible behaviour of tabs
399 void SetTabCompat( bool bNew
);
401 //#i24363# tab stops relative to indent
402 void SetTabsRelativeToIndent( bool bNew
);
404 // font metric attribute "External Leading" should be considered
405 void SetAddExtLeading( bool bNew
);
407 // formatting by virtual device or printer
408 void SetUseVirDev( bool nNew
);
410 // OD 2004-02-16 #106629# - adding paragraph and table spacing at bottom
412 void SetAddParaSpacingToTableCells( bool _bAddParaSpacingToTableCells
);
414 // OD 06.01.2004 #i11859# - former formatting of text lines with
415 // proportional line spacing or not
416 void SetUseFormerLineSpacing( bool _bUseFormerLineSpacing
);
418 // OD 2004-03-12 #i11860# - former object positioning
419 void SetUseFormerObjectPositioning( bool _bUseFormerObjPos
);
421 // OD 2004-05-05 #i28701#
422 void SetConsiderWrapOnObjPos( bool _bConsiderWrapOnObjPos
);
425 void SetUseFormerTextWrapping( bool _bUseFormerTextWrapping
);
427 // -> PB 2007-06-11 #i45491#
428 void SetDoNotJustifyLinesWithManualBreak( bool _bDoNotJustifyLinesWithManualBreak
);
432 // DOCUMENT COMPATIBILITY FLAGS END
435 //Ruft den Idle-Formatierer des Layouts
438 inline const SwViewOption
*GetViewOptions() const { return pOpt
; }
439 void ApplyViewOptions( const SwViewOption
&rOpt
);
440 void SetUIOptions( const SwViewOption
&rOpt
);
441 void SetReadonlyOption(sal_Bool bSet
); // Readonly-Bit d. ViewOptions setzen
442 void SetPDFExportOption(sal_Bool bSet
); // set/reset PDF export mode
443 void SetPrtFormatOption(sal_Bool bSet
); // PrtFormat-Bit d. ViewOptions setzen
444 void SetReadonlySelectionOption(sal_Bool bSet
);//change the selection mode in readonly docs
446 const SwAccessibilityOptions
* GetAccessibilityOptions() const { return pAccOptions
;}
448 static void SetShellRes( ShellResource
* pRes
) { pShellRes
= pRes
; }
449 static ShellResource
* GetShellRes();
451 static void SetCareWin( Window
* pNew
);
452 static Window
* GetCareWin(ViewShell
& rVSh
)
453 { return pCareWindow
? pCareWindow
: CareChildWin(rVSh
); }
454 static Window
* CareChildWin(ViewShell
& rVSh
);
456 inline SfxViewShell
*GetSfxViewShell() { return pSfxViewShell
; }
457 inline void SetSfxViewShell(SfxViewShell
*pNew
) { pSfxViewShell
= pNew
; }
459 // Selektion der Draw ::com::sun::star::script::Engine geaendert
460 virtual void DrawSelChanged();
462 // OD 12.12.2002 #103492#
463 SwPagePreviewLayout
* PagePreviewLayout();
465 /** adjust view options for page preview
467 OD 09.01.2003 #i6467#
468 Because page preview should show the document as it is printed -
469 page preview is print preview -, the view options are adjusted to the
470 same as for printing.
472 @param _rPrintOptions
473 input parameter - constant reference to print options, to which the
474 view option will be adjusted.
476 void AdjustOptionsForPagePreview( const SwPrtOptions
&_rPrintOptions
);
478 // print page/print preview
479 void PrintPreViewPage( SwPrtOptions
& rOptions
, sal_uInt16 nRowCol
,
480 SfxProgress
& rProgress
,
481 const SwPagePreViewPrtData
* = 0 );
483 // Prospekt-Format drucken
484 void PrintProspect( SwPrtOptions
&, SfxProgress
& , BOOL bRTL
);
486 sal_Bool
IsViewLocked() const { return bViewLocked
; }
487 void LockView( sal_Bool b
) { bViewLocked
= b
; }
489 inline void LockPaint();
490 void ImplLockPaint();
491 inline void UnlockPaint( sal_Bool bVirDev
= sal_False
);
492 void ImplUnlockPaint( sal_Bool bVirDev
);
493 sal_Bool
IsPaintLocked() const { return nLockPaint
!= 0; }
495 // Abfragen/Erzeugen DrawView + PageView
496 sal_Bool
HasDrawView() const;
499 //DrawView darf u.U. am UI benutzt werden.
500 SdrView
*GetDrawView();
501 const SdrView
*GetDrawView() const { return ((ViewShell
*)this)->GetDrawView(); }
503 //sorge dafuer, das auf jedenfall die MarkListe aktuell ist (Bug 57153)
504 SdrView
*GetDrawViewWithValidMarkList();
506 // erfrage den Attribut Pool
507 inline const SfxItemPool
& GetAttrPool() const;
508 SfxItemPool
& GetAttrPool();
510 sal_Bool
IsPreView() const { return bPreView
; }
512 sal_Bool
IsFrameView() const { return bFrameView
; }
513 void SetFrameView( const Size
& rBrowseBorder
)
514 { bFrameView
= sal_True
; aBrowseBorder
= rBrowseBorder
; }
516 //Nimmt die notwendigen Invalidierungen vor,
517 //wenn sich der BrowdseModus aendert, bBrowseChgd == sal_True
518 //oder, im BrowseModus, wenn sich die Groessenverhaeltnisse
519 //aendern (bBrowseChgd == sal_False)
520 void CheckBrowseView( BOOL bBrowseChgd
);
522 const Size
& GetBrowseBorder() const;
523 sal_Int32
GetBrowseWidth() const;
524 void SetBrowseBorder( const Size
& rNew
);
526 ::com::sun::star::uno::Reference
< ::com::sun::star::accessibility::XAccessible
> CreateAccessible();
528 // OD 15.01.2003 #103492# - change method signature due to new page preview
530 ::com::sun::star::uno::Reference
<
531 ::com::sun::star::accessibility::XAccessible
>
532 CreateAccessiblePreview();
534 void ShowPreViewSelection( sal_uInt16 nSelPage
);
535 void InvalidateAccessibleFocus();
537 //apply Accessiblity options
538 void ApplyAccessiblityOptions(SvtAccessibilityOptions
& rAccessibilityOptions
);
540 /** invalidate CONTENT_FLOWS_FROM/_TO relation for paragraphs
542 OD 2005-12-01 #i27138#
547 input parameter - paragraph frame, for which the relation CONTENT_FLOWS_FROM
548 has to be invalidated.
549 If NULL, no CONTENT_FLOWS_FROM relation has to be invalidated
552 input parameter - paragraph frame, for which the relation CONTENT_FLOWS_TO
553 has to be invalidated.
554 If NULL, no CONTENT_FLOWS_TO relation has to be invalidated
556 void InvalidateAccessibleParaFlowRelation( const SwTxtFrm
* _pFromTxtFrm
,
557 const SwTxtFrm
* _pToTxtFrm
);
559 /** invalidate text selection for paragraphs
561 OD 2005-12-12 #i27301#
565 void InvalidateAccessibleParaTextSelection();
567 /** invalidate attributes for paragraphs
569 OD 2009-01-06 #i88069#
574 input parameter - paragraph frame, whose attributes have changed
576 void InvalidateAccessibleParaAttrs( const SwTxtFrm
& rTxtFrm
);
578 ViewShell( ViewShell
&, Window
*pWin
= 0, OutputDevice
*pOut
= 0,
580 ViewShell( SwDoc
& rDoc
, Window
*pWin
,
581 const SwViewOption
*pOpt
= 0, OutputDevice
*pOut
= 0,
583 virtual ~ViewShell();
585 // --> FME 2004-06-15 #i12836# enhanced pdf export
586 sal_Int32
GetPageNumAndSetOffsetForPDF( OutputDevice
& rOut
, const SwRect
& rRect
) const;
589 inline bool IsInConstructor() const { return mbInConstructor
; }
591 // --> PB 2007-05-30 #146850#
592 static const BitmapEx
& GetReplacementBitmap( bool bIsErrorState
);
593 static void DeleteReplacementBitmaps();
596 const SwPostItMgr
* GetPostItMgr() const { return (const_cast<ViewShell
*>(this))->GetPostItMgr(); }
597 SwPostItMgr
* GetPostItMgr();
600 //---- class CurrShell verwaltet den globalen ShellPointer -------------------
608 CurrShell( ViewShell
*pNew
);
612 inline void ViewShell::ResetInvalidRect()
614 aInvalidRect
.Clear();
617 inline void ViewShell::StartAction()
619 if ( !nStartAction
++ )
622 inline void ViewShell::EndAction( const sal_Bool bIdleEnd
)
624 if( 0 == (nStartAction
- 1) )
625 ImplEndAction( bIdleEnd
);
629 inline void ViewShell::LockPaint()
634 inline void ViewShell::UnlockPaint( sal_Bool bVirDev
)
636 if ( 0 == --nLockPaint
)
637 ImplUnlockPaint( bVirDev
);
639 inline const SfxItemPool
& ViewShell::GetAttrPool() const
641 return ((ViewShell
*)this)->GetAttrPool();