LibreOffice Module sd (master) 1
viewshel.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 <memory>
21#include <ViewShell.hxx>
24
25#include <ViewShellBase.hxx>
26#include <ShellFactory.hxx>
27#include <DrawController.hxx>
28#include <LayerTabBar.hxx>
29
30#include <sal/log.hxx>
31#include <sfx2/viewfrm.hxx>
32#include <sfx2/bindings.hxx>
33#include <sfx2/dispatch.hxx>
34#include <vcl/commandevent.hxx>
35#include <svl/eitem.hxx>
36#include <svx/ruler.hxx>
37#include <svx/svxids.hrc>
38#include <svx/fmshell.hxx>
39#include <WindowUpdater.hxx>
40#include <sdxfer.hxx>
41
42#include <app.hrc>
43
44#include <OutlineView.hxx>
45#include <DrawViewShell.hxx>
46#include <DrawDocShell.hxx>
47#include <slideshow.hxx>
48#include <drawdoc.hxx>
49#include <sdpage.hxx>
50#include <zoomlist.hxx>
51#include <FrameView.hxx>
52#include <BezierObjectBar.hxx>
53#include <TextObjectBar.hxx>
54#include <GraphicObjectBar.hxx>
55#include <MediaObjectBar.hxx>
56#include <SlideSorter.hxx>
58#include <ViewShellManager.hxx>
59#include <FormShellManager.hxx>
60#include <svx/extrusionbar.hxx>
61#include <svx/fontworkbar.hxx>
62#include <svx/svdoutl.hxx>
63#include <tools/svborder.hxx>
64#include <comphelper/lok.hxx>
65
66#include <svl/slstitm.hxx>
67#include <sfx2/request.hxx>
68#include <SpellDialogChildWindow.hxx>
73
75
76#include <Window.hxx>
77#include <fupoor.hxx>
78#include <futext.hxx>
79
80#include <editeng/numitem.hxx>
81#include <editeng/eeitem.hxx>
82#include <editeng/editview.hxx>
83#include <editeng/editeng.hxx>
84#include <svl/itempool.hxx>
85#include <svl/intitem.hxx>
86#include <svl/poolitem.hxx>
87#include <strings.hxx>
88#include <sdmod.hxx>
90
91using namespace ::com::sun::star;
92using namespace ::com::sun::star::uno;
93using namespace ::com::sun::star::presentation;
94
95namespace {
96
97class ViewShellObjectBarFactory
98 : public ::sd::ShellFactory<SfxShell>
99{
100public:
101 explicit ViewShellObjectBarFactory (::sd::ViewShell& rViewShell);
102 virtual SfxShell* CreateShell( ::sd::ShellId nId ) override;
103 virtual void ReleaseShell (SfxShell* pShell) override;
104private:
106};
107
108} // end of anonymous namespace
109
110namespace sd {
111
113{
114 return dynamic_cast< const DrawViewShell *>( this ) != nullptr && mpContentWindow &&
115 mpContentWindow->GetVisibleHeight() >= 1.0;
116}
117
119{
120 const SfxViewShell* pViewShell = GetViewShell();
121 if (pViewShell != nullptr)
122 {
123 return &pViewShell->GetViewFrame();
124 }
125 else
126 {
127 OSL_ASSERT (GetViewShell()!=nullptr);
128 return nullptr;
129 }
130}
131
133
134ViewShell::ViewShell( vcl::Window* pParentWindow, ViewShellBase& rViewShellBase)
135: SfxShell(&rViewShellBase)
136, mpParentWindow(pParentWindow)
137{
138 construct();
139}
140
142{
143 // Keep the content window from accessing in its destructor the
144 // WindowUpdater.
145 if (mpContentWindow)
146 suppress_fun_call_w_exception(mpContentWindow->SetViewShell(nullptr));
147
148 mpZoomList.reset();
149
150 mpLayerTabBar.disposeAndClear();
151
152 if (mpImpl->mpSubShellFactory)
153 GetViewShellBase().GetViewShellManager()->RemoveSubShellFactory(
154 this,mpImpl->mpSubShellFactory);
155
156 if (mpContentWindow)
157 {
158 SAL_INFO(
159 "sd.view",
160 "destroying mpContentWindow at " << mpContentWindow.get()
161 << " with parent " << mpContentWindow->GetParent());
163 }
164
169}
170
175{
176 mbHasRulers = false;
177 mpActiveWindow = nullptr;
178 mpView = nullptr;
179 mpFrameView = nullptr;
180 mpZoomList = nullptr;
181 mfLastZoomScale = 0;
185 mpWindowUpdater.reset( new ::sd::WindowUpdater() );
186 mpImpl.reset(new Implementation(*this));
188
189 OSL_ASSERT (GetViewShell()!=nullptr);
190
191 if (IsMainViewShell())
192 GetDocSh()->Connect (this);
193
194 mpZoomList.reset( new ZoomList( this ) );
195
198
199 GetParentWindow()->SetBackground(Application::GetSettings().GetStyleSettings().GetFaceColor());
200 mpContentWindow->SetBackground (Wallpaper());
201 mpContentWindow->SetCenterAllowed(true);
202 mpContentWindow->SetViewShell(this);
203 mpContentWindow->SetPosSizePixel(
204 GetParentWindow()->GetPosPixel(),GetParentWindow()->GetSizePixel());
205
206 if ( ! GetDocSh()->IsPreview())
207 {
208 // Create scroll bars and the filler between the scroll bars.
210 mpHorizontalScrollBar->EnableRTL (false);
211 mpHorizontalScrollBar->SetRange(Range(0, 32000));
212 mpHorizontalScrollBar->SetScrollHdl(LINK(this, ViewShell, HScrollHdl));
213
215 mpVerticalScrollBar->SetRange(Range(0, 32000));
216 mpVerticalScrollBar->SetScrollHdl(LINK(this, ViewShell, VScrollHdl));
217 }
218
219 SetName ("ViewShell");
220
221 GetDoc()->StartOnlineSpelling(false);
222
223 mpWindowUpdater->SetDocument (GetDoc());
224
225 // Re-initialize the spell dialog.
226 ::sd::SpellDialogChildWindow* pSpellDialog =
227 static_cast< ::sd::SpellDialogChildWindow*> (
229 ::sd::SpellDialogChildWindow::GetChildWindowId()));
230 if (pSpellDialog != nullptr)
231 pSpellDialog->InvalidateSpellDialog();
232
233 // Register the sub shell factory.
234 mpImpl->mpSubShellFactory = std::make_shared<ViewShellObjectBarFactory>(*this);
235 GetViewShellBase().GetViewShellManager()->AddSubShellFactory(this,mpImpl->mpSubShellFactory);
236}
237
239{
240 mpContentWindow->Show();
241 static_cast< vcl::Window*>(mpContentWindow.get())->Resize();
242 SAL_INFO(
243 "sd.view",
244 "content window has size " << mpContentWindow->GetSizePixel().Width()
245 << " " << mpContentWindow->GetSizePixel().Height());
246
247 if ( ! GetDocSh()->IsPreview())
248 {
249 // Show scroll bars
250 mpHorizontalScrollBar->Show();
251
252 mpVerticalScrollBar->Show();
254 mpVerticalScrollBar->GetSizePixel().Width(),
255 mpHorizontalScrollBar->GetSizePixel().Height());
256 }
257
259}
260
261void ViewShell::Init (bool bIsMainViewShell)
262{
263 mpImpl->mbIsInitialized = true;
264 SetIsMainViewShell(bIsMainViewShell);
265 if (bIsMainViewShell)
267}
268
270{
271 sd::View* pView = GetView();
272 if (pView!=nullptr && pView->IsTextEdit())
273 {
274 pView->SdrEndTextEdit();
275 pView->UnmarkAll();
276 }
277
278 Deactivate (true);
279
280 if (IsMainViewShell())
281 GetDocSh()->Disconnect(this);
282
283 SetIsMainViewShell(false);
284}
285
289void ViewShell::Activate(bool bIsMDIActivate)
290{
291 // Do not forward to SfxShell::Activate()
292
293 /* According to MI, nobody is allowed to call GrabFocus, who does not
294 exactly know from which window the focus is grabbed. Since Activate()
295 is sent sometimes asynchronous, it can happen, that the wrong window
296 gets the focus. */
297
299 mpHorizontalRuler->SetActive();
300 if (mpVerticalRuler)
301 mpVerticalRuler->SetActive();
302
303 if (bIsMDIActivate)
304 {
305 // thus, the Navigator will also get a current status
306 SfxBoolItem aItem( SID_NAVIGATOR_INIT, true );
307 if (GetDispatcher() != nullptr)
309 SID_NAVIGATOR_INIT,
310 SfxCallMode::ASYNCHRON | SfxCallMode::RECORD,
311 { &aItem });
312
313 SfxViewShell* pViewShell = GetViewShell();
314 OSL_ASSERT (pViewShell!=nullptr);
315 SfxBindings& rBindings = pViewShell->GetViewFrame().GetBindings();
316 rBindings.Invalidate( SID_3D_STATE, true );
317
319 if (xSlideShow.is() && xSlideShow->isRunning())
320 {
321 bool bSuccess = xSlideShow->activate(GetViewShellBase());
322 assert(bSuccess && "can only return false with a PresentationViewShell"); (void)bSuccess;
323 }
324
326 GetCurrentFunction()->Activate();
327
328 if(!GetDocSh()->IsUIActive())
330 }
331
333
334 if (IsMainViewShell())
335 GetDocSh()->Connect(this);
336}
337
339{
340 OSL_ASSERT (GetViewShell()!=nullptr);
341 GetViewShellBase().GetToolBarManager()->ToolBarsDestroyed();
342}
343
345{
346 OSL_ASSERT (GetViewShell()!=nullptr);
347 GetViewShellBase().GetToolBarManager()->ToolBarsDestroyed();
348 if ( GetDrawView() )
349 GetViewShellBase().GetToolBarManager()->SelectionHasChanged(*this, *GetDrawView());
350}
351
352void ViewShell::Deactivate(bool bIsMDIActivate)
353{
354 // remove view from a still active drag'n'drop session
355 SdTransferable* pDragTransferable = SD_MOD()->pTransferDrag;
356
357 if (IsMainViewShell())
358 GetDocSh()->Disconnect(this);
359
360 if( pDragTransferable )
361 pDragTransferable->SetView( nullptr );
362
363 OSL_ASSERT (GetViewShell()!=nullptr);
364
365 // remember view attributes of FrameView
367
368 if (bIsMDIActivate)
369 {
371 if(xSlideShow.is() && xSlideShow->isRunning() )
372 xSlideShow->deactivate();
373
375 GetCurrentFunction()->Deactivate();
376 }
377
379 mpHorizontalRuler->SetActive(false);
380 if (mpVerticalRuler)
381 mpVerticalRuler->SetActive(false);
382
383 SfxShell::Deactivate(bIsMDIActivate);
384}
385
387{
388 Exit ();
389}
390
392{
393 bool bReturn(false);
394
395 if(pWin)
396 SetActiveWindow(pWin);
397
398 // give key input first to SfxViewShell to give CTRL+Key
399 // (e.g. CTRL+SHIFT+'+', to front) priority.
400 OSL_ASSERT(GetViewShell() != nullptr);
401 bReturn = GetViewShell()->KeyInput(rKEvt);
402
403 const size_t OriCount = GetView()->GetMarkedObjectList().GetMarkCount();
404 if(!bReturn)
405 {
407 if(xSlideShow.is() && xSlideShow->isRunning())
408 {
409 bReturn = xSlideShow->keyInput(rKEvt);
410 }
411 else
412 {
413 bool bConsumed = false;
414 if( GetView() )
415 bConsumed = GetView()->getSmartTags().KeyInput(rKEvt);
416
417 if( !bConsumed )
418 {
419 rtl::Reference< sdr::SelectionController > xSelectionController( GetView()->getSelectionController() );
420 if( !xSelectionController.is() || !xSelectionController->onKeyInput( rKEvt, pWin ) )
421 {
423 bReturn = GetCurrentFunction()->KeyInput(rKEvt);
424 }
425 else
426 {
427 bReturn = true;
428 if (HasCurrentFunction())
429 {
430 FuText* pTextFunction = dynamic_cast<FuText*>(GetCurrentFunction().get());
431 if(pTextFunction != nullptr)
432 pTextFunction->InvalidateBindings();
433 }
434 }
435 }
436 }
437 }
438 const size_t EndCount = GetView()->GetMarkedObjectList().GetMarkCount();
439 // Here, oriCount or endCount must have one value=0, another value > 0, then to switch focus between Document and shape objects
440 if(bReturn && (OriCount + EndCount > 0) && (OriCount * EndCount == 0))
442
443 if(!bReturn && GetActiveWindow())
444 {
445 vcl::KeyCode aKeyCode = rKEvt.GetKeyCode();
446
447 if (aKeyCode.IsMod1() && aKeyCode.IsShift()
448 && aKeyCode.GetCode() == KEY_R)
449 {
451 bReturn = true;
452 }
453 }
454
455 return bReturn;
456}
457
459{
460 // We have to lock tool bar updates while the mouse button is pressed in
461 // order to prevent the shape under the mouse to be moved (this happens
462 // when the number of docked tool bars changes as result of a changed
463 // selection; this changes the window size and thus the mouse position
464 // in model coordinates: with respect to model coordinates the mouse
465 // moves.)
466 OSL_ASSERT(mpImpl->mpUpdateLockForMouse.expired());
468 GetViewShellBase().GetToolBarManager());
469
470 if ( pWin && !pWin->HasFocus() )
471 {
472 pWin->GrabFocus();
473 SetActiveWindow(pWin);
474 }
475
476 // insert MouseEvent into E3dView
477 if (GetView() != nullptr)
478 GetView()->SetMouseEvent(rMEvt);
479
480 bool bConsumed = false;
481 if( GetView() )
482 bConsumed = GetView()->getSmartTags().MouseButtonDown( rMEvt );
483
484 if( bConsumed )
485 return;
486
487 rtl::Reference< sdr::SelectionController > xSelectionController( GetView()->getSelectionController() );
488 if( !xSelectionController.is() || !xSelectionController->onMouseButtonDown( rMEvt, pWin ) )
489 {
491 GetCurrentFunction()->MouseButtonDown(rMEvt);
492 }
493 else
494 {
495 if (HasCurrentFunction())
496 {
497 FuText* pTextFunction = dynamic_cast<FuText*>(GetCurrentFunction().get());
498 if (pTextFunction != nullptr)
499 pTextFunction->InvalidateBindings();
500 }
501 }
502}
503
504void ViewShell::SetCursorMm100Position(const Point& rPosition, bool bPoint, bool bClearMark)
505{
506 if (SdrView* pSdrView = GetView())
507 {
508 rtl::Reference<sdr::SelectionController> xSelectionController(GetView()->getSelectionController());
509 if (!xSelectionController.is() || !xSelectionController->setCursorLogicPosition(rPosition, bPoint))
510 {
511 if (pSdrView->GetTextEditObject())
512 {
513 EditView& rEditView = pSdrView->GetTextEditOutlinerView()->GetEditView();
514 rEditView.SetCursorLogicPosition(rPosition, bPoint, bClearMark);
515 }
516 }
517 }
518}
519
520uno::Reference<datatransfer::XTransferable> ViewShell::GetSelectionTransferable() const
521{
522 SdrView* pSdrView = GetView();
523 if (!pSdrView)
524 return uno::Reference<datatransfer::XTransferable>();
525
526 if (!pSdrView->GetTextEditObject())
527 return uno::Reference<datatransfer::XTransferable>();
528
529 EditView& rEditView = pSdrView->GetTextEditOutlinerView()->GetEditView();
530 return rEditView.GetEditEngine()->CreateTransferable(rEditView.GetSelection());
531}
532
533void ViewShell::SetGraphicMm100Position(bool bStart, const Point& rPosition)
534{
535 if (bStart)
536 {
537 MouseEvent aClickEvent(rPosition, 1, MouseEventModifiers::SIMPLECLICK, MOUSE_LEFT);
538 MouseButtonDown(aClickEvent, mpActiveWindow);
539 MouseEvent aMoveEvent(Point(rPosition.getX(), rPosition.getY()), 0, MouseEventModifiers::SIMPLEMOVE, MOUSE_LEFT);
540 MouseMove(aMoveEvent, mpActiveWindow);
541 }
542 else
543 {
544 MouseEvent aMoveEvent(Point(rPosition.getX(), rPosition.getY()), 0, MouseEventModifiers::SIMPLEMOVE, MOUSE_LEFT);
545 MouseMove(aMoveEvent, mpActiveWindow);
546 MouseEvent aClickEvent(rPosition, 1, MouseEventModifiers::SIMPLECLICK, MOUSE_LEFT);
547 MouseButtonUp(aClickEvent, mpActiveWindow);
548 }
549}
550
552{
553 if (rMEvt.IsLeaveWindow())
554 {
555 if ( ! mpImpl->mpUpdateLockForMouse.expired())
556 {
557 std::shared_ptr<ViewShell::Implementation::ToolBarManagerLock> pLock(
558 mpImpl->mpUpdateLockForMouse);
559 if (pLock != nullptr)
560 pLock->Release();
561 }
562 }
563
564 if ( pWin )
565 {
566 SetActiveWindow(pWin);
567 }
568
569 // insert MouseEvent into E3dView
570 if (GetView() != nullptr)
571 GetView()->SetMouseEvent(rMEvt);
572
574 {
575 rtl::Reference< sdr::SelectionController > xSelectionController( GetView()->getSelectionController() );
576 if( !xSelectionController.is() || !xSelectionController->onMouseMove( rMEvt, pWin ) )
577 {
579 GetCurrentFunction()->MouseMove(rMEvt);
580 }
581 }
582}
583
585{
586 if ( pWin )
587 SetActiveWindow(pWin);
588
589 // insert MouseEvent into E3dView
590 if (GetView() != nullptr)
591 GetView()->SetMouseEvent(rMEvt);
592
593 if( HasCurrentFunction())
594 {
595 rtl::Reference< sdr::SelectionController > xSelectionController( GetView()->getSelectionController() );
596 if( !xSelectionController.is() || !xSelectionController->onMouseButtonUp( rMEvt, pWin ) )
597 {
599 GetCurrentFunction()->MouseButtonUp(rMEvt);
600 }
601 else
602 {
603 if (HasCurrentFunction())
604 {
605 FuText* pTextFunction = dynamic_cast<FuText*>(GetCurrentFunction().get());
606 if (pTextFunction != nullptr)
607 pTextFunction->InvalidateBindings();
608 }
609 }
610 }
611
612 if ( ! mpImpl->mpUpdateLockForMouse.expired())
613 {
614 std::shared_ptr<ViewShell::Implementation::ToolBarManagerLock> pLock(
615 mpImpl->mpUpdateLockForMouse);
616 if (pLock != nullptr)
617 pLock->Release();
618 }
619}
620
622{
623 bool bDone = HandleScrollCommand (rCEvt, pWin);
624
625 if( bDone )
626 return;
627
628 if( rCEvt.GetCommand() == CommandEventId::InputLanguageChange )
629 {
630 //#i42732# update state of fontname if input language changes
631 GetViewFrame()->GetBindings().Invalidate( SID_ATTR_CHAR_FONT );
632 GetViewFrame()->GetBindings().Invalidate( SID_ATTR_CHAR_FONTHEIGHT );
633 }
634 else
635 {
636 bool bConsumed = false;
637 if( GetView() )
638 bConsumed = GetView()->getSmartTags().Command(rCEvt);
639
640 if( !bConsumed && HasCurrentFunction())
641 GetCurrentFunction()->Command(rCEvt);
642 }
643}
644
646{
647 // handle scroll commands when they arrived at child windows
648 bool bRet = false;
649 if( rNEvt.GetType() == NotifyEventType::COMMAND )
650 {
651 // note: dynamic_cast is not possible as GetData() returns a void*
652 CommandEvent* pCmdEvent = static_cast< CommandEvent* >(rNEvt.GetData());
653 bRet = HandleScrollCommand(*pCmdEvent, pWin);
654 }
655 return bRet;
656}
657
659{
660 bool bDone = false;
661
662 switch( rCEvt.GetCommand() )
663 {
664 case CommandEventId::GestureSwipe:
665 {
667 if (xSlideShow.is())
668 {
669 const CommandGestureSwipeData* pSwipeData = rCEvt.GetGestureSwipeData();
670 bDone = xSlideShow->swipe(*pSwipeData);
671 }
672 }
673 break;
674 case CommandEventId::GestureLongPress:
675 {
677 if (xSlideShow.is())
678 {
679 const CommandGestureLongPressData* pLongPressData = rCEvt.GetLongPressData();
680 bDone = xSlideShow->longpress(*pLongPressData);
681 }
682 }
683 break;
684
685 case CommandEventId::Wheel:
686 {
687 Reference< XSlideShowController > xSlideShowController( SlideShow::GetSlideShowController(GetViewShellBase() ) );
688 if( xSlideShowController.is() )
689 {
690 // We ignore zooming with control+mouse wheel.
691 const CommandWheelData* pData = rCEvt.GetWheelData();
692 if( pData && !pData->GetModifier() && ( pData->GetMode() == CommandWheelMode::SCROLL ) && !pData->IsHorz() )
693 {
694 ::tools::Long nDelta = pData->GetDelta();
695 if( nDelta > 0 )
696 xSlideShowController->gotoPreviousSlide();
697 else if( nDelta < 0 )
698 xSlideShowController->gotoNextEffect();
699 }
700 break;
701 }
702 }
703 [[fallthrough]];
704 case CommandEventId::StartAutoScroll:
705 case CommandEventId::AutoScroll:
706 {
707 const CommandWheelData* pData = rCEvt.GetWheelData();
708
709 if (pData != nullptr)
710 {
711 if (pData->IsMod1())
712 {
713 if( !GetDocSh()->IsUIActive() )
714 {
715 const sal_uInt16 nOldZoom = GetActiveWindow()->GetZoom();
716 sal_uInt16 nNewZoom;
717 Point aOldMousePos = GetActiveWindow()->PixelToLogic(rCEvt.GetMousePosPixel());
718
719 if( pData->GetDelta() < 0 )
720 nNewZoom = std::max<sal_uInt16>( pWin->GetMinZoom(), basegfx::zoomtools::zoomOut( nOldZoom ));
721 else
722 nNewZoom = std::min<sal_uInt16>( pWin->GetMaxZoom(), basegfx::zoomtools::zoomIn( nOldZoom ));
723
724 SetZoom( nNewZoom );
725 // Keep mouse at same doc point before zoom
726 Point aNewMousePos = GetActiveWindow()->PixelToLogic(rCEvt.GetMousePosPixel());
727 SetWinViewPos(GetWinViewPos() - (aNewMousePos - aOldMousePos));
728
729 Invalidate( SID_ATTR_ZOOM );
730 Invalidate( SID_ATTR_ZOOMSLIDER );
731
732 bDone = true;
733 }
734 }
735 else
736 {
737 if( mpContentWindow.get() == pWin )
738 {
739 sal_uLong nScrollLines = pData->GetScrollLines();
740 if(IsPageFlipMode())
741 nScrollLines = COMMAND_WHEEL_PAGESCROLL;
742 CommandWheelData aWheelData( pData->GetDelta(),pData->GetNotchDelta(),
743 nScrollLines,pData->GetMode(),pData->GetModifier(),pData->IsHorz() );
744 CommandEvent aReWrite( rCEvt.GetMousePosPixel(),rCEvt.GetCommand(),
745 rCEvt.IsMouseEvent(),static_cast<const void *>(&aWheelData) );
746 bDone = pWin->HandleScrollCommand( aReWrite,
749 }
750 }
751 }
752 }
753 break;
754
755 case CommandEventId::GestureZoom:
756 {
758
759 Reference<XSlideShowController> xSlideShowController(SlideShow::GetSlideShowController(GetViewShellBase()));
760
761 if (pData->meEventType == GestureEventZoomType::Begin)
762 {
763 mfLastZoomScale = pData->mfScaleDelta;
764 bDone = true;
765 break;
766 }
767
768 if (pData->meEventType == GestureEventZoomType::Update)
769 {
770 double deltaBetweenEvents = (pData->mfScaleDelta - mfLastZoomScale) / mfLastZoomScale;
771 mfLastZoomScale = pData->mfScaleDelta;
772
773 if (!GetDocSh()->IsUIActive() && !xSlideShowController.is())
774 {
775 const ::tools::Long nOldZoom = GetActiveWindow()->GetZoom();
776 ::tools::Long nNewZoom;
777 Point aOldMousePos = GetActiveWindow()->PixelToLogic(rCEvt.GetMousePosPixel());
778
779 // Accumulate fractional zoom to avoid small zoom changes from being ignored
780 mfAccumulatedZoom += deltaBetweenEvents;
781 int nZoomChangePercent = mfAccumulatedZoom * 100;
782 mfAccumulatedZoom -= nZoomChangePercent / 100.0;
783
784 nNewZoom = nOldZoom + nZoomChangePercent;
785 nNewZoom = std::max<::tools::Long>(pWin->GetMinZoom(), nNewZoom);
786 nNewZoom = std::min<::tools::Long>(pWin->GetMaxZoom(), nNewZoom);
787
788 SetZoom(nNewZoom);
789
790 // Keep mouse at same doc point before zoom
791 Point aNewMousePos = GetActiveWindow()->PixelToLogic(rCEvt.GetMousePosPixel());
792 SetWinViewPos(GetWinViewPos() - (aNewMousePos - aOldMousePos));
793
794 Invalidate(SID_ATTR_ZOOM);
795 Invalidate(SID_ATTR_ZOOMSLIDER);
796 }
797 }
798
799 bDone = true;
800 }
801 break;
802
803 default:
804 break;
805 }
806
807 return bDone;
808}
809
811{
813 return;
814
815 ::tools::Long nHRulerOfs = 0;
816
817 if ( !mpVerticalRuler )
818 {
820 if ( mpVerticalRuler )
821 {
822 nHRulerOfs = mpVerticalRuler->GetSizePixel().Width();
823 mpVerticalRuler->SetActive();
824 mpVerticalRuler->Show();
825 }
826 }
827 if ( !mpHorizontalRuler )
828 {
830 if ( mpHorizontalRuler )
831 {
832 mpHorizontalRuler->SetWinPos(nHRulerOfs);
833 mpHorizontalRuler->SetActive();
834 mpHorizontalRuler->Show();
835 }
836 }
837}
838
840{
841 const SvxNumBulletItem* pTmpItem = aNewAttr.GetItemIfSet(nNumItemId, false);
842 if(pTmpItem)
843 return pTmpItem;
844
845 nNumItemId = aNewAttr.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE);
846 pTmpItem = aNewAttr.GetItemIfSet(nNumItemId, false);
847 if(pTmpItem)
848 return pTmpItem;
849
850 bool bOutliner = false;
851 bool bTitle = false;
852
853 if( mpView )
854 {
855 const SdrMarkList& rMarkList = mpView->GetMarkedObjectList();
856 const size_t nCount = rMarkList.GetMarkCount();
857
858 for(size_t nNum = 0; nNum < nCount; ++nNum)
859 {
860 SdrObject* pObj = rMarkList.GetMark(nNum)->GetMarkedSdrObj();
861 if( pObj->GetObjInventor() == SdrInventor::Default )
862 {
863 switch(pObj->GetObjIdentifier())
864 {
865 case SdrObjKind::TitleText:
866 bTitle = true;
867 break;
868 case SdrObjKind::OutlineText:
869 bOutliner = true;
870 break;
871 default:
872 break;
873 }
874 }
875 }
876 }
877
878 const SvxNumBulletItem *pItem = nullptr;
879 if(bOutliner)
880 {
882 SfxStyleSheetBase* pFirstStyleSheet = pSSPool->Find( STR_LAYOUT_OUTLINE + " 1", SfxStyleFamily::Pseudo);
883 if( pFirstStyleSheet )
884 pItem = pFirstStyleSheet->GetItemSet().GetItemIfSet(EE_PARA_NUMBULLET, false);
885 }
886
887 if( pItem == nullptr )
889
890 aNewAttr.Put(pItem->CloneSetWhich(EE_PARA_NUMBULLET));
891
892 if(bTitle && aNewAttr.GetItemState(EE_PARA_NUMBULLET) == SfxItemState::SET )
893 {
894 const SvxNumBulletItem* pBulletItem = aNewAttr.GetItem(EE_PARA_NUMBULLET);
895 const SvxNumRule& rRule = pBulletItem->GetNumRule();
896 SvxNumRule aNewRule( rRule );
897 aNewRule.SetFeatureFlag( SvxNumRuleFlags::NO_NUMBERS );
898
899 SvxNumBulletItem aNewItem( std::move(aNewRule), EE_PARA_NUMBULLET );
900 aNewAttr.Put(aNewItem);
901 }
902
903 pTmpItem = aNewAttr.GetItemIfSet(nNumItemId, false);
904
905 return pTmpItem;
906}
907
909{
910 SetupRulers ();
911
912 if (mpParentWindow == nullptr)
913 return;
914
915 // Make sure that the new size is not degenerate.
916 const Size aSize (mpParentWindow->GetSizePixel());
917 if (aSize.IsEmpty())
918 return;
919
920 // Remember the new position and size.
921 maViewPos = Point(0,0);
922 maViewSize = aSize;
923
924 // Rearrange the UI elements to take care of the new position and size.
926 // end of included AdjustPosSizePixel.
927
928 ::sd::View* pView = GetView();
929
930 if (pView)
931 pView->VisAreaChanged(GetActiveWindow()->GetOutDev());
932}
933
935{
936 SvBorder aBorder;
937
938 // Horizontal scrollbar.
940 && mpHorizontalScrollBar->IsVisible())
941 {
942 aBorder.Bottom() = maScrBarWH.Height();
943 }
944
945 // Vertical scrollbar.
947 && mpVerticalScrollBar->IsVisible())
948 {
949 aBorder.Right() = maScrBarWH.Width();
950 }
951
952 // Place horizontal ruler below tab bar.
954 {
955 SetupRulers();
957 aBorder.Top() = mpHorizontalRuler->GetSizePixel().Height();
958 if (mpVerticalRuler)
959 aBorder.Left() = mpVerticalRuler->GetSizePixel().Width();
960 }
961
962 return aBorder;
963}
964
966{
967 if (mpImpl->mbArrangeActive)
968 return;
969 if (maViewSize.IsEmpty())
970 return;
971 mpImpl->mbArrangeActive = true;
972
973 // Calculate border for in-place editing.
974 ::tools::Long nLeft = maViewPos.X();
975 ::tools::Long nTop = maViewPos.Y();
977 ::tools::Long nBottom = maViewPos.Y() + maViewSize.Height();
978
979 // Horizontal scrollbar.
981 && mpHorizontalScrollBar->IsVisible())
982 {
983 nBottom -= maScrBarWH.Height();
984 if (mpLayerTabBar && mpLayerTabBar->IsVisible())
985 nBottom -= mpLayerTabBar->GetSizePixel().Height();
986 mpHorizontalScrollBar->SetPosSizePixel (
987 Point(nLeft, nBottom),
988 Size(nRight - nLeft - maScrBarWH.Width(), maScrBarWH.Height()));
989 }
990
991 // Vertical scrollbar.
993 && mpVerticalScrollBar->IsVisible())
994 {
995 nRight -= maScrBarWH.Width();
996 mpVerticalScrollBar->SetPosSizePixel (
997 Point(nRight,nTop),
998 Size (maScrBarWH.Width(), nBottom-nTop));
999 }
1000
1001 // Place horizontal ruler below tab bar.
1003 {
1005 {
1006 Size aRulerSize = mpHorizontalRuler->GetSizePixel();
1007 aRulerSize.setWidth( nRight - nLeft );
1008 mpHorizontalRuler->SetPosSizePixel (
1009 Point(nLeft,nTop), aRulerSize);
1010 if (mpVerticalRuler)
1011 mpHorizontalRuler->SetBorderPos(
1012 mpVerticalRuler->GetSizePixel().Width()-1);
1013 nTop += aRulerSize.Height();
1014 }
1015 if (mpVerticalRuler)
1016 {
1017 Size aRulerSize = mpVerticalRuler->GetSizePixel();
1018 aRulerSize.setHeight( nBottom - nTop );
1019 mpVerticalRuler->SetPosSizePixel (
1020 Point (nLeft,nTop), aRulerSize);
1021 nLeft += aRulerSize.Width();
1022 }
1023 }
1024
1026
1027 // The size of the window of the center pane is set differently from
1028 // that of the windows in the docking windows.
1029 bool bSlideShowActive = (xSlideShow.is() && xSlideShow->isRunning()) && !xSlideShow->isFullScreen() && xSlideShow->getAnimationMode() == ANIMATIONMODE_SHOW;
1030 if ( !bSlideShowActive)
1031 {
1032 OSL_ASSERT (GetViewShell()!=nullptr);
1033
1034 if (mpContentWindow)
1035 mpContentWindow->SetPosSizePixel(
1036 Point(nLeft,nTop),
1037 Size(nRight-nLeft,nBottom-nTop));
1038 }
1039
1040 // Windows in the center and rulers at the left and top side.
1042 maViewPos,
1045
1046 if (mpContentWindow)
1047 mpContentWindow->UpdateMapOrigin();
1048
1050
1051 mpImpl->mbArrangeActive = false;
1052}
1053
1055{
1056 // Set unit at horizontal and vertical rulers.
1058 mpHorizontalRuler->SetUnit(eUnit);
1059
1060 if (mpVerticalRuler)
1061 mpVerticalRuler->SetUnit(eUnit);
1062}
1063
1067void ViewShell::SetDefTabHRuler( sal_uInt16 nDefTab )
1068{
1070 mpHorizontalRuler->SetDefTabDist( nDefTab );
1071}
1072
1077{
1078 bool bResult = true;
1079
1080 FmFormShell* pFormShell = GetViewShellBase().GetFormShellManager()->GetFormShell();
1081 if (pFormShell != nullptr)
1082 bResult = pFormShell->PrepareClose (bUI);
1083
1084 return bResult;
1085}
1086
1088{
1089 // Do nothing. After the actual preview has been removed,
1090 // OutlineViewShell::UpdatePreview() is the place where something
1091 // useful is still done.
1092}
1093
1095{
1096 const ViewShell* pMainViewShell = GetViewShellBase().GetMainViewShell().get();
1097
1098 if( pMainViewShell == nullptr )
1099 pMainViewShell = this;
1100
1101 ::sd::View* pView = pMainViewShell->GetView();
1102
1103 // check for text edit our outline view
1104 if( pView )
1105 {
1106 if( pMainViewShell->GetShellType() == ViewShell::ST_OUTLINE )
1107 {
1108 OutlineView* pOlView = dynamic_cast< OutlineView* >( pView );
1109 if( pOlView )
1110 {
1111 ::Outliner& rOutl = pOlView->GetOutliner();
1112 return &rOutl.GetUndoManager();
1113 }
1114 }
1115 else if( pView->IsTextEdit() )
1116 {
1117 SdrOutliner* pOL = pView->GetTextEditOutliner();
1118 if( pOL )
1119 return &pOL->GetUndoManager();
1120 }
1121 }
1122
1123 if( GetDocSh() )
1124 return GetDocSh()->GetUndoManager();
1125
1126 return nullptr;
1127}
1128
1130{
1131 SfxUndoManager* pUndoManager = ImpGetUndoManager();
1132 if(!pUndoManager)
1133 return;
1134
1135 sal_uInt16 nCount(pUndoManager->GetUndoActionCount());
1136 if(nCount)
1137 {
1138 // prepare list
1139 std::vector<OUString> aStringList;
1140 aStringList.reserve(nCount);
1141 for (sal_uInt16 a = 0; a < nCount; ++a)
1142 {
1143 // generate one String in list per undo step
1144 aStringList.push_back( pUndoManager->GetUndoActionComment(a) );
1145 }
1146
1147 // set item
1148 rSet.Put(SfxStringListItem(SID_GETUNDOSTRINGS, &aStringList));
1149 }
1150 else
1151 {
1152 rSet.DisableItem(SID_GETUNDOSTRINGS);
1153 }
1154}
1155
1157{
1158 SfxUndoManager* pUndoManager = ImpGetUndoManager();
1159 if(!pUndoManager)
1160 return;
1161
1162 sal_uInt16 nCount(pUndoManager->GetRedoActionCount());
1163 if(nCount)
1164 {
1165 // prepare list
1166 ::std::vector< OUString > aStringList;
1167 aStringList.reserve(nCount);
1168 for(sal_uInt16 a = 0; a < nCount; a++)
1169 // generate one String in list per undo step
1170 aStringList.push_back( pUndoManager->GetRedoActionComment(a) );
1171
1172 // set item
1173 rSet.Put(SfxStringListItem(SID_GETREDOSTRINGS, &aStringList));
1174 }
1175 else
1176 {
1177 rSet.DisableItem(SID_GETREDOSTRINGS);
1178 }
1179}
1180
1181namespace {
1182
1183class KeepSlideSorterInSyncWithPageChanges
1184{
1189
1190public:
1191 explicit KeepSlideSorterInSyncWithPageChanges(sd::slidesorter::SlideSorter const & rSlideSorter)
1192 : m_aDrawLock(rSlideSorter)
1193 , m_aModelLock(rSlideSorter.GetController())
1194 , m_aUpdateLock(rSlideSorter)
1195 , m_aContext(rSlideSorter)
1196 {
1197 }
1198};
1199
1200}
1201
1203{
1204 //The xWatcher keeps the SlideSorter selection in sync
1205 //with the page insertions/deletions that Undo may introduce
1206 std::unique_ptr<KeepSlideSorterInSyncWithPageChanges, o3tl::default_delete<KeepSlideSorterInSyncWithPageChanges>> xWatcher;
1207 slidesorter::SlideSorterViewShell* pSlideSorterViewShell
1209 if (pSlideSorterViewShell)
1210 xWatcher.reset(new KeepSlideSorterInSyncWithPageChanges(pSlideSorterViewShell->GetSlideSorter()));
1211
1212 SfxUndoManager* pUndoManager = ImpGetUndoManager();
1213 sal_uInt16 nNumber(1);
1214 const SfxItemSet* pReqArgs = rReq.GetArgs();
1215 bool bRepair = false;
1216
1217 if(pReqArgs)
1218 {
1219 const SfxUInt16Item* pUIntItem = static_cast<const SfxUInt16Item*>(&pReqArgs->Get(SID_UNDO));
1220 nNumber = pUIntItem->GetValue();
1221
1222 // Repair mode: allow undo/redo of all undo actions, even if access would
1223 // be limited based on the view shell ID.
1224 if (const SfxBoolItem* pRepairItem = pReqArgs->GetItemIfSet(SID_REPAIRPACKAGE, false))
1225 bRepair = pRepairItem->GetValue();
1226 }
1227
1228 if(nNumber && pUndoManager)
1229 {
1230 sal_uInt16 nCount(pUndoManager->GetUndoActionCount());
1231 if(nCount >= nNumber)
1232 {
1233 if (comphelper::LibreOfficeKit::isActive() && !bRepair)
1234 {
1235 // If another view created the first undo action, prevent redoing it from this view.
1236 const SfxUndoAction* pAction = pUndoManager->GetUndoAction();
1237 if (pAction->GetViewShellId() != GetViewShellBase().GetViewShellId())
1238 {
1239 rReq.SetReturnValue(SfxUInt32Item(SID_UNDO, static_cast<sal_uInt32>(SID_REPAIRPACKAGE)));
1240 return;
1241 }
1242 }
1243
1244 try
1245 {
1246 // when UndoStack is cleared by ModifyPageUndoAction
1247 // the nCount may have changed, so test GetUndoActionCount()
1248 while(nNumber-- && pUndoManager->GetUndoActionCount())
1249 pUndoManager->Undo();
1250 }
1251 catch( const Exception& )
1252 {
1253 // no need to handle. By definition, the UndoManager handled this by clearing the
1254 // Undo/Redo stacks
1255 }
1256 }
1257
1258 // refresh rulers, maybe UNDO was move of TAB marker in ruler
1259 if (mbHasRulers)
1260 Invalidate(SID_ATTR_TABSTOP);
1261 }
1262
1263 // This one is corresponding to the default handling
1264 // of SID_UNDO in sfx2
1266
1267 rReq.Done();
1268}
1269
1271{
1272 //The xWatcher keeps the SlideSorter selection in sync
1273 //with the page insertions/deletions that Undo may introduce
1274 std::unique_ptr<KeepSlideSorterInSyncWithPageChanges, o3tl::default_delete<KeepSlideSorterInSyncWithPageChanges>> xWatcher;
1275 slidesorter::SlideSorterViewShell* pSlideSorterViewShell
1277 if (pSlideSorterViewShell)
1278 xWatcher.reset(new KeepSlideSorterInSyncWithPageChanges(pSlideSorterViewShell->GetSlideSorter()));
1279
1280 SfxUndoManager* pUndoManager = ImpGetUndoManager();
1281 sal_uInt16 nNumber(1);
1282 const SfxItemSet* pReqArgs = rReq.GetArgs();
1283 bool bRepair = false;
1284
1285 if(pReqArgs)
1286 {
1287 const SfxUInt16Item* pUIntItem = static_cast<const SfxUInt16Item*>(&pReqArgs->Get(SID_REDO));
1288 nNumber = pUIntItem->GetValue();
1289 // Repair mode: allow undo/redo of all undo actions, even if access would
1290 // be limited based on the view shell ID.
1291 if (const SfxBoolItem* pRepairItem = pReqArgs->GetItemIfSet(SID_REPAIRPACKAGE, false))
1292 bRepair = pRepairItem->GetValue();
1293 }
1294
1295 if(nNumber && pUndoManager)
1296 {
1297 sal_uInt16 nCount(pUndoManager->GetRedoActionCount());
1298 if(nCount >= nNumber)
1299 {
1300 if (comphelper::LibreOfficeKit::isActive() && !bRepair)
1301 {
1302 // If another view created the first undo action, prevent redoing it from this view.
1303 const SfxUndoAction* pAction = pUndoManager->GetRedoAction();
1304 if (pAction->GetViewShellId() != GetViewShellBase().GetViewShellId())
1305 {
1306 rReq.SetReturnValue(SfxUInt32Item(SID_REDO, static_cast<sal_uInt32>(SID_REPAIRPACKAGE)));
1307 return;
1308 }
1309 }
1310
1311 try
1312 {
1313 // when UndoStack is cleared by ModifyPageRedoAction
1314 // the nCount may have changed, so test GetRedoActionCount()
1315 while(nNumber-- && pUndoManager->GetRedoActionCount())
1316 pUndoManager->Redo();
1317 }
1318 catch( const Exception& )
1319 {
1320 // no need to handle. By definition, the UndoManager handled this by clearing the
1321 // Undo/Redo stacks
1322 }
1323 }
1324
1325 // refresh rulers, maybe REDO was move of TAB marker in ruler
1326 if (mbHasRulers)
1327 {
1328 Invalidate(SID_ATTR_TABSTOP);
1329 }
1330 }
1331
1332 // This one is corresponding to the default handling
1333 // of SID_UNDO in sfx2
1335
1336 rReq.Done();
1337}
1338
1340{
1341 sal_uInt16 nSlot = rReq.GetSlot();
1342 switch( nSlot )
1343 {
1344 case SID_MAIL_SCROLLBODY_PAGEDOWN:
1345 {
1347 if( xFunc.is() )
1348 ScrollLines( 0, -1 );
1349
1350 rReq.Done();
1351 }
1352 break;
1353
1354 case SID_OUTPUT_QUALITY_COLOR:
1355 case SID_OUTPUT_QUALITY_GRAYSCALE:
1356 case SID_OUTPUT_QUALITY_BLACKWHITE:
1357 case SID_OUTPUT_QUALITY_CONTRAST:
1358 {
1360
1361 switch( nSlot )
1362 {
1363 case SID_OUTPUT_QUALITY_COLOR: nMode = OUTPUT_DRAWMODE_COLOR; break;
1364 case SID_OUTPUT_QUALITY_GRAYSCALE: nMode = OUTPUT_DRAWMODE_GRAYSCALE; break;
1365 case SID_OUTPUT_QUALITY_BLACKWHITE: nMode = OUTPUT_DRAWMODE_BLACKWHITE; break;
1366 case SID_OUTPUT_QUALITY_CONTRAST: nMode = OUTPUT_DRAWMODE_CONTRAST; break;
1367 }
1368
1369 GetActiveWindow()->GetOutDev()->SetDrawMode( nMode );
1370 mpFrameView->SetDrawMode( nMode );
1371
1373
1374 Invalidate();
1375 rReq.Done();
1376 break;
1377 }
1378 }
1379}
1380
1384css::uno::Reference<css::accessibility::XAccessible>
1386{
1387 OSL_FAIL("ViewShell::CreateAccessibleDocumentView should not be called!, perhaps Meyers, 3rd edition, Item 9:");
1388
1389 return css::uno::Reference<css::accessibility::XAccessible> ();
1390}
1391
1393{
1394 return mpWindowUpdater.get();
1395}
1396
1398{
1399 return *static_cast<ViewShellBase*>(GetViewShell());
1400}
1401
1403{
1404 return meShellType;
1405}
1406
1408{
1409 return GetViewShellBase().GetDocShell();
1410}
1411
1413{
1414 return GetViewShellBase().GetDocument();
1415}
1416
1417ErrCode ViewShell::DoVerb(sal_Int32 /*nVerb*/)
1418{
1419 return ERRCODE_NONE;
1420}
1421
1423{
1425 mxCurrentFunction->Dispose();
1426 rtl::Reference<FuPoor> xDisposeAfterNewOne( mxCurrentFunction );
1427 mxCurrentFunction = xFunction;
1428}
1429
1431{
1432 if( mxOldFunction.is() && (xFunction != mxOldFunction) && (mxCurrentFunction != mxOldFunction) )
1433 mxOldFunction->Dispose();
1434
1435 rtl::Reference<FuPoor> xDisposeAfterNewOne( mxOldFunction );
1436 mxOldFunction = xFunction;
1437}
1438
1443{
1445 {
1447 mxCurrentFunction.clear();
1448 xTemp->Deactivate();
1449 xTemp->Dispose();
1450 }
1451
1452 if(mxOldFunction.is())
1453 {
1455 mxCurrentFunction->Activate();
1456 }
1457}
1458
1459void ViewShell::DeactivateCurrentFunction( bool bPermanent /* == false */ )
1460{
1461 if( mxCurrentFunction.is() )
1462 {
1463 if(bPermanent && (mxOldFunction == mxCurrentFunction))
1464 mxOldFunction.clear();
1465
1466 mxCurrentFunction->Deactivate();
1468 mxCurrentFunction->Dispose();
1469
1470 rtl::Reference<FuPoor> xDisposeAfterNewOne( mxCurrentFunction );
1471 mxCurrentFunction.clear();
1472 }
1473}
1474
1476{
1477 if(mxCurrentFunction.is())
1478 {
1480 mxCurrentFunction.clear();
1481 xTemp->Deactivate();
1482 xTemp->Dispose();
1483 }
1484
1485 if(mxOldFunction.is())
1486 {
1487 rtl::Reference<FuPoor> xDisposeAfterNewOne( mxOldFunction );
1488 mxOldFunction->Dispose();
1489 mxOldFunction.clear();
1490 }
1491}
1492
1494{
1495 return mpImpl->mbIsMainViewShell;
1496}
1497
1498void ViewShell::SetIsMainViewShell (bool bIsMainViewShell)
1499{
1500 if (bIsMainViewShell != mpImpl->mbIsMainViewShell)
1501 {
1502 mpImpl->mbIsMainViewShell = bIsMainViewShell;
1503 if (bIsMainViewShell)
1504 GetDocSh()->Connect (this);
1505 else
1506 GetDocSh()->Disconnect (this);
1507 }
1508}
1509
1511{
1512}
1513
1514void ViewShell::Paint (const ::tools::Rectangle&, ::sd::Window* )
1515{
1516}
1517
1518void ViewShell::ShowUIControls (bool bVisible)
1519{
1520 if (mbHasRulers)
1521 {
1523 mpHorizontalRuler->Show( bVisible );
1524
1525 if (mpVerticalRuler)
1526 mpVerticalRuler->Show( bVisible );
1527 }
1528
1531
1534
1535 if (mpContentWindow)
1536 mpContentWindow->Show( bVisible );
1537}
1538
1540{
1541 mpParentWindow = pParentWindow;
1542
1543 mpParentWindow->SetBackground (Wallpaper());
1544
1545 if (mpContentWindow)
1546 mpContentWindow->SetParent(pParentWindow);
1547
1552
1553 return true;
1554}
1555
1556void ViewShell::SwitchViewFireFocus(const css::uno::Reference< css::accessibility::XAccessible >& xAcc )
1557{
1558 if (xAcc)
1559 {
1561 if (pBase)
1562 pBase->SwitchViewActivated();
1563 }
1564}
1566{
1567 if (mpContentWindow)
1568 {
1569 SwitchViewFireFocus(mpContentWindow->GetAccessible(false));
1570 }
1571}
1572// move these two methods from DrawViewShell.
1573void ViewShell::fireSwitchCurrentPage(sal_Int32 pageIndex)
1574{
1576}
1578{
1580}
1581
1583{
1584 return mpActiveWindow ? mpActiveWindow->GetFrameWeld() : nullptr;
1585}
1586
1588{
1589 return mpContentWindow.get();
1590}
1591
1592} // end of namespace sd
1593
1594//===== ViewShellObjectBarFactory =============================================
1595
1596namespace {
1597
1598ViewShellObjectBarFactory::ViewShellObjectBarFactory (
1599 ::sd::ViewShell& rViewShell)
1600 : mrViewShell (rViewShell)
1601{
1602}
1603
1604SfxShell* ViewShellObjectBarFactory::CreateShell( ::sd::ShellId nId )
1605{
1606 SfxShell* pShell = nullptr;
1607
1608 ::sd::View* pView = mrViewShell.GetView();
1609 switch (nId)
1610 {
1611 case ToolbarId::Bezier_Toolbox_Sd:
1612 pShell = new ::sd::BezierObjectBar(&mrViewShell, pView);
1613 break;
1614
1615 case ToolbarId::Draw_Text_Toolbox_Sd:
1616 pShell = new ::sd::TextObjectBar(
1617 &mrViewShell, mrViewShell.GetDoc()->GetPool(), pView);
1618 break;
1619
1620 case ToolbarId::Draw_Graf_Toolbox:
1621 pShell = new ::sd::GraphicObjectBar(&mrViewShell, pView);
1622 break;
1623
1624 case ToolbarId::Draw_Media_Toolbox:
1625 pShell = new ::sd::MediaObjectBar(&mrViewShell, pView);
1626 break;
1627
1628 case ToolbarId::Draw_Table_Toolbox:
1629 pShell = ::sd::ui::table::CreateTableObjectBar( mrViewShell, pView );
1630 break;
1631
1632 case ToolbarId::Svx_Extrusion_Bar:
1633 pShell = new svx::ExtrusionBar(
1634 &mrViewShell.GetViewShellBase());
1635 break;
1636
1637 case ToolbarId::Svx_Fontwork_Bar:
1638 pShell = new svx::FontworkBar(
1639 &mrViewShell.GetViewShellBase());
1640 break;
1641
1642 default:
1643 pShell = nullptr;
1644 break;
1645 }
1646
1647 return pShell;
1648}
1649
1650void ViewShellObjectBarFactory::ReleaseShell (SfxShell* pShell)
1651{
1652 delete pShell;
1653}
1654
1655} // end of anonymous namespace
1656
1657/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
DrawModeFlags
SwViewShell & mrViewShell
static const AllSettings & GetSettings()
sal_uInt16 GetValue() const
const CommandGestureZoomData * GetGestureZoomData() const
CommandEventId GetCommand() const
const CommandWheelData * GetWheelData() const
const CommandGestureLongPressData * GetLongPressData() const
const Point & GetMousePosPixel() const
const CommandGestureSwipeData * GetGestureSwipeData() const
bool IsMouseEvent() const
void SetMouseEvent(const MouseEvent &rNew)
css::uno::Reference< css::datatransfer::XTransferable > CreateTransferable(const ESelection &rSelection) const
ESelection GetSelection() const
void SetCursorLogicPosition(const Point &rPosition, bool bPoint, bool bClearMark)
EditEngine * GetEditEngine() const
bool PrepareClose(bool bUI=true)
const vcl::KeyCode & GetKeyCode() const
bool IsLeaveWindow() const
void * GetData() const
NotifyEventType GetType() const
EditView & GetEditView() const
SfxUndoManager & GetUndoManager()
void SetDrawMode(DrawModeFlags nDrawMode)
constexpr tools::Long Y() const
constexpr tools::Long X() const
constexpr tools::Long getX() const
constexpr tools::Long getY() const
SAL_DLLPRIVATE void StartOnlineSpelling(bool bForceSpelling=true)
Definition: drawdoc4.cxx:729
void SetView(const ::sd::View *pView)
Definition: sdxfer.cxx:754
size_t GetMarkCount() const
SdrMark * GetMark(size_t nNum) const
const SdrMarkList & GetMarkedObjectList() const
SdrObject * GetMarkedSdrObj() const
SdrTextObj * GetTextEditObject() const
const OutlinerView * GetTextEditOutlinerView() const
virtual bool IsTextEdit() const final override
const SdrOutliner * GetTextEditOutliner() const
virtual SdrInventor GetObjInventor() const
virtual SdrObjKind GetObjIdentifier() const
void VisAreaChanged(const OutputDevice *pOut)
void UnmarkAll()
void Invalidate(sal_uInt16 nId)
void InvalidateAll(bool bWithMsg)
const SfxPoolItem * ExecuteList(sal_uInt16 nSlot, SfxCallMode nCall, std::initializer_list< SfxPoolItem const * > args, std::initializer_list< SfxPoolItem const * > internalargs=std::initializer_list< SfxPoolItem const * >())
sal_uInt16 GetWhich(sal_uInt16 nSlot, bool bDeep=true) const
SfxItemPool * GetSecondaryPool() const
const SfxPoolItem * GetPoolDefaultItem(sal_uInt16 nWhich) const
SfxItemPool * GetPool() const
const T * GetItemIfSet(TypedWhichId< T > nWhich, bool bSrchInParent=true) const
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
const SfxPoolItem * GetItem(sal_uInt16 nWhich, bool bSearchInParent=true) const
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
void DisableItem(sal_uInt16 nWhich)
bool IsUIActive() const
sal_uInt16 GetSlot() const
const SfxItemSet * GetArgs() const
void SetReturnValue(const SfxPoolItem &)
void Done(bool bRemove=false)
virtual void Invalidate(sal_uInt16 nId=0)
virtual void Deactivate(bool bMDI)
SfxViewShell * GetViewShell() const
SfxDispatcher * GetDispatcher() const
void SetName(const OUString &rName)
virtual SfxStyleSheetBase * Find(const OUString &, SfxStyleFamily eFam, SfxStyleSearchBits n=SfxStyleSearchBits::All)
virtual SfxItemSet & GetItemSet()
virtual ViewShellId GetViewShellId() const
virtual bool Undo()
SfxUndoAction * GetRedoAction(size_t nNo=0) const
OUString GetRedoActionComment(size_t nNo=0, bool const i_currentLevel=CurrentLevel) const
OUString GetUndoActionComment(size_t nNo=0, bool const i_currentLevel=CurrentLevel) const
virtual bool Redo()
virtual size_t GetRedoActionCount(bool const i_currentLevel=CurrentLevel) const
virtual size_t GetUndoActionCount(bool const i_currentLevel=CurrentLevel) const
SfxUndoAction * GetUndoAction(size_t nNo=0) const
SfxBindings & GetBindings()
SfxChildWindow * GetChildWindow(sal_uInt16)
SfxViewFrame & GetViewFrame() const
virtual bool KeyInput(const KeyEvent &rKeyEvent)
bool IsEmpty() const
constexpr tools::Long Height() const
void setWidth(tools::Long nWidth)
void setHeight(tools::Long nHeight)
constexpr tools::Long Width() const
tools::Long & Left()
tools::Long & Top()
tools::Long & Right()
tools::Long & Bottom()
const SvxNumRule & GetNumRule() const
void SetFeatureFlag(SvxNumRuleFlags nFlag, bool bSet=true)
SwDoc * GetDoc() const
void disposeAndClear()
void reset(reference_type *pBody)
reference_type * get() const
Base class for the various document views of the Draw and Impress applications.
void fireSwitchCurrentPage(sal_Int32 pageIndex) noexcept
virtual SfxStyleSheetBasePool * GetStyleSheetPool() override
Definition: docshel4.cxx:690
virtual SfxUndoManager * GetUndoManager() override
Definition: docshell.cxx:363
void Connect(sd::ViewShell *pViewSh)
Definition: docshel2.cxx:147
void Disconnect(sd::ViewShell const *pViewSh)
Definition: docshel2.cxx:152
Base class of the stacked shells that provide graphical views to Draw and Impress documents and editi...
void SetDrawMode(DrawModeFlags nNewDrawMode)
Definition: FrameView.hxx:159
Base class for text functions.
Definition: futext.hxx:36
void InvalidateBindings()
Definition: futext.cxx:1408
Derivative of sd::View for the outline mode |* .
Definition: OutlineView.hxx:55
SdrOutliner & GetOutliner()
Definition: OutlineView.hxx:82
virtual void ReleaseShell(ShellType *pShell)=0
Tell the factory that a shell is no longer in use.
virtual ShellType * CreateShell(ShellId nId)=0
Create a new instance of a view shell for the given id that will be stacked onto the given view shell...
static bool IsRunning(ViewShellBase const &rBase)
returns true if there is a running presentation for the given ViewShellBase
Definition: slideshow.cxx:208
static css::uno::Reference< css::presentation::XSlideShowController > GetSlideShowController(ViewShellBase const &rBase)
Definition: slideshow.cxx:178
static rtl::Reference< SlideShow > GetSlideShow(SdDrawDocument const *pDocument)
Definition: slideshow.cxx:157
bool MouseButtonDown(const MouseEvent &)
returns true if a SmartTag consumes this event.
Definition: smarttag.cxx:183
bool KeyInput(const KeyEvent &rKEvt)
returns true if a SmartTag consumes this event.
Definition: smarttag.cxx:207
bool Command(const CommandEvent &rCEvt)
returns true if a SmartTag consumes this event.
Definition: smarttag.cxx:227
This derivation of the svx::SpellDialogChildWindow base class provides Draw and Impress specific impl...
void InvalidateSpellDialog()
This method makes the one from the base class public so that it can be called from the view shell whe...
SfxViewShell descendant that the stacked Draw/Impress shells are based on.
DrawController * GetDrawController() const
std::shared_ptr< ToolBarManager > const & GetToolBarManager() const
std::shared_ptr< ViewShell > GetMainViewShell() const
Return the main view shell stacked on the called ViewShellBase object.
std::shared_ptr< FormShellManager > const & GetFormShellManager() const
std::shared_ptr< ViewShellManager > const & GetViewShellManager() const
DrawDocShell * GetDocShell() const
SdDrawDocument * GetDocument() const
static std::shared_ptr< ToolBarManagerLock > Create(const std::shared_ptr< ToolBarManager > &rpManager)
Create a new instance.
This class contains (will contain) the implementation of methods that have not be accessible from the...
Base class of the stacked shell hierarchy.
Definition: ViewShell.hxx:92
virtual void UpdatePreview(SdPage *pPage)
This method is still used by the OutlineViewShell to update the model according to the content of the...
Definition: viewshel.cxx:1087
SD_DLLPUBLIC DrawDocShell * GetDocSh() const
Definition: viewshel.cxx:1407
virtual bool KeyInput(const KeyEvent &rKEvt, ::sd::Window *pWin)
Definition: viewshel.cxx:391
VclPtr< SvxRuler > mpHorizontalRuler
Horizontal ruler is not shown by default.
Definition: ViewShell.hxx:441
VclPtr< ScrollAdaptor > mpVerticalScrollBar
Vertical scroll bar for whole document is always visible.
Definition: ViewShell.hxx:439
bool IsMainViewShell() const
Return <TRUE> when the called view shell is the main sub shell of its ViewShellBase object,...
Definition: viewshel.cxx:1493
void SetUIUnit(FieldUnit eUnit)
Definition: viewshel.cxx:1054
const rtl::Reference< FuPoor > & GetCurrentFunction() const
Definition: ViewShell.hxx:250
void construct()
Code common to all constructors.
Definition: viewshel.cxx:174
virtual SfxUndoManager * ImpGetUndoManager() const
Definition: viewshel.cxx:1094
void ImpSidUndo(SfxRequest &rReq)
Definition: viewshel.cxx:1202
bool IsPageFlipMode() const
Definition: viewshel.cxx:112
void ImpGetUndoStrings(SfxItemSet &rSet) const
Definition: viewshel.cxx:1129
FrameView * mpFrameView
Definition: ViewShell.hxx:453
SdDrawDocument * GetDoc() const
Definition: viewshel.cxx:1412
virtual void SetZoom(::tools::Long nZoom)
Set zoom factor for all split windows.
Definition: viewshe2.cxx:309
virtual void Shutdown()
This method is more or less an alias to Deactivate().
Definition: viewshel.cxx:386
std::unique_ptr< Implementation, o3tl::default_delete< Implementation > > mpImpl
Definition: ViewShell.hxx:485
virtual void PrePaint()
Definition: viewshel.cxx:1510
ViewShell(vcl::Window *pParentWindow, ViewShellBase &rViewShellBase)
declare SFX-Slotmap and standard interface
Definition: viewshel.cxx:134
virtual void ShowUIControls(bool bVisible)
Show controls of the UI or hide them, depending on the given flag.
Definition: viewshel.cxx:1518
virtual void Paint(const ::tools::Rectangle &rRect, ::sd::Window *pWin)
Definition: viewshel.cxx:1514
virtual void UpdateScrollBars()
Set internal values of all scroll bars that determine thumb size and position.
Definition: viewshe2.cxx:71
virtual void MouseMove(const MouseEvent &rMEvt, ::sd::Window *pWin)
Definition: viewshel.cxx:551
void SetWinViewPos(const Point &rWinPos)
Definition: viewshe2.cxx:908
void Exit()
The Exit() method has to be called before the destructor so that the view shell is still a valid obje...
Definition: viewshel.cxx:269
virtual VclPtr< SvxRuler > CreateHRuler(::sd::Window *pWin)
Definition: viewshe2.cxx:229
virtual void Command(const CommandEvent &rCEvt, ::sd::Window *pWin)
Definition: viewshel.cxx:621
std::unique_ptr< ZoomList > mpZoomList
Definition: ViewShell.hxx:457
VclPtr< SvxRuler > mpVerticalRuler
Vertical ruler is not shown by default.
Definition: ViewShell.hxx:443
virtual SdPage * GetActualPage()=0
virtual void WriteFrameViewData()
Definition: viewshe2.cxx:620
virtual void MouseButtonUp(const MouseEvent &rMEvt, ::sd::Window *pWin)
Definition: viewshel.cxx:584
void SwitchActiveViewFireFocus()
Definition: viewshel.cxx:1565
sal_uInt16 mnPrintedHandoutPageNum
Definition: ViewShell.hxx:466
VclPtr< vcl::Window > mpParentWindow
Definition: ViewShell.hxx:535
::sd::WindowUpdater * GetWindowUpdater() const
Return the window updater of this view shell.
Definition: viewshel.cxx:1392
void DisposeFunctions()
must be called in the beginning of each subclass d'tor.
Definition: viewshel.cxx:1475
void ImpGetRedoStrings(SfxItemSet &rSet) const
Definition: viewshel.cxx:1156
css::uno::Reference< css::datatransfer::XTransferable > GetSelectionTransferable() const
Gets the current selection.
Definition: viewshel.cxx:520
ShellType meShellType
The type of the shell. Returned by GetShellType().
Definition: ViewShell.hxx:483
rtl::Reference< FuPoor > mxOldFunction
Definition: ViewShell.hxx:456
virtual bool RelocateToParentWindow(vcl::Window *pParentWindow)
Set the given window as new parent window.
Definition: viewshel.cxx:1539
virtual void ArrangeGUIElements()
Set position and size of the GUI elements that are controlled by the view shell like rulers and scrol...
Definition: viewshel.cxx:965
virtual css::uno::Reference< css::accessibility::XAccessible > CreateAccessibleDocumentView(::sd::Window *pWindow)
Create an accessible object representing the specified window.
Definition: viewshel.cxx:1385
void SetActiveWindow(::sd::Window *pWindow)
Set the active window.
Definition: viewshe2.cxx:549
double mfAccumulatedZoom
Definition: ViewShell.hxx:459
virtual void Init(bool bIsMainViewShell)
The Init method has to be called from the outside directly after a new object of this class has been ...
Definition: viewshel.cxx:261
virtual ErrCode DoVerb(sal_Int32 nVerb)
This function is called from the underlying ViewShellBase object to handle a verb execution request.
Definition: viewshel.cxx:1417
void ScrollLines(::tools::Long nX, ::tools::Long nY)
Scroll a specific number of lines.
Definition: viewshe2.cxx:251
void InvalidateWindows()
Invalidate all split windows below the ?provided rectangle.
Definition: viewshe2.cxx:433
VclPtr< ::sd::Window > mpActiveWindow
The active window.
Definition: ViewShell.hxx:451
::sd::Window * GetActiveWindow() const
The active window is usually the mpContentWindow.
Definition: ViewShell.hxx:155
SvBorder GetBorder()
Return the border that is drawn around the actual document view.
Definition: viewshel.cxx:934
::sd::View * GetView() const
Definition: ViewShell.hxx:144
::std::unique_ptr< ::sd::WindowUpdater > mpWindowUpdater
This window updater is used to keep all relevant windows up to date with reference to the digit langu...
Definition: ViewShell.hxx:540
virtual VclPtr< SvxRuler > CreateVRuler(::sd::Window *pWin)
Definition: viewshe2.cxx:234
void SetGraphicMm100Position(bool bStart, const Point &rPosition)
Allows starting or ending a graphic move or resize action.
Definition: viewshel.cxx:533
virtual bool PrepareClose(bool bUI=true)
Tell the FmFormShell that the view shell is closing.
Definition: viewshel.cxx:1076
void DeactivateCurrentFunction(bool bPermanent=false)
Definition: viewshel.cxx:1459
void SetIsMainViewShell(bool bIsMainViewShell)
Set or reset the flag that indicates whether the called shell is the one displayed in the center pane...
Definition: viewshel.cxx:1498
virtual void MouseButtonDown(const MouseEvent &rMEvt, ::sd::Window *pWin)
Definition: viewshel.cxx:458
vcl::Window * GetParentWindow() const
Return the window that is the parent of all controls of this view shell.
Definition: ViewShell.hxx:140
::tools::Rectangle maAllWindowRectangle
Area covered by all windows, i.e.
Definition: ViewShell.hxx:480
sal_uInt16 mnPrintedHandoutPageCount
Definition: ViewShell.hxx:467
virtual void ReadFrameViewData(FrameView *pView)
Definition: viewshe2.cxx:610
virtual ~ViewShell() override
Definition: viewshel.cxx:141
void SetOldFunction(const rtl::Reference< FuPoor > &xFunction)
Definition: viewshel.cxx:1430
VclPtr< LayerTabBar > mpLayerTabBar
Layer tab bar.
Definition: ViewShell.hxx:445
void SetupRulers()
Create the rulers.
Definition: viewshel.cxx:810
SD_DLLPUBLIC weld::Window * GetFrameWeld() const
Definition: viewshel.cxx:1582
bool Notify(NotifyEvent const &rNEvt, ::sd::Window *pWin)
Definition: viewshel.cxx:645
::sd::View * mpView
Definition: ViewShell.hxx:452
void ImpSidRedo(SfxRequest &rReq)
Definition: viewshel.cxx:1270
void fireSwitchCurrentPage(sal_Int32 pageIndex)
Definition: viewshel.cxx:1573
void NotifyAccUpdate()
Definition: viewshel.cxx:1577
void SetCurrentFunction(const rtl::Reference< FuPoor > &xFunction)
Definition: viewshel.cxx:1422
rtl::Reference< FuPoor > mxCurrentFunction
Definition: ViewShell.hxx:455
virtual void SwitchViewFireFocus(const css::uno::Reference< css::accessibility::XAccessible > &xAcc)
Definition: viewshel.cxx:1556
virtual void UIActivating(SfxInPlaceClient *)
Definition: viewshel.cxx:338
Point const & GetWinViewPos() const
Definition: viewshe2.cxx:937
bool mbStartShowWithDialog
Definition: ViewShell.hxx:465
double mfLastZoomScale
Definition: ViewShell.hxx:458
virtual void Resize()
Notify the view shell that its parent window has been resized.
Definition: viewshel.cxx:908
void Cancel()
this method deactivates the current function.
Definition: viewshel.cxx:1442
void ExecReq(SfxRequest &rReq)
Definition: viewshel.cxx:1339
void SetCursorMm100Position(const Point &rPosition, bool bPoint, bool bClearMark)
Allows adjusting the point or mark of the selection to a document coordinate.
Definition: viewshel.cxx:504
virtual void Activate(bool IsMDIActivate) override
set focus to working window
Definition: viewshel.cxx:289
VclPtr< sd::Window > mpContentWindow
Window inside the rulers and scroll bars that shows a view of the document.
Definition: ViewShell.hxx:434
SD_DLLPUBLIC ViewShellBase & GetViewShellBase() const
Definition: viewshel.cxx:1397
bool HandleScrollCommand(const CommandEvent &rCEvt, ::sd::Window *pWin)
Definition: viewshel.cxx:658
virtual void UIDeactivated(SfxInPlaceClient *)
Definition: viewshel.cxx:344
SD_DLLPUBLIC SfxViewFrame * GetViewFrame() const
Definition: viewshel.cxx:118
bool HasCurrentFunction() const
Definition: ViewShell.hxx:252
void doShow()
This must be called after the ctor, but before anything else.
Definition: viewshel.cxx:238
void SetDefTabHRuler(sal_uInt16 nDefTab)
set DefTab at horizontal rulers
Definition: viewshel.cxx:1067
const SvxNumBulletItem * GetNumBulletItem(SfxItemSet &aNewAttr, TypedWhichId< SvxNumBulletItem > &nNumItemId)
Definition: viewshel.cxx:839
SD_DLLPUBLIC ShellType GetShellType() const
Return the type of the shell.
Definition: viewshel.cxx:1402
SdrView * GetDrawView() const
Definition: ViewShell.hxx:552
virtual void Deactivate(bool IsMDIActivate) override
Definition: viewshel.cxx:352
VclPtr< ScrollAdaptor > mpHorizontalScrollBar
Horizontal scroll bar for the current slide is displayed when needed.
Definition: ViewShell.hxx:437
sd::Window * GetContentWindow() const
Definition: viewshel.cxx:1587
bool mbHasRulers
This flag controls whether the rulers are visible.
Definition: ViewShell.hxx:448
DrawDocShell * GetDocSh() const
Definition: View.hxx:142
virtual SdrEndTextEditKind SdrEndTextEdit(bool bDontDeleteReally=false) override
ends current text editing
Definition: sdview.cxx:772
SmartTagSet & getSmartTags()
Definition: View.hxx:207
The purpose of the <type>WindowUpdater</type> is to update output devices to take care of modified gl...
An SdWindow contains the actual working area of ViewShell.
Definition: Window.hxx:45
void GrabFocus()
Activate window.
Definition: sdwindow.cxx:750
::tools::Long GetMaxZoom() const
Definition: Window.hxx:106
::tools::Long GetMinZoom() const
Definition: Window.hxx:104
::tools::Long GetZoom() const
Definition: sdwindow.cxx:183
SD_DLLPUBLIC SlideSorter & GetSlideSorter() const
static SD_DLLPUBLIC SlideSorterViewShell * GetSlideSorter(ViewShellBase &rBase)
Return a slide sorter that is currently displayed in one of the panes that belong to the given ViewSh...
Show previews for all the slides in a document and allow the user to insert or delete slides and modi...
Definition: SlideSorter.hxx:62
Use the UpdateLock whenever you do a complex selection, i.e.
Use this little class instead of calling StartObservation and EndObservation directly so that EndObse...
Create an object of this inner class to prevent updates due to model changes.
bool IsMod1() const
sal_uInt16 GetCode() const
bool IsShift() const
bool HandleScrollCommand(const CommandEvent &rCmd, Scrollable *pHScrl, Scrollable *pVScrl)
bool HasFocus() const
void Show(bool bVisible=true, ShowFlags nFlags=ShowFlags::NONE)
::OutputDevice const * GetOutDev() const
Point PixelToLogic(const Point &rDevicePt) const
void Invalidate(InvalidateFlags nFlags=InvalidateFlags::NONE)
void SetBackground()
#define COMMAND_WHEEL_PAGESCROLL
int nCount
Reference< XComponentContext > m_aContext
#define suppress_fun_call_w_exception(expr)
virtual std::shared_ptr< SfxDialogController > GetController() override
constexpr TypedWhichId< SvxNumBulletItem > EE_PARA_NUMBULLET(EE_PARA_START+5)
#define ERRCODE_NONE
#define MOUSE_LEFT
FieldUnit
uno_Any a
constexpr sal_uInt16 KEY_R
#define SAL_INFO(area, stream)
std::unique_ptr< sal_Int32[]> pData
sal_uInt16 zoomIn(sal_uInt16 nCurrent)
sal_uInt16 zoomOut(sal_uInt16 nCurrent)
@ Exception
SfxShell * CreateTableObjectBar(ViewShell &rShell, ::sd::View *pView)
creates a table object bar for the given ViewShell
const DrawModeFlags OUTPUT_DRAWMODE_CONTRAST
Definition: ViewShell.hxx:72
const DrawModeFlags OUTPUT_DRAWMODE_GRAYSCALE
Definition: ViewShell.hxx:64
const DrawModeFlags OUTPUT_DRAWMODE_BLACKWHITE
Definition: ViewShell.hxx:68
@ ANIMATIONMODE_SHOW
Definition: slideshow.hxx:72
const DrawModeFlags OUTPUT_DRAWMODE_COLOR
Definition: ViewShell.hxx:62
long Long
#define SD_MOD()
Definition: sdmod.hxx:184
static SfxItemSet & rSet
sal_uIntPtr sal_uLong
constexpr OUStringLiteral STR_LAYOUT_OUTLINE
Definition: strings.hxx:16
ToolbarId
bool bVisible
const std::u16string_view aStringList[]