LCOV - code coverage report
Current view: top level - libreoffice/UnoControls/source/base - multiplexer.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 165 0.0 %
Date: 2012-12-27 Functions: 0 37 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       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 "multiplexer.hxx"
      21             : 
      22             : #include <osl/diagnose.h>
      23             : 
      24             : using namespace ::cppu                  ;
      25             : using namespace ::osl                   ;
      26             : using namespace ::com::sun::star::uno   ;
      27             : using namespace ::com::sun::star::awt   ;
      28             : using namespace ::com::sun::star::lang  ;
      29             : 
      30             : namespace unocontrols{
      31             : 
      32             : //____________________________________________________________________________________________________________
      33             : //  macros
      34             : //____________________________________________________________________________________________________________
      35             : 
      36             : #define MULTIPLEX( INTERFACE, METHOD, EVENTTYP, EVENT )                                                                             \
      37             :                                                                                                                                     \
      38             :     /* First get all interfaces from container with right type.*/                                                                   \
      39             :     OInterfaceContainerHelper* pContainer = m_aListenerHolder.getContainer( ::getCppuType((const Reference< INTERFACE >*)0) );  \
      40             :     /* Do the follow only, if elements in container exist.*/                                                                        \
      41             :     if( pContainer != NULL )                                                                                                        \
      42             :     {                                                                                                                               \
      43             :         OInterfaceIteratorHelper aIterator( *pContainer );                                                                          \
      44             :         EVENTTYP aLocalEvent = EVENT;                                                                                               \
      45             :         /* Remark: The control is the event source not the peer.*/                                                                  \
      46             :         /*         We must change the source of the event.      */                                                                  \
      47             :         aLocalEvent.Source = m_xControl ;                                                                                           \
      48             :         /* Is the control not destroyed? */                                                                                         \
      49             :         if( aLocalEvent.Source.is() == sal_True )                                                                                   \
      50             :         {                                                                                                                           \
      51             :             if( aIterator.hasMoreElements() )                                                                                       \
      52             :             {                                                                                                                       \
      53             :                 INTERFACE * pListener = (INTERFACE *)aIterator.next();                                                          \
      54             :                 try                                                                                                                 \
      55             :                 {                                                                                                                   \
      56             :                     pListener->METHOD( aLocalEvent );                                                                               \
      57             :                 }                                                                                                                   \
      58             :                 catch(const RuntimeException& )                                                                                     \
      59             :                 {                                                                                                                   \
      60             :                     /* Ignore all system exceptions from the listener! */                                                           \
      61             :                 }                                                                                                                   \
      62             :             }                                                                                                                       \
      63             :         }                                                                                                                           \
      64             :     }
      65             : 
      66             : //____________________________________________________________________________________________________________
      67             : //  construct/destruct
      68             : //____________________________________________________________________________________________________________
      69             : 
      70           0 : OMRCListenerMultiplexerHelper::OMRCListenerMultiplexerHelper(   const   Reference< XWindow >&   xControl    ,
      71             :                                                                 const   Reference< XWindow >&   xPeer       )
      72             :     : m_xPeer           ( xPeer     )
      73             :     , m_xControl        ( xControl  )
      74           0 :     , m_aListenerHolder ( m_aMutex  )
      75             : {
      76           0 : }
      77             : 
      78           0 : OMRCListenerMultiplexerHelper::OMRCListenerMultiplexerHelper( const OMRCListenerMultiplexerHelper& /*aCopyInstance*/ )
      79             :     : XFocusListener()
      80             :     , XWindowListener()
      81             :     , XKeyListener()
      82             :     , XMouseListener()
      83             :     , XMouseMotionListener()
      84             :     , XPaintListener()
      85             :     , XTopWindowListener()
      86             :     , OWeakObject()
      87           0 :     , m_aListenerHolder ( m_aMutex  )
      88             : {
      89           0 : }
      90             : 
      91           0 : OMRCListenerMultiplexerHelper::~OMRCListenerMultiplexerHelper()
      92             : {
      93           0 : }
      94             : 
      95             : //____________________________________________________________________________________________________________
      96             : //  XInterface
      97             : //____________________________________________________________________________________________________________
      98             : 
      99           0 : Any SAL_CALL OMRCListenerMultiplexerHelper::queryInterface( const Type& rType ) throw( RuntimeException )
     100             : {
     101             :     // Attention:
     102             :     //  Don't use mutex or guard in this method!!! Is a method of XInterface.
     103             : 
     104             :     // Ask for my own supported interfaces ...
     105             :     // Attention: XTypeProvider and XInterface are supported by OComponentHelper!
     106             :     Any aReturn ( ::cppu::queryInterface(   rType                                           ,
     107             :                                             static_cast< XWindowListener*       > ( this )  ,
     108             :                                             static_cast< XKeyListener*          > ( this )  ,
     109             :                                             static_cast< XFocusListener*        > ( this )  ,
     110             :                                             static_cast< XMouseListener*        > ( this )  ,
     111             :                                             static_cast< XMouseMotionListener*  > ( this )  ,
     112             :                                             static_cast< XPaintListener*        > ( this )  ,
     113             :                                             static_cast< XTopWindowListener*    > ( this )  ,
     114             :                                             static_cast< XTopWindowListener*    > ( this )
     115             :                                         )
     116           0 :                 );
     117             : 
     118             :     // If searched interface supported by this class ...
     119           0 :     if ( aReturn.hasValue() == sal_True )
     120             :     {
     121             :         // ... return this information.
     122           0 :         return aReturn ;
     123             :     }
     124             :     else
     125             :     {
     126             :         // Else; ... ask baseclass for interfaces!
     127           0 :         return OWeakObject::queryInterface( rType );
     128           0 :     }
     129             : }
     130             : 
     131             : //____________________________________________________________________________________________________________
     132             : //  XInterface
     133             : //____________________________________________________________________________________________________________
     134             : 
     135           0 : void SAL_CALL OMRCListenerMultiplexerHelper::acquire() throw()
     136             : {
     137             :     // Attention:
     138             :     //  Don't use mutex or guard in this method!!! Is a method of XInterface.
     139             : 
     140             :     // Forward to baseclass
     141           0 :     OWeakObject::acquire();
     142           0 : }
     143             : 
     144             : //____________________________________________________________________________________________________________
     145             : //  XInterface
     146             : //____________________________________________________________________________________________________________
     147             : 
     148           0 : void SAL_CALL OMRCListenerMultiplexerHelper::release() throw()
     149             : {
     150             :     // Attention:
     151             :     //  Don't use mutex or guard in this method!!! Is a method of XInterface.
     152             : 
     153             :     // Forward to baseclass
     154           0 :     OWeakObject::release();
     155           0 : }
     156             : 
     157             : //____________________________________________________________________________________________________________
     158             : //  operator
     159             : //____________________________________________________________________________________________________________
     160             : 
     161           0 : OMRCListenerMultiplexerHelper::operator Reference< XInterface >() const
     162             : {
     163           0 :     return ((OWeakObject*)this) ;
     164             : }
     165             : 
     166             : //____________________________________________________________________________________________________________
     167             : //  container method
     168             : //____________________________________________________________________________________________________________
     169             : 
     170           0 : void OMRCListenerMultiplexerHelper::setPeer( const Reference< XWindow >& xPeer )
     171             : {
     172           0 :     MutexGuard aGuard( m_aMutex );
     173           0 :     if( m_xPeer != xPeer )
     174             :     {
     175           0 :         if( m_xPeer.is() )
     176             :         {
     177             :             // get all types from the listener added to the peer
     178           0 :             Sequence< Type >    aContainedTypes = m_aListenerHolder.getContainedTypes();
     179           0 :             const Type*         pArray          = aContainedTypes.getConstArray();
     180           0 :             sal_Int32           nCount          = aContainedTypes.getLength();
     181             :             // loop over all listener types and remove the listeners from the peer
     182           0 :             for( sal_Int32 i=0; i<nCount; i++ )
     183           0 :                 impl_unadviseFromPeer( m_xPeer, pArray[i] );
     184             :         }
     185           0 :         m_xPeer = xPeer;
     186           0 :         if( m_xPeer.is() )
     187             :         {
     188             :             // get all types from the listener added to the peer
     189           0 :             Sequence< Type >    aContainedTypes = m_aListenerHolder.getContainedTypes();
     190           0 :             const Type*         pArray          = aContainedTypes.getConstArray();
     191           0 :             sal_Int32           nCount          = aContainedTypes.getLength();
     192             :             // loop over all listener types and add the listeners to the peer
     193           0 :             for( sal_Int32 i = 0; i < nCount; i++ )
     194           0 :                 impl_adviseToPeer( m_xPeer, pArray[i] );
     195             :         }
     196           0 :     }
     197           0 : }
     198             : 
     199             : //____________________________________________________________________________________________________________
     200             : //  container method
     201             : //____________________________________________________________________________________________________________
     202             : 
     203           0 : void OMRCListenerMultiplexerHelper::disposeAndClear()
     204             : {
     205           0 :     EventObject aEvent ;
     206           0 :     aEvent.Source = m_xControl ;
     207           0 :     m_aListenerHolder.disposeAndClear( aEvent );
     208           0 : }
     209             : 
     210             : //____________________________________________________________________________________________________________
     211             : //  container method
     212             : //____________________________________________________________________________________________________________
     213             : 
     214           0 : void OMRCListenerMultiplexerHelper::advise( const   Type&                       aType       ,
     215             :                                             const   Reference< XInterface >&    xListener   )
     216             : {
     217           0 :     MutexGuard aGuard( m_aMutex );
     218           0 :     if( m_aListenerHolder.addInterface( aType, xListener ) == 1 )
     219             :     {
     220             :         // the first listener is added
     221           0 :         if( m_xPeer.is() )
     222             :         {
     223           0 :             impl_adviseToPeer( m_xPeer, aType );
     224             :         }
     225           0 :     }
     226           0 : }
     227             : 
     228             : //____________________________________________________________________________________________________________
     229             : //  container method
     230             : //____________________________________________________________________________________________________________
     231             : 
     232           0 : void OMRCListenerMultiplexerHelper::unadvise(   const   Type&                       aType       ,
     233             :                                                 const   Reference< XInterface >&    xListener   )
     234             : {
     235           0 :     MutexGuard aGuard( m_aMutex );
     236           0 :     if( m_aListenerHolder.removeInterface( aType, xListener ) == 0 )
     237             :     {
     238             :         // the last listener is removed
     239           0 :         if ( m_xPeer.is() )
     240             :         {
     241           0 :             impl_unadviseFromPeer( m_xPeer, aType );
     242             :         }
     243           0 :     }
     244           0 : }
     245             : 
     246             : //____________________________________________________________________________________________________________
     247             : //  XEventListener
     248             : //____________________________________________________________________________________________________________
     249             : 
     250           0 : void SAL_CALL OMRCListenerMultiplexerHelper::disposing( const EventObject& /*aSource*/ ) throw( RuntimeException )
     251             : {
     252           0 :     MutexGuard aGuard( m_aMutex );
     253             :     // peer is disposed, clear the reference
     254           0 :     m_xPeer = Reference< XWindow >();
     255           0 : }
     256             : 
     257             : //____________________________________________________________________________________________________________
     258             : //  XFcousListener
     259             : //____________________________________________________________________________________________________________
     260             : 
     261           0 : void OMRCListenerMultiplexerHelper::focusGained(const FocusEvent& aEvent ) throw( RuntimeException )
     262             : {
     263           0 :     MULTIPLEX( XFocusListener, focusGained, FocusEvent, aEvent )
     264           0 : }
     265             : 
     266             : //____________________________________________________________________________________________________________
     267             : //  XFcousListener
     268             : //____________________________________________________________________________________________________________
     269             : 
     270           0 : void OMRCListenerMultiplexerHelper::focusLost(const FocusEvent& aEvent ) throw( RuntimeException )
     271             : {
     272           0 :     MULTIPLEX( XFocusListener, focusLost, FocusEvent, aEvent )
     273           0 : }
     274             : 
     275             : //____________________________________________________________________________________________________________
     276             : //  XWindowListener
     277             : //____________________________________________________________________________________________________________
     278             : 
     279           0 : void OMRCListenerMultiplexerHelper::windowResized(const WindowEvent& aEvent ) throw( RuntimeException )
     280             : {
     281           0 :     MULTIPLEX( XWindowListener, windowResized, WindowEvent, aEvent )
     282           0 : }
     283             : 
     284             : //____________________________________________________________________________________________________________
     285             : //  XWindowListener
     286             : //____________________________________________________________________________________________________________
     287             : 
     288           0 : void OMRCListenerMultiplexerHelper::windowMoved(const WindowEvent& aEvent ) throw( RuntimeException )
     289             : {
     290           0 :     MULTIPLEX( XWindowListener, windowMoved, WindowEvent, aEvent )
     291           0 : }
     292             : 
     293             : //____________________________________________________________________________________________________________
     294             : //  XWindowListener
     295             : //____________________________________________________________________________________________________________
     296             : 
     297           0 : void OMRCListenerMultiplexerHelper::windowShown(const EventObject& aEvent ) throw( RuntimeException )
     298             : {
     299           0 :     MULTIPLEX( XWindowListener, windowShown, EventObject, aEvent )
     300           0 : }
     301             : 
     302             : //____________________________________________________________________________________________________________
     303             : //  XWindowListener
     304             : //____________________________________________________________________________________________________________
     305             : 
     306           0 : void OMRCListenerMultiplexerHelper::windowHidden(const EventObject& aEvent ) throw( RuntimeException )
     307             : {
     308           0 :     MULTIPLEX( XWindowListener, windowHidden, EventObject, aEvent )
     309           0 : }
     310             : 
     311             : //____________________________________________________________________________________________________________
     312             : //  XKeyListener
     313             : //____________________________________________________________________________________________________________
     314             : 
     315           0 : void OMRCListenerMultiplexerHelper::keyPressed(const KeyEvent& aEvent) throw( RuntimeException )
     316             : {
     317           0 :     MULTIPLEX( XKeyListener, keyPressed, KeyEvent, aEvent )
     318           0 : }
     319             : 
     320             : //____________________________________________________________________________________________________________
     321             : //  XKeyListener
     322             : //____________________________________________________________________________________________________________
     323             : 
     324           0 : void OMRCListenerMultiplexerHelper::keyReleased(const KeyEvent& aEvent) throw( RuntimeException )
     325             : {
     326           0 :     MULTIPLEX( XKeyListener, keyReleased, KeyEvent, aEvent )
     327           0 : }
     328             : 
     329             : //____________________________________________________________________________________________________________
     330             : //  XMouseListener
     331             : //____________________________________________________________________________________________________________
     332             : 
     333           0 : void OMRCListenerMultiplexerHelper::mousePressed(const MouseEvent& aEvent) throw( RuntimeException )
     334             : {
     335           0 :     MULTIPLEX( XMouseListener, mousePressed, MouseEvent, aEvent )
     336           0 : }
     337             : 
     338             : //____________________________________________________________________________________________________________
     339             : //  XMouseListener
     340             : //____________________________________________________________________________________________________________
     341             : 
     342           0 : void OMRCListenerMultiplexerHelper::mouseReleased(const MouseEvent& aEvent) throw( RuntimeException )
     343             : {
     344           0 :     MULTIPLEX( XMouseListener, mouseReleased, MouseEvent, aEvent )
     345           0 : }
     346             : 
     347             : //____________________________________________________________________________________________________________
     348             : //  XMouseListener
     349             : //____________________________________________________________________________________________________________
     350             : 
     351           0 : void OMRCListenerMultiplexerHelper::mouseEntered(const MouseEvent& aEvent) throw( RuntimeException )
     352             : {
     353           0 :     MULTIPLEX( XMouseListener, mouseEntered, MouseEvent, aEvent )
     354           0 : }
     355             : 
     356             : //____________________________________________________________________________________________________________
     357             : //  XMouseListener
     358             : //____________________________________________________________________________________________________________
     359             : 
     360           0 : void OMRCListenerMultiplexerHelper::mouseExited(const MouseEvent& aEvent) throw( RuntimeException )
     361             : {
     362           0 :     MULTIPLEX( XMouseListener, mouseExited, MouseEvent, aEvent )
     363           0 : }
     364             : 
     365             : //____________________________________________________________________________________________________________
     366             : //  XMouseMotionListener
     367             : //____________________________________________________________________________________________________________
     368             : 
     369           0 : void OMRCListenerMultiplexerHelper::mouseDragged(const MouseEvent& aEvent) throw( RuntimeException )
     370             : {
     371           0 :     MULTIPLEX( XMouseMotionListener, mouseDragged, MouseEvent, aEvent )
     372           0 : }
     373             : 
     374             : //____________________________________________________________________________________________________________
     375             : //  XMouseMotionListener
     376             : //____________________________________________________________________________________________________________
     377             : 
     378           0 : void OMRCListenerMultiplexerHelper::mouseMoved(const MouseEvent& aEvent) throw( RuntimeException )
     379             : {
     380           0 :     MULTIPLEX( XMouseMotionListener, mouseMoved, MouseEvent, aEvent )
     381           0 : }
     382             : 
     383             : //____________________________________________________________________________________________________________
     384             : //  XPaintListener
     385             : //____________________________________________________________________________________________________________
     386             : 
     387           0 : void OMRCListenerMultiplexerHelper::windowPaint(const PaintEvent& aEvent) throw( RuntimeException )
     388             : {
     389           0 :     MULTIPLEX( XPaintListener, windowPaint, PaintEvent, aEvent )
     390           0 : }
     391             : 
     392             : //____________________________________________________________________________________________________________
     393             : //  XTopWindowListener
     394             : //____________________________________________________________________________________________________________
     395             : 
     396           0 : void OMRCListenerMultiplexerHelper::windowOpened(const EventObject& aEvent) throw( RuntimeException )
     397             : {
     398           0 :     MULTIPLEX( XTopWindowListener, windowOpened, EventObject, aEvent )
     399           0 : }
     400             : 
     401             : //____________________________________________________________________________________________________________
     402             : //  XTopWindowListener
     403             : //____________________________________________________________________________________________________________
     404             : 
     405           0 : void OMRCListenerMultiplexerHelper::windowClosing( const EventObject& aEvent ) throw( RuntimeException )
     406             : {
     407           0 :     MULTIPLEX( XTopWindowListener, windowClosing, EventObject, aEvent )
     408           0 : }
     409             : 
     410             : //____________________________________________________________________________________________________________
     411             : //  XTopWindowListener
     412             : //____________________________________________________________________________________________________________
     413             : 
     414           0 : void OMRCListenerMultiplexerHelper::windowClosed( const EventObject& aEvent ) throw( RuntimeException )
     415             : {
     416           0 :     MULTIPLEX( XTopWindowListener, windowClosed, EventObject, aEvent )
     417           0 : }
     418             : 
     419             : //____________________________________________________________________________________________________________
     420             : //  XTopWindowListener
     421             : //____________________________________________________________________________________________________________
     422             : 
     423           0 : void OMRCListenerMultiplexerHelper::windowMinimized( const EventObject& aEvent ) throw( RuntimeException )
     424             : {
     425           0 :     MULTIPLEX( XTopWindowListener, windowMinimized, EventObject, aEvent )
     426           0 : }
     427             : 
     428             : //____________________________________________________________________________________________________________
     429             : //  XTopWindowListener
     430             : //____________________________________________________________________________________________________________
     431             : 
     432           0 : void OMRCListenerMultiplexerHelper::windowNormalized( const EventObject& aEvent ) throw( RuntimeException )
     433             : {
     434           0 :     MULTIPLEX( XTopWindowListener, windowNormalized, EventObject, aEvent )
     435           0 : }
     436             : 
     437             : //____________________________________________________________________________________________________________
     438             : //  XTopWindowListener
     439             : //____________________________________________________________________________________________________________
     440             : 
     441           0 : void OMRCListenerMultiplexerHelper::windowActivated( const EventObject& aEvent ) throw( RuntimeException )
     442             : {
     443           0 :     MULTIPLEX( XTopWindowListener, windowActivated, EventObject, aEvent )
     444           0 : }
     445             : 
     446             : //____________________________________________________________________________________________________________
     447             : //  XTopWindowListener
     448             : //____________________________________________________________________________________________________________
     449             : 
     450           0 : void OMRCListenerMultiplexerHelper::windowDeactivated( const EventObject& aEvent ) throw( RuntimeException )
     451             : {
     452           0 :     MULTIPLEX( XTopWindowListener, windowDeactivated, EventObject, aEvent )
     453           0 : }
     454             : 
     455             : //____________________________________________________________________________________________________________
     456             : //  protected method
     457             : //____________________________________________________________________________________________________________
     458             : 
     459           0 : void OMRCListenerMultiplexerHelper::impl_adviseToPeer(  const   Reference< XWindow >&   xPeer   ,
     460             :                                                         const   Type&                   aType   )
     461             : {
     462             :     // add a listener to the source (peer)
     463           0 :     if( aType == ::getCppuType((const Reference< XWindowListener >*)0) )
     464           0 :         xPeer->addWindowListener( this );
     465           0 :     else if( aType == ::getCppuType((const Reference< XKeyListener >*)0) )
     466           0 :         xPeer->addKeyListener( this );
     467           0 :     else if( aType == ::getCppuType((const Reference< XFocusListener >*)0) )
     468           0 :         xPeer->addFocusListener( this );
     469           0 :     else if( aType == ::getCppuType((const Reference< XMouseListener >*)0) )
     470           0 :         xPeer->addMouseListener( this );
     471           0 :     else if( aType == ::getCppuType((const Reference< XMouseMotionListener >*)0) )
     472           0 :         xPeer->addMouseMotionListener( this );
     473           0 :     else if( aType == ::getCppuType((const Reference< XPaintListener >*)0) )
     474           0 :         xPeer->addPaintListener( this );
     475           0 :     else if( aType == ::getCppuType((const Reference< XTopWindowListener >*)0) )
     476             :     {
     477           0 :         Reference< XTopWindow > xTop( xPeer, UNO_QUERY );
     478           0 :         if( xTop.is() )
     479           0 :             xTop->addTopWindowListener( this );
     480             :     }
     481             :     else
     482             :     {
     483             :         OSL_FAIL( "unknown listener" );
     484             :     }
     485           0 : }
     486             : 
     487             : //____________________________________________________________________________________________________________
     488             : //  protected method
     489             : //____________________________________________________________________________________________________________
     490             : 
     491           0 : void OMRCListenerMultiplexerHelper::impl_unadviseFromPeer(  const   Reference< XWindow >&   xPeer   ,
     492             :                                                             const   Type&                   aType   )
     493             : {
     494             :     // the last listener is removed, remove the listener from the source (peer)
     495           0 :     if( aType == ::getCppuType((const Reference< XWindowListener >*)0) )
     496           0 :         xPeer->removeWindowListener( this );
     497           0 :     else if( aType == ::getCppuType((const Reference< XKeyListener >*)0) )
     498           0 :         xPeer->removeKeyListener( this );
     499           0 :     else if( aType == ::getCppuType((const Reference< XFocusListener >*)0) )
     500           0 :         xPeer->removeFocusListener( this );
     501           0 :     else if( aType == ::getCppuType((const Reference< XMouseListener >*)0) )
     502           0 :         xPeer->removeMouseListener( this );
     503           0 :     else if( aType == ::getCppuType((const Reference< XMouseMotionListener >*)0) )
     504           0 :         xPeer->removeMouseMotionListener( this );
     505           0 :     else if( aType == ::getCppuType((const Reference< XPaintListener >*)0) )
     506           0 :         xPeer->removePaintListener( this );
     507           0 :     else if( aType == ::getCppuType((const Reference< XTopWindowListener >*)0) )
     508             :     {
     509           0 :         Reference< XTopWindow >  xTop( xPeer, UNO_QUERY );
     510           0 :         if( xTop.is() )
     511           0 :             xTop->removeTopWindowListener( this );
     512             :     }
     513             :     else
     514             :     {
     515             :         OSL_FAIL( "unknown listener" );
     516             :     }
     517           0 : }
     518             : 
     519             : } // namespace unocontrols
     520             : 
     521             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10