summaryrefslogtreecommitdiff
path: root/toolkit/source/controls/unocontrol.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/source/controls/unocontrol.cxx')
-rw-r--r--toolkit/source/controls/unocontrol.cxx27
1 files changed, 17 insertions, 10 deletions
diff --git a/toolkit/source/controls/unocontrol.cxx b/toolkit/source/controls/unocontrol.cxx
index a3d0a251c382..217d8f94185d 100644
--- a/toolkit/source/controls/unocontrol.cxx
+++ b/toolkit/source/controls/unocontrol.cxx
@@ -157,13 +157,13 @@ OUString UnoControl::GetComponentServiceName() const
return OUString();
}
-Reference< XWindowPeer > UnoControl::ImplGetCompatiblePeer()
+Reference< XVclWindowPeer > UnoControl::ImplGetCompatiblePeer()
{
DBG_ASSERT( !mbCreatingCompatiblePeer, "ImplGetCompatiblePeer - recursive?" );
mbCreatingCompatiblePeer = true;
- Reference< XWindowPeer > xCompatiblePeer = getPeer();
+ Reference< XVclWindowPeer > xCompatiblePeer = getVclWindowPeer();
if ( !xCompatiblePeer.is() )
{
@@ -172,7 +172,7 @@ Reference< XWindowPeer > UnoControl::ImplGetCompatiblePeer()
if( bVis )
maComponentInfos.bVisible = false;
- Reference< XWindowPeer > xCurrentPeer = getPeer();
+ Reference< XVclWindowPeer > xCurrentPeer = getVclWindowPeer();
setPeer( nullptr );
// queryInterface ourself, to allow aggregation
@@ -196,7 +196,7 @@ Reference< XWindowPeer > UnoControl::ImplGetCompatiblePeer()
mbCreatingCompatiblePeer = false;
throw;
}
- xCompatiblePeer = getPeer();
+ xCompatiblePeer = getVclWindowPeer();
setPeer( xCurrentPeer );
if ( xCompatiblePeer.is() && mxGraphics.is() )
@@ -345,13 +345,13 @@ UnoControl::DisposeAccessibleContext(Reference<XComponent> const& xContextComp)
void UnoControl::dispose( )
{
- Reference< XWindowPeer > xPeer;
+ Reference< XVclWindowPeer > xPeer;
Reference<XComponent> xAccessibleComp;
{
::osl::MutexGuard aGuard( GetMutex() );
if( mbDisposePeer )
{
- xPeer = mxPeer;
+ xPeer = mxVclWindowPeer;
}
setPeer( nullptr );
xAccessibleComp.set(maAccessibleContext, UNO_QUERY);
@@ -619,8 +619,7 @@ void UnoControl::ImplModelPropertiesChanged( const Sequence< PropertyChangeEvent
// Doesn't work for Container!
getPeer()->dispose();
- mxPeer.clear();
- mxVclWindowPeer = nullptr;
+ mxVclWindowPeer.clear();
mbRefreshingPeer = true;
Reference< XWindowPeer > xP( xParent, UNO_QUERY );
xThis->createPeer( Reference< XToolkit > (), xP );
@@ -1278,7 +1277,9 @@ void UnoControl::createPeer( const Reference< XToolkit >& rxToolkit, const Refer
PrepareWindowDescriptor(aDescr);
// create the peer
- setPeer( xToolkit->createWindow( aDescr ) );
+ Reference<XWindowPeer> xTemp = xToolkit->createWindow( aDescr );
+ mxVclWindowPeer.set(xTemp, UNO_QUERY);
+ assert(mxVclWindowPeer);
// release the mutex guard (and work with copies of our members)
// this is necessary as our peer may lock the SolarMutex (actually, all currently known peers do), so calling
@@ -1344,7 +1345,13 @@ void UnoControl::createPeer( const Reference< XToolkit >& rxToolkit, const Refer
Reference< XWindowPeer > UnoControl::getPeer()
{
::osl::MutexGuard aGuard( GetMutex() );
- return mxPeer;
+ return mxVclWindowPeer;
+}
+
+Reference< XVclWindowPeer > UnoControl::getVclWindowPeer()
+{
+ ::osl::MutexGuard aGuard( GetMutex() );
+ return mxVclWindowPeer;
}
sal_Bool UnoControl::setModel( const Reference< XControlModel >& rxModel )