LibreOffice Module sw (master) 1
viewimp.cxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#include <config_wasm_strip.h>
21
22#include <rootfrm.hxx>
23#include <pagefrm.hxx>
24#include <viewimp.hxx>
25#include <viewopt.hxx>
26#include <flyfrm.hxx>
27#include <layact.hxx>
28#include <dview.hxx>
29#include <svx/svdpage.hxx>
30#include <accmap.hxx>
31
32#include <officecfg/Office/Common.hxx>
33#include <pagepreviewlayout.hxx>
34#include <comphelper/lok.hxx>
38#include <drawdoc.hxx>
39#include <prevwpage.hxx>
40#include <sfx2/viewsh.hxx>
41
42void SwViewShellImp::Init( const SwViewOption *pNewOpt )
43{
44 OSL_ENSURE( m_pDrawView, "SwViewShellImp::Init without DrawView" );
45 //Create PageView if it doesn't exist
46 SwRootFrame *pRoot = m_pShell->GetLayout();
47 if ( !m_pSdrPageView )
48 {
50 if ( !pRoot->GetDrawPage() )
51 pRoot->SetDrawPage( rIDDMA.GetDrawModel()->GetPage( 0 ) );
52
53 if ( pRoot->GetDrawPage()->GetSize() != pRoot->getFrameArea().SSize() )
54 pRoot->GetDrawPage()->SetSize( pRoot->getFrameArea().SSize() );
55
56 m_pSdrPageView = m_pDrawView->ShowSdrPage( pRoot->GetDrawPage());
57 // Notify drawing page view about invisible layers
59 }
60 m_pDrawView->SetDragStripes( pNewOpt->IsCrossHair() );
61 m_pDrawView->SetGridSnap( pNewOpt->IsSnap() );
62 m_pDrawView->SetGridVisible( pNewOpt->IsGridVisible() );
63 const Size &rSz = pNewOpt->GetSnapSize();
64 m_pDrawView->SetGridCoarse( rSz );
65 const Size aFSize
66 ( rSz.Width() ? rSz.Width() /std::max(short(1),pNewOpt->GetDivisionX()):0,
67 rSz.Height()? rSz.Height()/std::max(short(1),pNewOpt->GetDivisionY()):0);
68 m_pDrawView->SetGridFine( aFSize );
69 Fraction aSnGrWdtX(rSz.Width(), pNewOpt->GetDivisionX() + 1);
70 Fraction aSnGrWdtY(rSz.Height(), pNewOpt->GetDivisionY() + 1);
71 m_pDrawView->SetSnapGridWidth( aSnGrWdtX, aSnGrWdtY );
72
73 if ( pRoot->getFrameArea().HasArea() )
74 m_pDrawView->SetWorkArea( pRoot->getFrameArea().SVRect() );
75
76 if ( GetShell()->IsPreview() )
77 m_pDrawView->SetAnimationEnabled( false );
78
79 m_pDrawView->SetUseIncompatiblePathCreateInterface( false );
80
81 // set handle size to 9 pixels, always
82 m_pDrawView->SetMarkHdlSizePixel(9);
83}
84
87 m_pShell( pParent ),
88 m_pSdrPageView( nullptr ),
89 m_pFirstVisiblePage( nullptr ),
90 m_pLayAction( nullptr ),
91 m_pIdleAct( nullptr ),
92 m_bFirstPageInvalid( true ),
93 m_bResetHdlHiddenPaint( false ),
94 m_bSmoothUpdate( false ),
95 m_bStopSmooth( false ),
96 m_nRestoreActions( 0 )
97{
98}
99
101{
102#if !ENABLE_WASM_STRIP_ACCESSIBILITY
103 m_pAccessibleMap.reset();
104#endif
105
106 m_pPagePreviewLayout.reset();
107
108 // Make sure HideSdrPage is also executed after ShowSdrPage.
109 if( m_pDrawView )
110 m_pDrawView->HideSdrPage();
111
112 m_pDrawView.reset();
113
115
116 OSL_ENSURE( !m_pLayAction, "Have action for the rest of your life." );
117 OSL_ENSURE( !m_pIdleAct,"Be idle for the rest of your life." );
118}
119
121{
122 // In case of tiled rendering the visual area is the last painted tile -> not interesting.
124 {
125 if ( !m_oPaintRegion )
126 {
127 // In case of normal rendering, this makes sure only visible rectangles are painted.
128 // Otherwise get the rectangle of the full document, so all paint rectangles are invalidated.
130 m_oPaintRegion.emplace();
131 m_oPaintRegion->ChangeOrigin(rArea);
132 }
133 if(!m_oPaintRegion->empty())
134 {
135 // This function often gets called with rectangles that line up vertically.
136 // Try to extend the last one downwards to include the new one (use Union()
137 // in case the new one is actually already contained in the last one).
138 SwRect& last = m_oPaintRegion->back();
139 if(last.Left() == rRect.Left() && last.Width() == rRect.Width()
140 && last.Bottom() + 1 >= rRect.Top() && last.Bottom() <= rRect.Bottom())
141 {
142 last.Union(rRect);
143 // And these rectangles lined up vertically often come up in groups
144 // that line up horizontally. Try to extend the previous rectangle
145 // to the right to include the last one.
146 if(m_oPaintRegion->size() > 1)
147 {
148 SwRect& last2 = (*m_oPaintRegion)[m_oPaintRegion->size() - 2];
149 if(last2.Top() == last.Top() && last2.Height() == last.Height()
150 && last2.Right() + 1 >= last.Left() && last2.Right() <= last2.Right())
151 {
152 last2.Union(last);
153 m_oPaintRegion->pop_back();
154 return true;
155 }
156 }
157 return true;
158 }
159 }
160 (*m_oPaintRegion) += rRect;
161 return true;
162 }
163 return false;
164}
165
167{
168 std::vector<SwRect>& l = m_pendingLOKInvalidations;
169 if(l.empty() && m_pShell && m_pShell->GetSfxViewShell()) // Announce that these invalidations will need flushing.
171 // These are often repeated, so check first for duplicates.
172 if( std::find( l.begin(), l.end(), rRect ) == l.end())
173 l.push_back( rRect );
174}
175
177{
178 std::vector<SwRect> ret;
179 std::swap(ret, m_pendingLOKInvalidations);
180 return ret;
181}
182
184{
185 if ( m_pLayAction )
187}
188
190{
192}
193
195{
197 {
199 return true;
200 }
201 return false;
202}
203
205{
207 {
208 //We are in an action and because of erase actions the VisArea is
209 //after the first visible page.
210 //To avoid excessive formatting, hand back the last page.
214 }
215 else
216 {
217 const SwViewOption* pSwViewOption = GetShell()->GetViewOptions();
218 const bool bBookMode = pSwViewOption->IsViewLayoutBookMode();
219
220 SwPageFrame *pPage = static_cast<SwPageFrame*>(m_pShell->GetLayout()->Lower());
221 SwRect aPageRect = pPage->GetBoundRect(pRenderContext);
222 while ( pPage && !aPageRect.Overlaps( m_pShell->VisArea() ) )
223 {
224 pPage = static_cast<SwPageFrame*>(pPage->GetNext());
225 if ( pPage )
226 {
227 aPageRect = pPage->GetBoundRect(pRenderContext);
228 if ( bBookMode && pPage->IsEmptyPage() )
229 {
230 const SwPageFrame& rFormatPage = pPage->GetFormatPage();
231 aPageRect.SSize( rFormatPage.GetBoundRect(pRenderContext).SSize() );
232 }
233 }
234 }
235 m_pFirstVisiblePage = pPage ? pPage : static_cast<SwPageFrame*>(m_pShell->GetLayout()->Lower());
236 }
237 m_bFirstPageInvalid = false;
238}
239
241{
243
244 // the else here is not an error, MakeDrawModel_() calls this method again
245 // after the DrawModel is created to create DrawViews for all shells...
246 if( !rIDDMA.GetDrawModel() )
247 {
248 rIDDMA.MakeDrawModel_();
249 }
250 else
251 {
252 if ( !m_pDrawView )
253 {
254 // #i72809#
255 // Discussed with FME, he also thinks that the getPrinter is old and not correct. When i got
256 // him right, it anyways returns GetOut() when it's a printer, but NULL when not. He suggested
257 // to use GetOut() and check the existing cases.
258 // Check worked well. Took a look at viewing, printing, PDF export and print preview with a test
259 // document which has an empty 2nd page (right page, see bug)
260 auto pWin = GetShell()->GetWin();
261 OutputDevice* pOutDevForDrawView = pWin ? pWin->GetOutDev() : nullptr;
262
263 if(!pOutDevForDrawView)
264 {
265 pOutDevForDrawView = GetShell()->GetOut();
266 }
267
268 m_pDrawView.reset( new SwDrawView(
269 *this,
270 *rIDDMA.GetOrCreateDrawModel(),
271 pOutDevForDrawView) );
272 }
273
274 GetDrawView()->SetActiveLayer("Heaven");
275 const SwViewOption* pSwViewOption = GetShell()->GetViewOptions();
276 Init(pSwViewOption);
277
278 // #i68597# If document is read-only, we will not profit from overlay,
279 // so switch it off.
280 if (m_pDrawView->IsBufferedOverlayAllowed())
281 {
282 if(pSwViewOption->IsReadonly())
283 {
284 m_pDrawView->SetBufferedOverlayAllowed(false);
285 }
286 }
287 }
288}
289
291{
292 Color aRet( COL_TRANSPARENT );
293 const SwViewShell &rSh = *GetShell();
294 if (rSh.GetWin() || rSh.isOutputToWindow())
295 {
296 if ( rSh.GetViewOptions()->getBrowseMode() &&
298 aRet = rSh.GetViewOptions()->GetRetoucheColor();
299 else if(rSh.GetViewOptions()->IsPagePreview() &&
301 aRet = COL_WHITE;
302 else
303 aRet = rSh.GetViewOptions()->GetDocColor();
304 }
305 return aRet;
306}
307
309{
311 SetFirstVisPage(pRenderContext);
312 return m_pFirstVisiblePage;
313}
314
315const SwPageFrame *SwViewShellImp::GetFirstVisPage(OutputDevice const * pRenderContext) const
316{
318 const_cast<SwViewShellImp*>(this)->SetFirstVisPage(pRenderContext);
319 return m_pFirstVisiblePage;
320}
321
322const SwPageFrame* SwViewShellImp::GetLastVisPage(const OutputDevice* pRenderContext) const
323{
324 const SwViewOption* pSwViewOption = m_pShell->GetViewOptions();
325 const bool bBookMode = pSwViewOption->IsViewLayoutBookMode();
326 const SwPageFrame* pPage = GetFirstVisPage(pRenderContext);
327 const SwPageFrame* pLastVisPage = pPage;
328 SwRect aPageRect = pPage->GetBoundRect(pRenderContext);
329 while (pPage && (pPage->IsEmptyPage() || aPageRect.Overlaps(m_pShell->VisArea())))
330 {
331 pLastVisPage = pPage;
332 pPage = static_cast<const SwPageFrame*>(pPage->GetNext());
333 if (pPage)
334 {
335 aPageRect = pPage->GetBoundRect(pRenderContext);
336 if (bBookMode && pPage->IsEmptyPage())
337 {
338 const SwPageFrame& rFormatPage = pPage->GetFormatPage();
339 aPageRect.SSize(rFormatPage.GetBoundRect(pRenderContext).SSize());
340 }
341 }
342 }
343 return pLastVisPage;
344}
345
346// create page preview layout
348{
349 OSL_ENSURE( m_pShell->GetLayout(), "no layout - page preview layout can not be created.");
350 if ( m_pShell->GetLayout() )
352}
353
354#if !ENABLE_WASM_STRIP_ACCESSIBILITY
356{
357 // We require a layout and an XModel to be accessible.
359 vcl::Window *pWin = GetShell()->GetWin();
360 OSL_ENSURE( GetShell()->GetLayout(), "no layout, no access" );
361 OSL_ENSURE( pWin, "no window, no access" );
362
363 if( IsAccessible() && rIDLA.GetCurrentViewShell() && pWin )
364 {
365 try
366 {
368 }
369 catch (uno::Exception const&)
370 {
371 TOOLS_WARN_EXCEPTION("sw.a11y", "");
372 assert(!"SwViewShellImp::UpdateAccessible: unhandled exception");
373 }
374 }
375}
376
378 const SdrObject *pObj,
379 bool bRecursive,
380 bool bCanSkipInvisible)
381{
382 OSL_ENSURE( !pFrame || pFrame->IsAccessibleFrame(), "frame is not accessible" );
383 for(SwViewShell& rTmp : GetShell()->GetRingContainer())
384 {
385 if( rTmp.Imp()->IsAccessible() )
386 rTmp.Imp()->GetAccessibleMap().A11yDispose( pFrame, pObj, nullptr, bRecursive, bCanSkipInvisible );
387 }
388}
389
390void SwViewShellImp::MoveAccessible( const SwFrame *pFrame, const SdrObject *pObj,
391 const SwRect& rOldFrame )
392{
393 OSL_ENSURE( !pFrame || pFrame->IsAccessibleFrame(), "frame is not accessible" );
394 for(SwViewShell& rTmp : GetShell()->GetRingContainer())
395 {
396 if( rTmp.Imp()->IsAccessible() )
397 rTmp.Imp()->GetAccessibleMap().InvalidatePosOrSize( pFrame, pObj, nullptr,
398 rOldFrame );
399 }
400}
401
403{
404 OSL_ENSURE( pFrame->IsAccessibleFrame(), "frame is not accessible" );
405 for(SwViewShell& rTmp : GetShell()->GetRingContainer())
406 {
407 if( rTmp.Imp()->IsAccessible() )
408 rTmp.Imp()->GetAccessibleMap().InvalidateContent( pFrame );
409 }
410}
411
413{
414 if( IsAccessible() )
416}
417
419 const SwFrame *pFrame )
420{
421 if( bAllShells )
422 {
423 for(SwViewShell& rTmp : GetShell()->GetRingContainer())
424 {
425 if( rTmp.Imp()->IsAccessible() )
426 rTmp.Imp()->GetAccessibleMap().InvalidateEditableStates( pFrame );
427 }
428 }
429 else if( IsAccessible() )
430 {
432 }
433}
434
436 const SwFlyFrame *pFollow )
437{
438 for(SwViewShell& rTmp : GetShell()->GetRingContainer())
439 {
440 if( rTmp.Imp()->IsAccessible() )
441 rTmp.Imp()->GetAccessibleMap().InvalidateRelationSet( pMaster,
442 pFollow );
443 }
444}
445
448 const SwTextFrame* _pToTextFrame )
449{
450 if ( !_pFromTextFrame && !_pToTextFrame )
451 {
452 // No text frame provided. Thus, nothing to do.
453 return;
454 }
455
456 for(SwViewShell& rTmp : GetShell()->GetRingContainer())
457 {
458 if ( rTmp.Imp()->IsAccessible() )
459 {
460 if ( _pFromTextFrame )
461 {
462 rTmp.Imp()->GetAccessibleMap().
463 InvalidateParaFlowRelation( *_pFromTextFrame, true );
464 }
465 if ( _pToTextFrame )
466 {
467 rTmp.Imp()->GetAccessibleMap().
468 InvalidateParaFlowRelation( *_pToTextFrame, false );
469 }
470 }
471 }
472}
473
476{
477 for(SwViewShell& rTmp : GetShell()->GetRingContainer())
478 {
479 if ( rTmp.Imp()->IsAccessible() )
480 {
481 rTmp.Imp()->GetAccessibleMap().InvalidateTextSelectionOfAllParas();
482 }
483 }
484}
485
488{
489 for(SwViewShell& rTmp : GetShell()->GetRingContainer())
490 {
491 if ( rTmp.Imp()->IsAccessible() )
492 {
493 rTmp.Imp()->GetAccessibleMap().InvalidateAttr( rTextFrame );
494 }
495 }
496}
497
498void SwViewShellImp::UpdateAccessiblePreview( const std::vector<std::unique_ptr<PreviewPage>>& _rPreviewPages,
499 const Fraction& _rScale,
500 const SwPageFrame* _pSelectedPageFrame,
501 const Size& _rPreviewWinSize )
502{
503 if( IsAccessible() )
504 GetAccessibleMap().UpdatePreview( _rPreviewPages, _rScale,
505 _pSelectedPageFrame, _rPreviewWinSize );
506}
507
509{
510 if( IsAccessible() )
512}
513
515{
516 assert(!m_pAccessibleMap);
517 m_pAccessibleMap = std::make_shared<SwAccessibleMap>(GetShell());
518 return m_pAccessibleMap.get();
519}
520
522{
523 if( IsAccessible() )
525}
526#endif // ENABLE_WASM_STRIP_ACCESSIBILITY
527
528/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual void NotifyInvisibleLayers(SdrPageView &_rSdrPageView)=0
method to notify drawing page view about the invisible layers
virtual SwDrawModel * GetOrCreateDrawModel()=0
virtual SwDrawModel * MakeDrawModel_()=0
virtual const SwDrawModel * GetDrawModel() const =0
Draw Model and id accessors.
Provides access to the layout of a document.
virtual const SwViewShell * GetCurrentViewShell() const =0
Returns the layout set at the document.
const SdrPage * GetPage(sal_uInt16 nPgNum) const
Size GetSize() const
virtual void SetSize(const Size &aSiz)
void SetActiveLayer(const OUString &rName)
virtual void libreOfficeKitViewAddPendingInvalidateTiles() override
constexpr tools::Long Height() const
constexpr tools::Long Width() const
void UpdatePreview(const std::vector< std::unique_ptr< PreviewPage > > &_rPreviewPages, const Fraction &_rScale, const SwPageFrame *_pSelectedPageFrame, const Size &_rPreviewWinSize)
Definition: accmap.cxx:2904
void InvalidateCursorPosition(const css::uno::Reference< css::accessibility::XAccessible > &rAcc)
void InvalidatePreviewSelection(sal_uInt16 nSelPage)
Definition: accmap.cxx:2940
void InvalidateEditableStates(const SwFrame *_pFrame)
Definition: accmap.cxx:2740
css::uno::Reference< css::accessibility::XAccessible > GetDocumentView()
Definition: accmap.cxx:1769
void FireEvents()
Definition: accmap.cxx:2970
general base class for all free-flowing frames
Definition: flyfrm.hxx:79
const SwRect & getFrameArea() const
Definition: frame.hxx:179
Base class of the Writer layout elements.
Definition: frame.hxx:315
bool IsAccessibleFrame() const
Definition: frame.hxx:1256
SwFrame * GetNext()
Definition: frame.hxx:682
void SetUpdateExpFields()
Definition: layact.hxx:162
void CheckWaitCursor()
Definition: layact.cxx:72
bool IsCalcLayout() const
Definition: layact.hxx:173
const SwFrame * Lower() const
Definition: layfrm.hxx:101
A page of the document layout.
Definition: pagefrm.hxx:60
const SwPageFrame & GetFormatPage() const
Definition: pagechg.cxx:2470
bool IsEmptyPage() const
Definition: pagefrm.hxx:161
SwRect GetBoundRect(OutputDevice const *pOutputDevice) const
Definition: paintfrm.cxx:6440
Of course Writer needs its own rectangles.
Definition: swrect.hxx:35
void Height(tools::Long nNew)
Definition: swrect.hxx:193
bool HasArea() const
Definition: swrect.hxx:300
SwRect & Union(const SwRect &rRect)
Definition: swrect.cxx:35
void Top(const tools::Long nTop)
Definition: swrect.hxx:206
void Right(const tools::Long nRight)
Definition: swrect.hxx:202
void Bottom(const tools::Long nBottom)
Definition: swrect.hxx:211
void SSize(const Size &rNew)
Definition: swrect.hxx:180
bool Overlaps(const SwRect &rRect) const
Definition: swrect.hxx:374
tools::Rectangle SVRect() const
Definition: swrect.hxx:292
void Left(const tools::Long nLeft)
Definition: swrect.hxx:197
void Width(tools::Long nNew)
Definition: swrect.hxx:189
The root element of a Writer document layout.
Definition: rootfrm.hxx:85
const SdrPage * GetDrawPage() const
Definition: rootfrm.hxx:235
void SetDrawPage(SdrPage *pNew)
Definition: rootfrm.hxx:237
Represents the visualization of a paragraph.
Definition: txtfrm.hxx:168
bool IsReadonly() const
Definition: viewopt.hxx:627
bool IsPagePreview() const
Definition: viewopt.hxx:799
bool IsViewLayoutBookMode() const
Definition: viewopt.hxx:643
bool IsGridVisible() const
Definition: viewopt.hxx:532
short GetDivisionY() const
Definition: viewopt.hxx:610
const Color & GetRetoucheColor() const
Definition: viewopt.hxx:742
const Color & GetDocColor() const
Definition: viewopt.cxx:452
const Size & GetSnapSize() const
Definition: viewopt.hxx:530
bool getBrowseMode() const
Definition: viewopt.hxx:636
short GetDivisionX() const
Definition: viewopt.hxx:608
bool IsSnap() const
Definition: viewopt.hxx:524
bool IsCrossHair() const
Definition: viewopt.hxx:556
void MakeDrawView()
Definition: viewimp.cxx:240
void InvalidateAccessibleEditableState(bool bAllShells, const SwFrame *pFrame=nullptr)
Invalidate editable state for all accessible frames.
Definition: viewimp.cxx:418
void UpdateAccessible()
Update (this) accessible view.
Definition: viewimp.cxx:355
void CheckWaitCursor()
If an Action is running we ask it to check whether it's time to enable the WaitCursor.
Definition: viewimp.cxx:183
SwPageFrame * m_pFirstVisiblePage
Definition: viewimp.hxx:67
Color GetRetoucheColor() const
Definition: viewimp.cxx:290
SwLayAction * m_pLayAction
Definition: viewimp.hxx:72
void UpdateAccessiblePreview(const std::vector< std::unique_ptr< PreviewPage > > &_rPreviewPages, const Fraction &_rScale, const SwPageFrame *_pSelectedPageFrame, const Size &_rPreviewWinSize)
update data for accessible preview change method signature due to new page preview functionality
Definition: viewimp.cxx:498
const SwPageFrame * GetFirstVisPage(OutputDevice const *pRenderContext) const
Management of the first visible Page.
Definition: viewimp.cxx:315
bool AddPaintRect(const SwRect &rRect)
Definition: viewimp.cxx:120
void InvalidateAccessibleCursorPosition(const SwFrame *pFrame)
Invalidate accessible frame's cursor position.
Definition: viewimp.cxx:412
void InvalidateAccessiblePreviewSelection(sal_uInt16 nSelPage)
Definition: viewimp.cxx:508
void InvalidateAccessibleParaFlowRelation_(const SwTextFrame *_pFromTextFrame, const SwTextFrame *_pToTextFrame)
invalidate CONTENT_FLOWS_FROM/_TO relation for paragraphs
Definition: viewimp.cxx:447
bool IsUpdateExpFields()
Definition: viewimp.cxx:194
friend class SwPagePreviewLayout
Definition: viewimp.hxx:59
SwAccessibleMap & GetAccessibleMap()
Definition: viewimp.hxx:279
std::unique_ptr< SwDrawView > m_pDrawView
Definition: viewimp.hxx:64
void InitPagePreviewLayout()
Definition: viewimp.cxx:347
void InvalidateAccessibleFrameContent(const SwFrame *pFrame)
Invalidate accessible frame's content.
Definition: viewimp.cxx:402
void DeletePaintRegion()
Definition: viewimp.hxx:157
void DisposeAccessible(const SwFrame *pFrame, const SdrObject *pObj, bool bRecursive, bool bCanSkipInvisible)
Remove a frame from the accessible view.
Definition: viewimp.cxx:377
void InvalidateAccessibleRelationSet(const SwFlyFrame *pMaster, const SwFlyFrame *pFollow)
Invalidate frame's relation set (for chained frames)
Definition: viewimp.cxx:435
std::shared_ptr< SwAccessibleMap > m_pAccessibleMap
note: the map is uniquely owned here - the shared_ptr is only used so that SwAccessibleContext can ch...
Definition: viewimp.hxx:78
std::unique_ptr< SwPagePreviewLayout > m_pPagePreviewLayout
Definition: viewimp.hxx:88
bool m_bFirstPageInvalid
Definition: viewimp.hxx:80
void InvalidateAccessibleParaTextSelection_()
invalidate text selection for paragraphs
Definition: viewimp.cxx:475
SwViewShell * m_pShell
Definition: viewimp.hxx:61
SdrPageView * m_pSdrPageView
Definition: viewimp.hxx:65
void SetFirstVisPage(OutputDevice const *pRenderContext)
Definition: viewimp.cxx:204
std::optional< SwRegionRects > m_oPaintRegion
Definition: viewimp.hxx:68
void AddPendingLOKInvalidation(const SwRect &rRect)
Definition: viewimp.cxx:166
std::vector< SwRect > TakePendingLOKInvalidations()
Definition: viewimp.cxx:176
SwDrawView * GetDrawView()
Definition: viewimp.hxx:164
void Init(const SwViewOption *)
Definition: viewimp.cxx:42
const SwPageFrame * GetLastVisPage(const OutputDevice *pRenderContext) const
Definition: viewimp.cxx:322
SwViewShellImp(SwViewShell *)
CTor for the core internals.
Definition: viewimp.cxx:86
const SwViewShell * GetShell() const
Only for SwViewShell::Init()
Definition: viewimp.hxx:141
bool IsCalcLayoutProgress() const
Asks the LayAction if present.
Definition: viewimp.cxx:189
std::vector< SwRect > m_pendingLOKInvalidations
Definition: viewimp.hxx:70
void InvalidateAccessibleParaAttrs_(const SwTextFrame &rTextFrame)
invalidate attributes for paragraphs and paragraph's characters
Definition: viewimp.cxx:487
void FireAccessibleEvents()
Fire all accessible events that have been collected so far.
Definition: viewimp.cxx:521
SwAccessibleMap * CreateAccessibleMap()
Definition: viewimp.cxx:514
bool IsAccessible() const
Is this view accessible?
Definition: viewimp.hxx:228
void MoveAccessible(const SwFrame *pFrame, const SdrObject *pObj, const SwRect &rOldFrame)
Move a frame's position in the accessible view.
Definition: viewimp.cxx:390
SwLayIdle * m_pIdleAct
Definition: viewimp.hxx:74
vcl::RenderContext * GetOut() const
Definition: viewsh.hxx:365
const SwViewOption * GetViewOptions() const
Definition: viewsh.hxx:452
bool isOutputToWindow() const
Definition: viewsh.cxx:152
bool mbDocSizeChgd
Definition: viewsh.hxx:147
SwRootFrame * GetLayout() const
Definition: viewsh.cxx:2163
vcl::Window * GetWin() const
Definition: viewsh.hxx:364
const IDocumentDrawModelAccess & getIDocumentDrawModelAccess() const
Provides access to the document draw model interface.
Definition: viewsh.cxx:2823
const SwRect & VisArea() const
Definition: viewsh.cxx:642
const IDocumentLayoutAccess & getIDocumentLayoutAccess() const
Provides access to the document layout interface.
Definition: viewsh.cxx:2827
SfxViewShell * GetSfxViewShell() const
Definition: viewsh.hxx:470
constexpr ::Color COL_WHITE(0xFF, 0xFF, 0xFF)
constexpr ::Color COL_TRANSPARENT(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
#define TOOLS_WARN_EXCEPTION(area, stream)
Shell * m_pShell
constexpr OUStringLiteral last
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)