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