xref: /trunk/main/sd/source/ui/slideshow/showwin.cxx (revision 78190a370f7d7129fed9a7e70ca122eaae71ce1d)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sd.hxx"
26 
27 #include <com/sun/star/awt/Key.hpp>
28 
29 #include "showwindow.hxx"
30 
31 #include <unotools/syslocale.hxx>
32 #include <sfx2/viewfrm.hxx>
33 
34 
35 #include "res_bmp.hrc"
36 #include "slideshow.hxx"
37 #include "ViewShellBase.hxx"
38 #include "slideshow.hxx"
39 #include "sdresid.hxx"
40 #include "helpids.h"
41 #include "strings.hrc"
42 #include <vcl/virdev.hxx>
43 
44 using namespace ::com::sun::star;
45 
46 namespace sd {
47 
48 static const sal_uLong HIDE_MOUSE_TIMEOUT = 10000;
49 static const sal_uLong SHOW_MOUSE_TIMEOUT = 1000;
50 
51 // =============================================================================
52 
53 ShowWindow::ShowWindow( const ::rtl::Reference< SlideshowImpl >& xController, ::Window* pParent )
54 : ::sd::Window( pParent )
55 , mnPauseTimeout( SLIDE_NO_TIMEOUT )
56 , mnRestartPageIndex( PAGE_NO_END )
57 , meShowWindowMode(SHOWWINDOWMODE_NORMAL)
58 , mbShowNavigatorAfterSpecialMode( sal_False )
59 , mbMouseAutoHide(true)
60 , mbMouseCursorHidden(false)
61 , mnFirstMouseMove(0)
62 , mxController( xController )
63 {
64     SetOutDevViewType( OUTDEV_VIEWTYPE_SLIDESHOW );
65 
66     // Do never mirror the preview window. This explicitly includes right
67     // to left writing environments.
68     EnableRTL (sal_False);
69 
70     MapMode aMap(GetMapMode());
71     aMap.SetMapUnit(MAP_100TH_MM);
72     SetMapMode(aMap);
73 
74     // HelpId setzen
75     SetHelpId( HID_SD_WIN_PRESENTATION );
76     SetUniqueId( HID_SD_WIN_PRESENTATION );
77 
78     maPauseTimer.SetTimeoutHdl( LINK( this, ShowWindow, PauseTimeoutHdl ) );
79     maPauseTimer.SetTimeout( 1000 );
80     maMouseTimer.SetTimeoutHdl( LINK( this, ShowWindow, MouseTimeoutHdl ) );
81     maMouseTimer.SetTimeout( HIDE_MOUSE_TIMEOUT );
82 
83     maShowBackground = Wallpaper( Color( COL_BLACK ) );
84 //  SetBackground( Wallpaper( Color( COL_BLACK ) ) );
85     SetBackground(); // avoids that VCL paints any background!
86     GetParent()->Show();
87     AddEventListener( LINK( this, ShowWindow, EventHdl ) );
88 }
89 
90 ShowWindow::~ShowWindow(void)
91 {
92     maPauseTimer.Stop();
93     maMouseTimer.Stop();
94 }
95 
96 /*************************************************************************
97 |* Keyboard event
98 \************************************************************************/
99 
100 void ShowWindow::KeyInput(const KeyEvent& rKEvt)
101 {
102     sal_Bool bReturn = sal_False;
103 
104     if( SHOWWINDOWMODE_PREVIEW == meShowWindowMode )
105     {
106         TerminateShow();
107         bReturn = true;
108     }
109     else if( SHOWWINDOWMODE_END == meShowWindowMode )
110     {
111         const int nKeyCode = rKEvt.GetKeyCode().GetCode();
112         switch( nKeyCode )
113         {
114         case KEY_PAGEUP:
115         case KEY_LEFT:
116         case KEY_UP:
117         case KEY_P:
118         case KEY_HOME:
119         case KEY_END:
120         case awt::Key::CONTEXTMENU:
121             // these keys will be handled by the slide show even
122             // while in end mode
123             break;
124         default:
125             TerminateShow();
126             bReturn = true;
127         }
128     }
129     else if( SHOWWINDOWMODE_BLANK == meShowWindowMode )
130     {
131         RestartShow();
132         bReturn = true;
133     }
134     else if( SHOWWINDOWMODE_PAUSE == meShowWindowMode )
135     {
136         const int nKeyCode = rKEvt.GetKeyCode().GetCode();
137         switch( nKeyCode )
138         {
139         case KEY_ESCAPE:
140             TerminateShow();
141             bReturn = true;
142             break;
143         case KEY_PAGEUP:
144         case KEY_RIGHT:
145         case KEY_UP:
146         case KEY_P:
147         case KEY_HOME:
148         case KEY_END:
149         case awt::Key::CONTEXTMENU:
150             // these keys will be handled by the slide show even
151             // while in end mode
152             break;
153         default:
154             RestartShow();
155             bReturn = true;
156             break;
157         }
158     }
159 
160     if( !bReturn )
161     {
162         if( mxController.is() )
163             bReturn = mxController->keyInput(rKEvt);
164 
165         if( !bReturn )
166         {
167             if( mpViewShell )
168             {
169                 mpViewShell->KeyInput(rKEvt,this);
170             }
171             else
172             {
173                 Window::KeyInput(rKEvt);
174             }
175         }
176     }
177 
178     if( mpViewShell )
179         mpViewShell->SetActiveWindow( this );
180 }
181 
182 /*************************************************************************
183 |* MouseButtonDown event
184 \************************************************************************/
185 
186 void ShowWindow::MouseButtonDown(const MouseEvent& /*rMEvt*/)
187 {
188     if( SHOWWINDOWMODE_PREVIEW == meShowWindowMode )
189     {
190         TerminateShow();
191     }
192     else if( mpViewShell )
193     {
194         mpViewShell->SetActiveWindow( this );
195     }
196 }
197 
198 /*************************************************************************
199 |* MouseMove event
200 \************************************************************************/
201 
202 void ShowWindow::MouseMove(const MouseEvent& /*rMEvt*/)
203 {
204     if( mbMouseAutoHide )
205     {
206         if( mbMouseCursorHidden )
207         {
208             if( mnFirstMouseMove )
209             {
210                 // if this is not the first mouse move while hidden, see if
211                 // enough time has pasted to show mouse pointer again
212                 sal_uLong nTime = Time::GetSystemTicks();
213                 if( (nTime - mnFirstMouseMove) >= SHOW_MOUSE_TIMEOUT )
214                 {
215                     ShowPointer( sal_True );
216                     mnFirstMouseMove = 0;
217                     mbMouseCursorHidden = false;
218                     maMouseTimer.SetTimeout( HIDE_MOUSE_TIMEOUT );
219                     maMouseTimer.Start();
220                 }
221             }
222             else
223             {
224                 // if this is the first mouse move, note current
225                 // time and start idle timer to cancel show mouse pointer
226                 // again if not enough mouse movement is measured
227                 mnFirstMouseMove = Time::GetSystemTicks();
228                 maMouseTimer.SetTimeout( 2*SHOW_MOUSE_TIMEOUT );
229                 maMouseTimer.Start();
230             }
231         }
232         else
233         {
234             // current mousemove restarts the idle timer to hide the mouse
235             maMouseTimer.Start();
236         }
237     }
238 
239     if( mpViewShell )
240         mpViewShell->SetActiveWindow( this );
241 }
242 
243 /*************************************************************************
244 |* MouseButtonUp event
245 \************************************************************************/
246 
247 void ShowWindow::MouseButtonUp(const MouseEvent& rMEvt)
248 {
249     if( SHOWWINDOWMODE_PREVIEW == meShowWindowMode )
250     {
251         TerminateShow();
252     }
253     else if( (SHOWWINDOWMODE_END == meShowWindowMode) && !rMEvt.IsRight() )
254     {
255         TerminateShow();
256     }
257     else if( (( SHOWWINDOWMODE_BLANK == meShowWindowMode ) || ( SHOWWINDOWMODE_PAUSE == meShowWindowMode ))
258              && !rMEvt.IsRight() )
259     {
260         RestartShow();
261     }
262     else
263     {
264         if( mxController.is() )
265             mxController->mouseButtonUp( rMEvt );
266     }
267 }
268 
269 /*************************************************************************
270 |* Paint-Event: wenn FuSlideShow noch erreichbar ist, weiterleiten
271 \************************************************************************/
272 
273 void ShowWindow::Paint(const Rectangle& rRect)
274 {
275     if( (meShowWindowMode == SHOWWINDOWMODE_NORMAL) || (meShowWindowMode == SHOWWINDOWMODE_PREVIEW) )
276     {
277 /*
278         Region aOldClipRegion( GetClipRegion() );
279 
280         Region aClipRegion( rRect );
281         aClipRegion.Exclude( maPresArea );
282         SetClipRegion( aClipRegion );
283 
284         DrawWallpaper( rRect, maShowBackground );
285 
286         SetClipRegion( aOldClipRegion );
287 */
288         if( mxController.is() )
289         {
290             mxController->paint(rRect);
291         }
292         else if(mpViewShell )
293         {
294             mpViewShell->Paint(rRect, this);
295         }
296     }
297     else
298     {
299         DrawWallpaper( rRect, maShowBackground );
300 
301         if( SHOWWINDOWMODE_END == meShowWindowMode )
302         {
303             DrawEndScene();
304         }
305         else if( SHOWWINDOWMODE_PAUSE == meShowWindowMode )
306         {
307             DrawPauseScene( sal_False );
308         }
309         else if( SHOWWINDOWMODE_BLANK == meShowWindowMode )
310         {
311             DrawBlankScene();
312         }
313     }
314 }
315 
316 /*************************************************************************
317 |* Notify
318 \************************************************************************/
319 
320 long ShowWindow::Notify(NotifyEvent& rNEvt)
321 {
322     long nOK = sal_False;
323 /*
324     if( mpViewShell && rNEvt.GetType() == EVENT_GETFOCUS )
325     {
326         NotifyEvent aNEvt(EVENT_GETFOCUS, this);
327         nOK = mpViewShell->GetViewFrame()->GetWindow().Notify(aNEvt);
328     }
329 */
330     if (!nOK)
331         nOK = Window::Notify(rNEvt);
332 
333     return nOK;
334 }
335 
336 
337 // -----------------------------------------------------------------------------
338 
339 void ShowWindow::GetFocus()
340 {
341     // Basisklasse
342     Window::GetFocus();
343 /*
344     if( mpViewShell )
345     {
346         NotifyEvent aNEvt(EVENT_GETFOCUS, this);
347         mpViewShell->GetViewFrame()->GetWindow().Notify(aNEvt);
348     }
349 */
350 }
351 
352 // -----------------------------------------------------------------------------
353 
354 void ShowWindow::LoseFocus()
355 {
356     Window::LoseFocus();
357 
358     if( SHOWWINDOWMODE_PREVIEW == meShowWindowMode)
359         TerminateShow();
360 }
361 
362 // -----------------------------------------------------------------------------
363 
364 void ShowWindow::Resize()
365 {
366     ::sd::Window::Resize();
367 }
368 
369 // -----------------------------------------------------------------------------
370 
371 void ShowWindow::Move()
372 {
373     ::sd::Window::Move();
374 }
375 
376 // -----------------------------------------------------------------------------
377 
378 sal_Bool ShowWindow::SetEndMode()
379 {
380     if( ( SHOWWINDOWMODE_NORMAL == meShowWindowMode ) && mpViewShell && mpViewShell->GetView() )
381     {
382         DeleteWindowFromPaintView();
383         meShowWindowMode = SHOWWINDOWMODE_END;
384 //      maShowBackground = GetBackground();
385 //      SetBackground( Wallpaper( Color( COL_BLACK ) ) );
386         maShowBackground = Wallpaper( Color( COL_BLACK ) );
387 
388         // hide navigator if it is visible
389         if( mpViewShell->GetViewFrame()->GetChildWindow( SID_NAVIGATOR ) )
390         {
391             mpViewShell->GetViewFrame()->ShowChildWindow( SID_NAVIGATOR, sal_False );
392             mbShowNavigatorAfterSpecialMode = sal_True;
393         }
394 
395         Invalidate();
396     }
397 
398     return( SHOWWINDOWMODE_END == meShowWindowMode );
399 }
400 
401 // -----------------------------------------------------------------------------
402 
403 sal_Bool ShowWindow::SetPauseMode( sal_Int32 nPageIndexToRestart, sal_Int32 nTimeout, Graphic* pLogo )
404 {
405     rtl::Reference< SlideShow > xSlideShow;
406 
407     if( mpViewShell )
408         xSlideShow = SlideShow::GetSlideShow( mpViewShell->GetViewShellBase() );
409 
410     if( xSlideShow.is() && !nTimeout )
411     {
412         xSlideShow->jumpToPageIndex( nPageIndexToRestart );
413     }
414     else if( ( SHOWWINDOWMODE_NORMAL == meShowWindowMode ) && mpViewShell && mpViewShell->GetView() )
415     {
416         DeleteWindowFromPaintView();
417         mnPauseTimeout = nTimeout;
418         mnRestartPageIndex = nPageIndexToRestart;
419         meShowWindowMode = SHOWWINDOWMODE_PAUSE;
420 //      maShowBackground = GetBackground();
421 //      SetBackground( Wallpaper( Color( COL_BLACK ) ) );
422         maShowBackground = Wallpaper( Color( COL_BLACK ) );
423 
424         // hide navigator if it is visible
425         if( mpViewShell->GetViewFrame()->GetChildWindow( SID_NAVIGATOR ) )
426         {
427             mpViewShell->GetViewFrame()->ShowChildWindow( SID_NAVIGATOR, sal_False );
428             mbShowNavigatorAfterSpecialMode = sal_True;
429         }
430 
431         if( pLogo )
432             maLogo = *pLogo;
433 
434         Invalidate();
435 
436         if( SLIDE_NO_TIMEOUT != mnPauseTimeout )
437             maPauseTimer.Start();
438     }
439 
440     return( SHOWWINDOWMODE_PAUSE == meShowWindowMode );
441 }
442 
443 // -----------------------------------------------------------------------------
444 
445 sal_Bool ShowWindow::SetBlankMode( sal_Int32 nPageIndexToRestart, const Color& rBlankColor )
446 {
447     if( ( SHOWWINDOWMODE_NORMAL == meShowWindowMode ) && mpViewShell && mpViewShell->GetView() )
448     {
449         DeleteWindowFromPaintView();
450         mnRestartPageIndex = nPageIndexToRestart;
451         meShowWindowMode = SHOWWINDOWMODE_BLANK;
452 //      maShowBackground = GetBackground();
453 //      SetBackground( Wallpaper( rBlankColor ) );
454         maShowBackground = Wallpaper( rBlankColor );
455 
456         // hide navigator if it is visible
457         if( mpViewShell->GetViewFrame()->GetChildWindow( SID_NAVIGATOR ) )
458         {
459             mpViewShell->GetViewFrame()->ShowChildWindow( SID_NAVIGATOR, sal_False );
460             mbShowNavigatorAfterSpecialMode = sal_True;
461         }
462 
463         Invalidate();
464     }
465 
466     return( SHOWWINDOWMODE_BLANK == meShowWindowMode );
467 }
468 
469 // -----------------------------------------------------------------------------
470 
471 void ShowWindow::SetPreviewMode()
472 {
473     meShowWindowMode = SHOWWINDOWMODE_PREVIEW;
474 }
475 
476 // -----------------------------------------------------------------------------
477 
478 void ShowWindow::TerminateShow()
479 {
480     maLogo.Clear();
481     maPauseTimer.Stop();
482     maMouseTimer.Stop();
483     Erase();
484 //  SetBackground( maShowBackground );
485     maShowBackground = Wallpaper( Color( COL_BLACK ) );
486     meShowWindowMode = SHOWWINDOWMODE_NORMAL;
487     mnPauseTimeout = SLIDE_NO_TIMEOUT;
488 
489     if( mpViewShell )
490     {
491         // show navigator?
492         if( mbShowNavigatorAfterSpecialMode )
493         {
494             mpViewShell->GetViewFrame()->ShowChildWindow( SID_NAVIGATOR, sal_True );
495             mbShowNavigatorAfterSpecialMode = sal_False;
496         }
497     }
498 
499     if( mxController.is() )
500         mxController->endPresentation();
501 
502     mnRestartPageIndex = PAGE_NO_END;
503 }
504 
505 // -----------------------------------------------------------------------------
506 
507 void ShowWindow::RestartShow()
508 {
509     RestartShow( mnRestartPageIndex );
510 }
511 
512 // -----------------------------------------------------------------------------
513 
514 void ShowWindow::RestartShow( sal_Int32 nPageIndexToRestart )
515 
516 {
517     ShowWindowMode eOldShowWindowMode = meShowWindowMode;
518 
519     maLogo.Clear();
520     maPauseTimer.Stop();
521     Erase();
522 //  SetBackground( maShowBackground );
523     maShowBackground = Wallpaper( Color( COL_BLACK ) );
524     meShowWindowMode = SHOWWINDOWMODE_NORMAL;
525     mnPauseTimeout = SLIDE_NO_TIMEOUT;
526 
527     if( mpViewShell )
528     {
529         rtl::Reference< SlideShow > xSlideShow( SlideShow::GetSlideShow( mpViewShell->GetViewShellBase() ) );
530 
531         if( xSlideShow.is() )
532         {
533             AddWindowToPaintView();
534 
535             if( SHOWWINDOWMODE_BLANK == eOldShowWindowMode )
536             {
537                 xSlideShow->pause(false);
538                 Invalidate();
539             }
540             else
541             {
542                 xSlideShow->jumpToPageIndex( nPageIndexToRestart );
543             }
544         }
545     }
546 
547     mnRestartPageIndex = PAGE_NO_END;
548 
549     // show navigator?
550     if( mbShowNavigatorAfterSpecialMode )
551     {
552         mpViewShell->GetViewFrame()->ShowChildWindow( SID_NAVIGATOR, sal_True );
553         mbShowNavigatorAfterSpecialMode = sal_False;
554     }
555 }
556 
557 // -----------------------------------------------------------------------------
558 
559 void ShowWindow::DrawPauseScene( sal_Bool bTimeoutOnly )
560 {
561     const MapMode&  rMap = GetMapMode();
562     const Point     aOutOrg( PixelToLogic( Point() ) );
563     const Size      aOutSize( GetOutputSize() );
564     const Size      aTextSize( LogicToLogic( Size( 0, 14 ), MAP_POINT, rMap ) );
565     const Size      aOffset( LogicToLogic( Size( 1000, 1000 ), MAP_100TH_MM, rMap ) );
566     String          aText( SdResId( STR_PRES_PAUSE ) );
567     sal_Bool            bDrawn = sal_False;
568 
569     Font            aFont( GetSettings().GetStyleSettings().GetMenuFont() );
570     const Font      aOldFont( GetFont() );
571 
572     aFont.SetSize( aTextSize );
573     aFont.SetColor( COL_WHITE );
574     aFont.SetCharSet( aOldFont.GetCharSet() );
575     aFont.SetLanguage( aOldFont.GetLanguage() );
576 
577     if( !bTimeoutOnly && ( maLogo.GetType() != GRAPHIC_NONE ) )
578     {
579         Size aGrfSize;
580 
581         if( maLogo.GetPrefMapMode() == MAP_PIXEL )
582             aGrfSize = PixelToLogic( maLogo.GetPrefSize() );
583         else
584             aGrfSize = LogicToLogic( maLogo.GetPrefSize(), maLogo.GetPrefMapMode(), rMap );
585 
586         const Point aGrfPos( Max( aOutOrg.X() + aOutSize.Width() - aGrfSize.Width() - aOffset.Width(), aOutOrg.X() ),
587                              Max( aOutOrg.Y() + aOutSize.Height() - aGrfSize.Height() - aOffset.Height(), aOutOrg.Y() ) );
588 
589         if( maLogo.IsAnimated() )
590             maLogo.StartAnimation( this, aGrfPos, aGrfSize, (long) this );
591         else
592             maLogo.Draw( this, aGrfPos, aGrfSize );
593     }
594 
595     if( SLIDE_NO_TIMEOUT != mnPauseTimeout )
596     {
597         MapMode         aVMap( rMap );
598         VirtualDevice   aVDev( *this );
599 
600         aVMap.SetOrigin( Point() );
601         aVDev.SetMapMode( aVMap );
602         aVDev.SetBackground( Wallpaper( Color( COL_BLACK ) ) );
603 
604         // set font first, to determine real output height
605         aVDev.SetFont( aFont );
606 
607         const Size aVDevSize( aOutSize.Width(), aVDev.GetTextHeight() );
608 
609         if( aVDev.SetOutputSize( aVDevSize ) )
610         {
611             // Note: if performance gets an issue here, we can use NumberFormatter directly
612             SvtSysLocale                aSysLocale;
613             const LocaleDataWrapper&    aLocaleData = aSysLocale.GetLocaleData();
614 
615             aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM( " ( " ));
616             aText += aLocaleData.getDuration( Time( 0, 0, mnPauseTimeout ) );
617             aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM( " )" ));
618             aVDev.DrawText( Point( aOffset.Width(), 0 ), aText );
619             DrawOutDev( Point( aOutOrg.X(), aOffset.Height() ), aVDevSize, Point(), aVDevSize, aVDev );
620             bDrawn = sal_True;
621         }
622     }
623 
624     if( !bDrawn )
625     {
626         SetFont( aFont );
627         DrawText( Point( aOutOrg.X() + aOffset.Width(), aOutOrg.Y() + aOffset.Height() ), aText );
628         SetFont( aOldFont );
629     }
630 }
631 
632 // -----------------------------------------------------------------------------
633 
634 void ShowWindow::DrawEndScene()
635 {
636     const Font      aOldFont( GetFont() );
637     Font            aFont( GetSettings().GetStyleSettings().GetMenuFont() );
638 
639     const Point     aOutOrg( PixelToLogic( Point() ) );
640     const Size      aTextSize( LogicToLogic( Size( 0, 14 ), MAP_POINT, GetMapMode() ) );
641     const String    aText( SdResId( STR_PRES_SOFTEND ) );
642 
643     aFont.SetSize( aTextSize );
644     aFont.SetColor( COL_WHITE );
645     aFont.SetCharSet( aOldFont.GetCharSet() );
646     aFont.SetLanguage( aOldFont.GetLanguage() );
647     SetFont( aFont );
648     DrawText( Point( aOutOrg.X() + aTextSize.Height(), aOutOrg.Y() + aTextSize.Height() ), aText );
649     SetFont( aOldFont );
650 }
651 
652 // -----------------------------------------------------------------------------
653 
654 void ShowWindow::DrawBlankScene()
655 {
656     // just blank through background color => nothing to be done here
657 }
658 
659 // -----------------------------------------------------------------------------
660 
661 IMPL_LINK( ShowWindow, PauseTimeoutHdl, Timer*, pTimer )
662 {
663     if( !( --mnPauseTimeout ) )
664         RestartShow();
665     else
666     {
667         DrawPauseScene( sal_True );
668         pTimer->Start();
669     }
670 
671     return 0L;
672 }
673 
674 IMPL_LINK( ShowWindow, MouseTimeoutHdl, Timer*, EMPTYARG )
675 {
676     if( mbMouseCursorHidden )
677     {
678         // not enough mouse movements since first recording so
679         // cancel show mouse pointer for now
680         mnFirstMouseMove = 0;
681     }
682     else
683     {
684         // mouse has been idle to long, hide pointer
685         ShowPointer( sal_False );
686         mbMouseCursorHidden = true;
687     }
688     return 0L;
689 }
690 
691 IMPL_LINK( ShowWindow, EventHdl, VclWindowEvent*, pEvent )
692 {
693     if( mbMouseAutoHide )
694     {
695         if (pEvent->GetId() == VCLEVENT_WINDOW_SHOW)
696         {
697             maMouseTimer.SetTimeout( HIDE_MOUSE_TIMEOUT );
698             maMouseTimer.Start();
699         }
700     }
701     return 0L;
702 }
703 
704 void ShowWindow::SetPresentationArea( const Rectangle& rPresArea )
705 {
706     maPresArea = rPresArea;
707 }
708 
709 void ShowWindow::DeleteWindowFromPaintView()
710 {
711     if( mpViewShell->GetView() )
712         mpViewShell->GetView()->DeleteWindowFromPaintView( this );
713 
714     sal_uInt16 nChild = GetChildCount();
715     while( nChild-- )
716         GetChild( nChild )->Show( sal_False );
717 }
718 
719 void ShowWindow::AddWindowToPaintView()
720 {
721     if( mpViewShell->GetView() )
722         mpViewShell->GetView()->AddWindowToPaintView( this );
723 
724     sal_uInt16 nChild = GetChildCount();
725     while( nChild-- )
726         GetChild( nChild )->Show( sal_True );
727 }
728 
729 // Overload the sd::Window's CreateAccessible to create a different accessible object
730 ::com::sun::star::uno::Reference<
731     ::com::sun::star::accessibility::XAccessible>
732     ShowWindow::CreateAccessible (void)
733 {
734     ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > xAcc = GetAccessible(sal_False);
735     if (xAcc.get())
736     {
737         return xAcc;
738     }
739     if (mpViewShell != NULL)
740     {
741         xAcc = mpViewShell->CreateAccessibleDocumentView (this);
742         SetAccessible(xAcc);
743         return xAcc;
744     }
745     else
746     {
747         OSL_TRACE ("::sd::Window::CreateAccessible: no view shell");
748     return ::Window::CreateAccessible ();
749     }
750 }
751 } // end of namespace sd
752 
753 /* vim: set noet sw=4 ts=4: */
754