User: rt Date: 06/02/07 02:19:14 Modified: /dba/dbaccess/source/core/dataaccess/ documentdefinition.cxx
Log: INTEGRATION: CWS fwk29 (1.32.6); FILE MERGED 2006/01/31 15:32:40 as 1.32.6.4: RESYNC: (1.33-1.34); FILE MERGED solve merge conflicts 2006/01/10 10:46:16 as 1.32.6.3: #i59272# remove frame from desktop tree ALWAYS 2006/01/06 13:43:14 as 1.32.6.2: RESYNC: (1.32-1.33); FILE MERGED 2006/01/06 07:16:08 as 1.32.6.1: #i59272# views of DB are not part of the desktop tree any longer File Changes: Directory: /dba/dbaccess/source/core/dataaccess/ ================================================ File [changed]: documentdefinition.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/core/dataaccess/documentdefinition.cxx?r1=1.34&r2=1.35 Delta lines: +28 -35 --------------------- --- documentdefinition.cxx 3 Jan 2006 16:14:52 -0000 1.34 +++ documentdefinition.cxx 7 Feb 2006 10:19:11 -0000 1.35 @@ -576,7 +576,7 @@ ::osl::MutexGuard aGuard(m_aMutex); closeObject(); ::comphelper::disposeComponent(m_xListener); - m_xFrameLoader = NULL; + m_xDesktop = NULL; } // ----------------------------------------------------------------------------- IMPLEMENT_TYPEPROVIDER3(ODocumentDefinition,OContentHelper,OPropertyStateContainer,ODocumentDefinition_Base); @@ -643,6 +643,16 @@ } // ----------------------------------------------------------------------------- +void ODocumentDefinition::impl_removeFrameFromDesktop_throw( const Reference< XFrame >& _rxFrame ) +{ + if ( !m_xDesktop.is() ) + m_xDesktop.set( m_xORB->createInstance( SERVICE_FRAME_DESKTOP ), UNO_QUERY_THROW ); + + Reference< XFrames > xFrames( m_xDesktop->getFrames(), UNO_QUERY_THROW ); + xFrames->remove( _rxFrame ); +} + +// ----------------------------------------------------------------------------- void ODocumentDefinition::impl_onActivateEmbeddedObject( bool _bOpenedInDesignMode ) { try @@ -651,51 +661,34 @@ Reference< XController > xController( xModel.is() ? xModel->getCurrentController() : Reference< XController >() ); if ( !xController.is() ) return; - Reference< XFrame > xFrame( xController->getFrame() ); - if ( m_xListener.is() ) - { - // simply raise the window to top + if ( !m_xListener.is() ) + // it's the first time the embedded object has been activated + // create an OEmbedObjectHolder + m_xListener = new OEmbedObjectHolder(m_xEmbeddedObject,this); + + Reference< XFrame > xFrame( xController->getFrame() ); + // raise the window to top (especially necessary if this is not the first activation) if ( xFrame.is() ) { Reference< XTopWindow > xTopWindow( xFrame->getContainerWindow(), UNO_QUERY_THROW ); xTopWindow->toFront(); } - } - else - { - // it's the first time the embedded object has been activated - - // - if ( !m_xFrameLoader.is() ) - m_xFrameLoader.set( m_xORB->createInstance( SERVICE_FRAME_DESKTOP ), UNO_QUERY_THROW ); -/* - // remove the frame from the desktop's frame collection because we need full control of it. - Reference< XFramesSupplier > xSup( m_xFrameLoader, UNO_QUERY_THROW ); - Reference< XFrames > xFrames( xSup->getFrames(), UNO_QUERY_THROW ); - xFrames->remove( xFrame ); -*/ - // create an OEmbedObjectHolder - m_xListener = new OEmbedObjectHolder(m_xEmbeddedObject,this); // ensure that we ourself are kept alive as long as the embedded object's frame is // opened LifetimeCoupler::couple( *this, Reference< XComponent >( xFrame, UNO_QUERY_THROW ) ); - } + // init the edit view if ( _bOpenedInDesignMode ) impl_initObjectEditView( xController ); + + // remove the frame from the desktop's frame collection because we need full control of it. + impl_removeFrameFromDesktop_throw( xFrame ); } - catch( const RuntimeException& e ) + catch( const RuntimeException& ) { - #if OSL_DEBUG_LEVEL > 0 - ::rtl::OString sMessage( "ODocumentDefinition::impl_onActivateEmbeddedObject: caught an exception!\n" ); - sMessage += "message:\n"; - sMessage += ::rtl::OString( e.Message.getStr(), e.Message.getLength(), osl_getThreadTextEncoding() ); - OSL_ENSURE( false, sMessage ); - #else - e; // make compiler happy - #endif + DBG_UNHANDLED_EXCEPTION(); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
