[Libreoffice-commits] core.git: accessibility/source basctl/source chart2/source dbaccess/source extensions/source forms/source include/vcl sc/source sd/source sfx2/source sw/source toolkit/inc toolkit/source vcl/inc vcl/qa vcl/source vcl/unx

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Thu May 13 12:49:11 UTC 2021


 accessibility/source/extended/accessibletabbar.cxx           |    2 
 accessibility/source/standard/accessiblemenucomponent.cxx    |    2 
 basctl/source/accessibility/accessibledialogcontrolshape.cxx |    2 
 basctl/source/accessibility/accessibledialogwindow.cxx       |    2 
 basctl/source/basicide/baside2.hxx                           |    2 
 basctl/source/basicide/baside2b.cxx                          |    9 +-
 basctl/source/basicide/textwindowpeer.cxx                    |    2 
 basctl/source/basicide/textwindowpeer.hxx                    |    9 +-
 chart2/source/controller/main/ChartController.cxx            |    2 
 dbaccess/source/ui/querydesign/ConnectionLineAccess.cxx      |    2 
 dbaccess/source/ui/querydesign/JAccess.cxx                   |    2 
 dbaccess/source/ui/querydesign/TableWindowAccess.cxx         |    2 
 extensions/source/bibliography/bibload.cxx                   |    2 
 extensions/source/bibliography/framectr.cxx                  |    6 -
 forms/source/richtext/richtextcontrol.cxx                    |    2 
 forms/source/solar/component/navbarcontrol.cxx               |    2 
 include/vcl/toolkit/unowrap.hxx                              |    5 -
 include/vcl/window.hxx                                       |   12 +--
 sc/source/ui/view/gridwin.cxx                                |    2 
 sd/source/ui/presenter/PresenterHelper.cxx                   |    2 
 sfx2/source/doc/iframe.cxx                                   |    4 -
 sfx2/source/view/ipclient.cxx                                |    3 
 sfx2/source/view/sfxbasecontroller.cxx                       |    2 
 sfx2/source/view/userinputinterception.cxx                   |    4 -
 sw/source/uibase/docvw/AnnotationWin2.cxx                    |    2 
 toolkit/inc/controls/svmedit.hxx                             |    2 
 toolkit/inc/helper/unowrapper.hxx                            |    4 -
 toolkit/source/awt/vclxaccessiblecomponent.cxx               |    2 
 toolkit/source/awt/vclxtoolkit.cxx                           |    6 -
 toolkit/source/awt/vclxwindow.cxx                            |    2 
 toolkit/source/controls/svmedit.cxx                          |    7 +-
 toolkit/source/helper/unowrapper.cxx                         |   22 +++----
 vcl/inc/window.h                                             |    3 
 vcl/qa/cppunit/lifecycle.cxx                                 |    2 
 vcl/source/app/salvtables.cxx                                |    7 +-
 vcl/source/control/fmtfield.cxx                              |    2 
 vcl/source/control/ivctrl.cxx                                |    3 
 vcl/source/treelist/treelistbox.cxx                          |    3 
 vcl/source/window/accessibility.cxx                          |    4 -
 vcl/source/window/dialog.cxx                                 |    2 
 vcl/source/window/dockwin.cxx                                |    2 
 vcl/source/window/stacking.cxx                               |    3 
 vcl/source/window/syswin.cxx                                 |    2 
 vcl/source/window/window.cxx                                 |   34 ++++++-----
 vcl/source/window/window2.cxx                                |    2 
 vcl/unx/gtk3/gtkinst.cxx                                     |    3 
 46 files changed, 105 insertions(+), 98 deletions(-)

New commits:
commit 32b09faca508ae4aac7e100c98a2fe56d3302eef
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Thu May 13 10:40:44 2021 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Thu May 13 14:48:24 2021 +0200

    Revert "simplify the vcl<->toolkit connection"
    
    because it introduces a link-time dependency of vcl on toolkit,
    and toolkit already depends on vcl
    
    This reverts commit f7a86c5cdf4323c99d26512bf78de7f7c380667d.
    
    Change-Id: Ibdd4f3e8221d70e2abd8fcbda67f85af3ac0396e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115547
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/accessibility/source/extended/accessibletabbar.cxx b/accessibility/source/extended/accessibletabbar.cxx
index f450bfc526f0..218ed1cab071 100644
--- a/accessibility/source/extended/accessibletabbar.cxx
+++ b/accessibility/source/extended/accessibletabbar.cxx
@@ -458,7 +458,7 @@ namespace accessibility
         Reference< awt::XFont > xFont;
         if ( m_pTabBar )
         {
-            auto xDev = m_pTabBar->GetComponentInterfaceAs<awt::XDevice>();
+            Reference< awt::XDevice > xDev( m_pTabBar->GetComponentInterface(), UNO_QUERY );
             if ( xDev.is() )
             {
                 vcl::Font aFont;
diff --git a/accessibility/source/standard/accessiblemenucomponent.cxx b/accessibility/source/standard/accessiblemenucomponent.cxx
index e004c2b1942b..be9b1e6f453e 100644
--- a/accessibility/source/standard/accessiblemenucomponent.cxx
+++ b/accessibility/source/standard/accessiblemenucomponent.cxx
@@ -301,7 +301,7 @@ Reference< awt::XFont > OAccessibleMenuComponent::getFont(  )
         vcl::Window* pWindow = m_pMenu->GetWindow();
         if ( pWindow )
         {
-            auto xDev = pWindow->GetComponentInterfaceAs<awt::XDevice>();
+            Reference< awt::XDevice > xDev( pWindow->GetComponentInterface(), UNO_QUERY );
             if ( xDev.is() )
             {
                 const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
diff --git a/basctl/source/accessibility/accessibledialogcontrolshape.cxx b/basctl/source/accessibility/accessibledialogcontrolshape.cxx
index b61385f6671a..f885ff4bda1b 100644
--- a/basctl/source/accessibility/accessibledialogcontrolshape.cxx
+++ b/basctl/source/accessibility/accessibledialogcontrolshape.cxx
@@ -495,7 +495,7 @@ Reference< awt::XFont > AccessibleDialogControlShape::getFont(  )
     vcl::Window* pWindow = GetWindow();
     if ( pWindow )
     {
-        auto xDev = pWindow->GetComponentInterfaceAs<awt::XDevice>();
+        Reference< awt::XDevice > xDev( pWindow->GetComponentInterface(), UNO_QUERY );
         if ( xDev.is() )
         {
             vcl::Font aFont;
diff --git a/basctl/source/accessibility/accessibledialogwindow.cxx b/basctl/source/accessibility/accessibledialogwindow.cxx
index b91e48262a73..0b641c8aca5e 100644
--- a/basctl/source/accessibility/accessibledialogwindow.cxx
+++ b/basctl/source/accessibility/accessibledialogwindow.cxx
@@ -790,7 +790,7 @@ Reference< awt::XFont > AccessibleDialogWindow::getFont(  )
     Reference< awt::XFont > xFont;
     if ( m_pDialogWindow )
     {
-        auto xDev = m_pDialogWindow->GetComponentInterfaceAs<awt::XDevice>();
+        Reference< awt::XDevice > xDev( m_pDialogWindow->GetComponentInterface(), UNO_QUERY );
         if ( xDev.is() )
         {
             vcl::Font aFont;
diff --git a/basctl/source/basicide/baside2.hxx b/basctl/source/basicide/baside2.hxx
index fd17b340ca54..06045356bccb 100644
--- a/basctl/source/basicide/baside2.hxx
+++ b/basctl/source/basicide/baside2.hxx
@@ -100,7 +100,7 @@ private:
     bool            bDoSyntaxHighlight;
     bool            bDelayHighlight;
 
-    virtual VCLXWindow* GetComponentInterface(bool bCreate = true) override;
+    virtual css::uno::Reference< css::awt::XWindowPeer > GetComponentInterface(bool bCreate = true) override;
     CodeCompleteDataCache aCodeCompleteCache;
     VclPtr<CodeCompleteWindow> pCodeCompleteWnd;
     OUString GetActualSubName( sal_uLong nLine ); // gets the actual subroutine name according to line number
diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx
index 3168f5090532..ecba2d5fa873 100644
--- a/basctl/source/basicide/baside2b.cxx
+++ b/basctl/source/basicide/baside2b.cxx
@@ -2040,10 +2040,11 @@ void ComplexEditorWindow::SetLineNumberDisplay(bool b)
     Resize();
 }
 
-VCLXWindow*
+uno::Reference< awt::XWindowPeer >
 EditorWindow::GetComponentInterface(bool bCreate)
 {
-    rtl::Reference< VCLXWindow > xPeer = Window::GetComponentInterface(false);
+    uno::Reference< awt::XWindowPeer > xPeer(
+        Window::GetComponentInterface(false));
     if (!xPeer.is() && bCreate)
     {
         // Make sure edit engine and view are available:
@@ -2051,9 +2052,9 @@ EditorWindow::GetComponentInterface(bool bCreate)
             CreateEditEngine();
 
         xPeer = createTextWindowPeer(*GetEditView());
-        SetComponentInterface(xPeer.get());
+        SetComponentInterface(xPeer);
     }
-    return xPeer.get();
+    return xPeer;
 }
 
 static sal_uInt32 getCorrectedPropCount(SbxArray* p)
diff --git a/basctl/source/basicide/textwindowpeer.cxx b/basctl/source/basicide/textwindowpeer.cxx
index cbe9781fce90..fc458453778b 100644
--- a/basctl/source/basicide/textwindowpeer.cxx
+++ b/basctl/source/basicide/textwindowpeer.cxx
@@ -62,7 +62,7 @@ TextWindowPeer::CreateAccessibleContext() {
 
 }
 
-rtl::Reference<VCLXWindow> basctl::createTextWindowPeer(
+css::uno::Reference<css::awt::XWindowPeer> basctl::createTextWindowPeer(
     TextView & view)
 {
     return new TextWindowPeer(view);
diff --git a/basctl/source/basicide/textwindowpeer.hxx b/basctl/source/basicide/textwindowpeer.hxx
index 701c134c3a5f..077ad32cd79f 100644
--- a/basctl/source/basicide/textwindowpeer.hxx
+++ b/basctl/source/basicide/textwindowpeer.hxx
@@ -21,14 +21,17 @@
 
 #include <sal/config.h>
 
-#include <rtl/ref.hxx>
+#include <com/sun/star/uno/Reference.hxx>
 
-class VCLXWindow;
+namespace com::sun::star::awt
+{
+class XWindowPeer;
+}
 class TextView;
 
 namespace basctl
 {
-rtl::Reference<VCLXWindow> createTextWindowPeer(TextView& view);
+css::uno::Reference<css::awt::XWindowPeer> createTextWindowPeer(TextView& view);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx
index 544084306fdf..08b8c65c31f7 100644
--- a/chart2/source/controller/main/ChartController.cxx
+++ b/chart2/source/controller/main/ChartController.cxx
@@ -436,7 +436,7 @@ void SAL_CALL ChartController::attachFrame(
         SolarMutexGuard aSolarGuard;
         auto pChartWindow = VclPtr<ChartWindow>::Create(this,pParent,pParent?pParent->GetStyle():0);
         pChartWindow->SetBackground();//no Background
-        m_xViewWindow = pChartWindow->GetComponentInterfaceAs<css::awt::XWindow>();
+        m_xViewWindow.set( pChartWindow->GetComponentInterface(), uno::UNO_QUERY );
         pChartWindow->Show();
         m_apDropTargetHelper.reset(
             new ChartDropTargetHelper( pChartWindow->GetDropTarget(),
diff --git a/dbaccess/source/ui/querydesign/ConnectionLineAccess.cxx b/dbaccess/source/ui/querydesign/ConnectionLineAccess.cxx
index 8681775233d4..763e53990276 100644
--- a/dbaccess/source/ui/querydesign/ConnectionLineAccess.cxx
+++ b/dbaccess/source/ui/querydesign/ConnectionLineAccess.cxx
@@ -36,7 +36,7 @@ namespace dbaui
     using namespace ::com::sun::star;
 
     OConnectionLineAccess::OConnectionLineAccess(OTableConnection* _pLine)
-        : VCLXAccessibleComponent(_pLine->GetComponentInterface() ? _pLine->GetWindowPeer() : nullptr)
+        : VCLXAccessibleComponent(_pLine->GetComponentInterface().is() ? _pLine->GetWindowPeer() : nullptr)
         ,m_pLine(_pLine)
     {
     }
diff --git a/dbaccess/source/ui/querydesign/JAccess.cxx b/dbaccess/source/ui/querydesign/JAccess.cxx
index 9785708fe9da..8068f0fa7f21 100644
--- a/dbaccess/source/ui/querydesign/JAccess.cxx
+++ b/dbaccess/source/ui/querydesign/JAccess.cxx
@@ -33,7 +33,7 @@ namespace dbaui
     using namespace ::com::sun::star::lang;
 
     OJoinDesignViewAccess::OJoinDesignViewAccess(OJoinTableView* _pTableView)
-        :VCLXAccessibleComponent(_pTableView->GetComponentInterface() ? _pTableView->GetWindowPeer() : nullptr)
+        :VCLXAccessibleComponent(_pTableView->GetComponentInterface().is() ? _pTableView->GetWindowPeer() : nullptr)
         ,m_pTableView(_pTableView)
     {
     }
diff --git a/dbaccess/source/ui/querydesign/TableWindowAccess.cxx b/dbaccess/source/ui/querydesign/TableWindowAccess.cxx
index d0201d8f6230..1dc69e763d5d 100644
--- a/dbaccess/source/ui/querydesign/TableWindowAccess.cxx
+++ b/dbaccess/source/ui/querydesign/TableWindowAccess.cxx
@@ -36,7 +36,7 @@ namespace dbaui
     using namespace ::com::sun::star;
 
     OTableWindowAccess::OTableWindowAccess(OTableWindow* _pTable)
-        :VCLXAccessibleComponent(_pTable->GetComponentInterface() ? _pTable->GetWindowPeer() : nullptr)
+        :VCLXAccessibleComponent(_pTable->GetComponentInterface().is() ? _pTable->GetWindowPeer() : nullptr)
         ,m_pTable(_pTable)
     {
     }
diff --git a/extensions/source/bibliography/bibload.cxx b/extensions/source/bibliography/bibload.cxx
index 4d170744b687..cb1edd54fef4 100644
--- a/extensions/source/bibliography/bibload.cxx
+++ b/extensions/source/bibliography/bibload.cxx
@@ -227,7 +227,7 @@ void BibliographyLoader::loadView(const Reference< XFrame > & rFrame,
 
     pMyWindow->createBottomFrame(pView);
 
-    auto xWin = pMyWindow->GetComponentInterfaceAs<awt::XWindow>();
+    Reference< awt::XWindow >  xWin ( pMyWindow->GetComponentInterface(), UNO_QUERY );
 
     Reference< XController >  xCtrRef( new BibFrameController_Impl( xWin, m_xDatMan.get() ) );
 
diff --git a/extensions/source/bibliography/framectr.cxx b/extensions/source/bibliography/framectr.cxx
index 8915012c4c71..e83580689435 100644
--- a/extensions/source/bibliography/framectr.cxx
+++ b/extensions/source/bibliography/framectr.cxx
@@ -661,7 +661,7 @@ void BibFrameController_Impl::addStatusListener(
         m_xLastQueriedFocusWin = lcl_GetFocusChild( VCLUnoHelper::GetWindow( m_xWindow ) );
         if (m_xLastQueriedFocusWin)
         {
-            Reference<css::awt::XTextComponent> xEdit = m_xLastQueriedFocusWin->GetComponentInterfaceAs<css::awt::XTextComponent>();
+            Reference<css::awt::XTextComponent> xEdit(m_xLastQueriedFocusWin->GetComponentInterface(), css::uno::UNO_QUERY);
             aEvent.IsEnabled = xEdit && xEdit->isEditable() && !xEdit->getSelectedText().isEmpty();
         }
     }
@@ -670,7 +670,7 @@ void BibFrameController_Impl::addStatusListener(
         m_xLastQueriedFocusWin = lcl_GetFocusChild( VCLUnoHelper::GetWindow( m_xWindow ) );
         if (m_xLastQueriedFocusWin)
         {
-            auto xEdit = m_xLastQueriedFocusWin->GetComponentInterfaceAs<css::awt::XTextComponent>();
+            Reference<css::awt::XTextComponent> xEdit(m_xLastQueriedFocusWin->GetComponentInterface(), css::uno::UNO_QUERY);
             aEvent.IsEnabled = xEdit && !xEdit->getSelectedText().isEmpty();
         }
     }
@@ -680,7 +680,7 @@ void BibFrameController_Impl::addStatusListener(
         m_xLastQueriedFocusWin = lcl_GetFocusChild( VCLUnoHelper::GetWindow( m_xWindow ) );
         if (m_xLastQueriedFocusWin)
         {
-            auto xEdit = m_xLastQueriedFocusWin->GetComponentInterfaceAs<css::awt::XTextComponent>();
+            Reference<css::awt::XTextComponent> xEdit(m_xLastQueriedFocusWin->GetComponentInterface(), css::uno::UNO_QUERY);
             if (xEdit && !xEdit->isEditable())
             {
                 uno::Reference< datatransfer::clipboard::XClipboard > xClip = m_xLastQueriedFocusWin->GetClipboard();
diff --git a/forms/source/richtext/richtextcontrol.cxx b/forms/source/richtext/richtextcontrol.cxx
index def1ea106bbf..45e898b8ed13 100644
--- a/forms/source/richtext/richtextcontrol.cxx
+++ b/forms/source/richtext/richtextcontrol.cxx
@@ -272,7 +272,7 @@ namespace frm
         VclPtrInstance<RichTextControl> pRichTextControl( pEngine, _pParentWindow, _nStyle, nullptr, pPeer.get() );
 
         // some knittings
-        pRichTextControl->SetComponentInterface( pPeer.get() );
+        pRichTextControl->SetComponentInterface( pPeer );
 
         // outta here
         return pPeer;
diff --git a/forms/source/solar/component/navbarcontrol.cxx b/forms/source/solar/component/navbarcontrol.cxx
index 5853ae148956..14e9c27ce74f 100644
--- a/forms/source/solar/component/navbarcontrol.cxx
+++ b/forms/source/solar/component/navbarcontrol.cxx
@@ -216,7 +216,7 @@ namespace frm
 
         // some knittings
         pNavBar->setDispatcher( pPeer.get() );
-        pNavBar->SetComponentInterface( pPeer.get() );
+        pNavBar->SetComponentInterface( pPeer );
 
         // we want a faster repeating rate for the slots in this
         // toolbox
diff --git a/include/vcl/toolkit/unowrap.hxx b/include/vcl/toolkit/unowrap.hxx
index 66fc099819aa..46f1e0845cc0 100644
--- a/include/vcl/toolkit/unowrap.hxx
+++ b/include/vcl/toolkit/unowrap.hxx
@@ -27,7 +27,6 @@
 #include <com/sun/star/uno/Reference.h>
 #include <vcl/dllapi.h>
 #include <vcl/vclptr.hxx>
-#include <toolkit/awt/vclxwindow.hxx>
 
 namespace vcl { class Window; }
 class Menu;
@@ -57,8 +56,8 @@ public:
     virtual void                ReleaseAllGraphics( OutputDevice* pOutDev ) = 0;
 
     // Window
-    virtual rtl::Reference<VCLXWindow> GetWindowInterface( vcl::Window* pWindow ) = 0;
-    virtual void                SetWindowInterface( vcl::Window* pWindow, VCLXWindow* pIFace ) = 0;
+    virtual css::uno::Reference<css::awt::XWindowPeer> GetWindowInterface( vcl::Window* pWindow ) = 0;
+    virtual void                SetWindowInterface( vcl::Window* pWindow, css::uno::Reference< css::awt::XWindowPeer > xIFace ) = 0;
     virtual VclPtr<vcl::Window> GetWindow(const css::uno::Reference<css::awt::XWindow>& rxWindow) = 0;
 
     // PopupMenu
diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx
index 5d3aed7c3ea3..17fbf4d876ed 100644
--- a/include/vcl/window.hxx
+++ b/include/vcl/window.hxx
@@ -22,7 +22,6 @@
 
 #include <vcl/dllapi.h>
 #include <vcl/outdev.hxx>
-#include <toolkit/awt/vclxwindow.hxx>
 #include <tools/link.hxx>
 #include <tools/wintypes.hxx>
 #include <vcl/vclenum.hxx>
@@ -1130,13 +1129,10 @@ public:
     virtual const SystemEnvData*        GetSystemData() const;
 
     // API to set/query the component interfaces
-    virtual VCLXWindow*                 GetComponentInterface( bool bCreate = true );
-    void                                SetComponentInterface( VCLXWindow* pIFace );
-    // Utility method to make the GetComponentInterface call sites less verbose
-    template<typename T>
-    css::uno::Reference<T>              GetComponentInterfaceAs()
-    { return css::uno::Reference<T>(static_cast<cppu::OWeakObject*>(GetComponentInterface()), css::uno::UNO_QUERY); }
+    virtual css::uno::Reference< css::awt::XWindowPeer >
+                                        GetComponentInterface( bool bCreate = true );
 
+    void                        SetComponentInterface( css::uno::Reference< css::awt::XWindowPeer > const & xIFace );
 
     /// Interface to register for dialog / window tunneling.
     void                                SetLOKNotifier(const vcl::ILibreOfficeKitNotifier* pNotifier, bool bParent = false);
@@ -1262,7 +1258,7 @@ public:
 
     // set and retrieve for Toolkit
     VCLXWindow*                         GetWindowPeer() const;
-    void                                SetWindowPeer( VCLXWindow* pVCLXWindow );
+    void                                SetWindowPeer( css::uno::Reference< css::awt::XWindowPeer > const & xPeer, VCLXWindow* pVCLXWindow );
 
     // remember if it was generated by Toolkit
     bool                                IsCreatedWithToolkit() const;
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 36e7c7fe134b..c6c1f5250bf3 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -2660,7 +2660,7 @@ bool ScGridWindow::PreNotify( NotifyEvent& rNEvt )
                         css::awt::MouseEvent aEvent;
                         lcl_InitMouseEvent( aEvent, *rNEvt.GetMouseEvent() );
                         if ( rNEvt.GetWindow() )
-                            aEvent.Source = static_cast<cppu::OWeakObject*>(rNEvt.GetWindow()->GetComponentInterface());
+                            aEvent.Source = rNEvt.GetWindow()->GetComponentInterface();
                         if ( nType == MouseNotifyEvent::MOUSEBUTTONDOWN)
                             bDone = pImp->MousePressed( aEvent );
                         else
diff --git a/sd/source/ui/presenter/PresenterHelper.cxx b/sd/source/ui/presenter/PresenterHelper.cxx
index a319b9682847..7504e914e475 100644
--- a/sd/source/ui/presenter/PresenterHelper.cxx
+++ b/sd/source/ui/presenter/PresenterHelper.cxx
@@ -76,7 +76,7 @@ Reference<awt::XWindow> SAL_CALL PresenterHelper::createWindow (
     {
         pWindow = VclPtr<vcl::Window>::Create(pParentWindow);
     }
-    auto xWindow = pWindow->GetComponentInterfaceAs<awt::XWindow>();
+    Reference<awt::XWindow> xWindow (pWindow->GetComponentInterface(), UNO_QUERY);
 
     if (bEnableChildTransparentMode)
     {
diff --git a/sfx2/source/doc/iframe.cxx b/sfx2/source/doc/iframe.cxx
index 578c6a071336..eff4588b3b5f 100644
--- a/sfx2/source/doc/iframe.cxx
+++ b/sfx2/source/doc/iframe.cxx
@@ -164,14 +164,14 @@ sal_Bool SAL_CALL IFrameObject::load(
         pWin->SetBackground();
         pWin->Show();
 
-        auto xWindow = pWin->GetComponentInterfaceAs<awt::XWindow>();
+        uno::Reference < awt::XWindow > xWindow( pWin->GetComponentInterface(), uno::UNO_QUERY );
         xFrame->setComponent( xWindow, uno::Reference < frame::XController >() );
 
         // we must destroy the IFrame before the parent is destroyed
         xWindow->addEventListener( this );
 
         mxFrame = frame::Frame::create( mxContext );
-        auto xWin = pWin->GetComponentInterfaceAs<awt::XWindow>();
+        uno::Reference < awt::XWindow > xWin( pWin->GetComponentInterface(), uno::UNO_QUERY );
         mxFrame->initialize( xWin );
         mxFrame->setName( maFrmDescr.GetName() );
 
diff --git a/sfx2/source/view/ipclient.cxx b/sfx2/source/view/ipclient.cxx
index d92771872fe8..3c40c7bdf4a6 100644
--- a/sfx2/source/view/ipclient.cxx
+++ b/sfx2/source/view/ipclient.cxx
@@ -567,7 +567,8 @@ uno::Reference< awt::XWindow > SAL_CALL SfxInPlaceClient_Impl::getWindow()
     if ( !m_pClient || !m_pClient->GetEditWin() )
         throw uno::RuntimeException();
 
-    return m_pClient->GetEditWin()->GetComponentInterfaceAs<awt::XWindow>();
+    uno::Reference< awt::XWindow > xWin( m_pClient->GetEditWin()->GetComponentInterface(), uno::UNO_QUERY );
+    return xWin;
 }
 
 
diff --git a/sfx2/source/view/sfxbasecontroller.cxx b/sfx2/source/view/sfxbasecontroller.cxx
index 98462d587722..8f5bfddba32d 100644
--- a/sfx2/source/view/sfxbasecontroller.cxx
+++ b/sfx2/source/view/sfxbasecontroller.cxx
@@ -445,7 +445,7 @@ Reference< XWindow > SAL_CALL SfxBaseController::getComponentWindow()
     if ( !m_pData->m_pViewShell )
         throw DisposedException();
 
-    return GetViewFrame_Impl().GetFrame().GetWindow().GetComponentInterfaceAs<XWindow>();
+    return Reference< XWindow >( GetViewFrame_Impl().GetFrame().GetWindow().GetComponentInterface(), UNO_QUERY_THROW );
 }
 
 OUString SAL_CALL SfxBaseController::getViewControllerName()
diff --git a/sfx2/source/view/userinputinterception.cxx b/sfx2/source/view/userinputinterception.cxx
index 0f669fac7d66..ca1a1fd3f622 100644
--- a/sfx2/source/view/userinputinterception.cxx
+++ b/sfx2/source/view/userinputinterception.cxx
@@ -184,7 +184,7 @@ namespace sfx2
                 KeyEvent aEvent;
                 lcl_initKeyEvent( aEvent, *_rEvent.GetKeyEvent() );
                 if ( _rEvent.GetWindow() )
-                    aEvent.Source = static_cast<cppu::OWeakObject*>(_rEvent.GetWindow()->GetComponentInterface());
+                    aEvent.Source = _rEvent.GetWindow()->GetComponentInterface();
 
                 ::comphelper::OInterfaceIteratorHelper2 aIterator( m_pData->m_aKeyHandlers );
                 while ( aIterator.hasMoreElements() )
@@ -222,7 +222,7 @@ namespace sfx2
                 MouseEvent aEvent;
                 lcl_initMouseEvent( aEvent, *_rEvent.GetMouseEvent() );
                 if ( _rEvent.GetWindow() )
-                    aEvent.Source = static_cast<cppu::OWeakObject*>(_rEvent.GetWindow()->GetComponentInterface());
+                    aEvent.Source = _rEvent.GetWindow()->GetComponentInterface();
 
                 ::comphelper::OInterfaceIteratorHelper2 aIterator( m_pData->m_aMouseClickHandlers );
                 while ( aIterator.hasMoreElements() )
diff --git a/sw/source/uibase/docvw/AnnotationWin2.cxx b/sw/source/uibase/docvw/AnnotationWin2.cxx
index 7cd9dbf09b80..f463bf7597f1 100644
--- a/sw/source/uibase/docvw/AnnotationWin2.cxx
+++ b/sw/source/uibase/docvw/AnnotationWin2.cxx
@@ -1392,7 +1392,7 @@ css::uno::Reference< css::accessibility::XAccessible > SwAnnotationWin::CreateAc
     rtl::Reference<SidebarWinAccessible> pAcc( new SidebarWinAccessible( *this,
                                                           mrView.GetWrtShell(),
                                                           mrSidebarItem ) );
-    SetWindowPeer( pAcc.get() );
+    SetWindowPeer( pAcc, pAcc.get() );
     return pAcc;
 }
 
diff --git a/toolkit/inc/controls/svmedit.hxx b/toolkit/inc/controls/svmedit.hxx
index 4b7f155dcc3c..33586c84f064 100644
--- a/toolkit/inc/controls/svmedit.hxx
+++ b/toolkit/inc/controls/svmedit.hxx
@@ -26,7 +26,7 @@ class MultiLineEdit : public VclMultiLineEdit
 public:
     MultiLineEdit( vcl::Window* pParent, WinBits nWinStyle );
 
-    virtual VCLXWindow* GetComponentInterface(bool bCreate = true) override;
+    virtual css::uno::Reference< css::awt::XWindowPeer > GetComponentInterface(bool bCreate = true) override;
 };
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/toolkit/inc/helper/unowrapper.hxx b/toolkit/inc/helper/unowrapper.hxx
index b606a7df70c5..6e10e870506d 100644
--- a/toolkit/inc/helper/unowrapper.hxx
+++ b/toolkit/inc/helper/unowrapper.hxx
@@ -51,8 +51,8 @@ public:
     virtual void        ReleaseAllGraphics( OutputDevice* pOutDev ) override;
 
     // Window
-    virtual rtl::Reference<VCLXWindow> GetWindowInterface( vcl::Window* pWindow ) override;
-    virtual void        SetWindowInterface( vcl::Window* pWindow, VCLXWindow* pIFace ) override;
+    virtual css::uno::Reference< css::awt::XWindowPeer> GetWindowInterface( vcl::Window* pWindow ) override;
+    virtual void        SetWindowInterface( vcl::Window* pWindow, css::uno::Reference< css::awt::XWindowPeer> xIFace ) override;
     virtual VclPtr<vcl::Window> GetWindow(const css::uno::Reference<css::awt::XWindow>& rxWindow) override;
 
     // Menu
diff --git a/toolkit/source/awt/vclxaccessiblecomponent.cxx b/toolkit/source/awt/vclxaccessiblecomponent.cxx
index 46fad7979c9d..101307bf1d96 100644
--- a/toolkit/source/awt/vclxaccessiblecomponent.cxx
+++ b/toolkit/source/awt/vclxaccessiblecomponent.cxx
@@ -780,7 +780,7 @@ uno::Reference< awt::XFont > SAL_CALL VCLXAccessibleComponent::getFont(  )
     VclPtr<vcl::Window> pWindow = GetWindow();
     if ( pWindow )
     {
-        auto xDev = pWindow->GetComponentInterfaceAs<awt::XDevice>();
+        uno::Reference< awt::XDevice > xDev( pWindow->GetComponentInterface(), uno::UNO_QUERY );
         if ( xDev.is() )
         {
             vcl::Font aFont;
diff --git a/toolkit/source/awt/vclxtoolkit.cxx b/toolkit/source/awt/vclxtoolkit.cxx
index 287dc93f9676..10eb7f8019e2 100644
--- a/toolkit/source/awt/vclxtoolkit.cxx
+++ b/toolkit/source/awt/vclxtoolkit.cxx
@@ -1946,9 +1946,9 @@ css::uno::Reference< css::awt::XWindowPeer > VCLXToolkit::ImplCreateWindow(
         else
         {
             xRef = pNewComp;
-            pNewWindow->SetComponentInterface( pNewComp.get() );
+            pNewWindow->SetComponentInterface( xRef );
         }
-        DBG_ASSERT( pNewWindow->GetComponentInterface( false ) == pNewComp.get(),
+        DBG_ASSERT( pNewWindow->GetComponentInterface( false ) == xRef,
             "VCLXToolkit::createWindow: did #133706# resurge?" );
 
         if ( rDescriptor.WindowAttributes & css::awt::WindowAttribute::SHOW )
@@ -2502,7 +2502,7 @@ void VCLXToolkit::callFocusListeners(::VclSimpleEvent const * pEvent,
             break;
         }
     if (pFocus != nullptr)
-        xNext = static_cast<cppu::OWeakObject*>(pFocus->GetComponentInterface());
+        xNext = pFocus->GetComponentInterface();
     css::awt::FocusEvent aAwtEvent(
         static_cast< css::awt::XWindow * >(pWindow->GetWindowPeer()),
         static_cast<sal_Int16>(pWindow->GetGetFocusFlags()),
diff --git a/toolkit/source/awt/vclxwindow.cxx b/toolkit/source/awt/vclxwindow.cxx
index d770b8570234..dfc6ba8f7c00 100644
--- a/toolkit/source/awt/vclxwindow.cxx
+++ b/toolkit/source/awt/vclxwindow.cxx
@@ -912,7 +912,7 @@ void VCLXWindow::dispose(  )
     if ( auto pWindow = GetWindow() )
     {
         pWindow->RemoveEventListener( LINK( this, VCLXWindow, WindowEventListener ) );
-        pWindow->SetWindowPeer( nullptr );
+        pWindow->SetWindowPeer( nullptr, nullptr );
         pWindow->SetAccessible( nullptr );
 
         VclPtr<OutputDevice> pOutDev = GetOutputDevice();
diff --git a/toolkit/source/controls/svmedit.cxx b/toolkit/source/controls/svmedit.cxx
index 2abd5e4ebed2..383f2280412e 100644
--- a/toolkit/source/controls/svmedit.cxx
+++ b/toolkit/source/controls/svmedit.cxx
@@ -26,10 +26,11 @@ MultiLineEdit::MultiLineEdit(vcl::Window* pParent, WinBits nWinStyle)
 }
 
 // virtual
-VCLXWindow* MultiLineEdit::GetComponentInterface(bool bCreate)
+css::uno::Reference<css::awt::XWindowPeer> MultiLineEdit::GetComponentInterface(bool bCreate)
 {
-    VCLXWindow* xPeer = VclMultiLineEdit::GetComponentInterface(false);
-    if (!xPeer && bCreate)
+    css::uno::Reference<css::awt::XWindowPeer> xPeer(
+        VclMultiLineEdit::GetComponentInterface(false));
+    if (!xPeer.is() && bCreate)
     {
         rtl::Reference<VCLXMultiLineEdit> xVCLMEdit(new VCLXMultiLineEdit);
         xVCLMEdit->SetWindow(this);
diff --git a/toolkit/source/helper/unowrapper.cxx b/toolkit/source/helper/unowrapper.cxx
index 19b0822534a9..ab7d28493c62 100644
--- a/toolkit/source/helper/unowrapper.cxx
+++ b/toolkit/source/helper/unowrapper.cxx
@@ -35,7 +35,7 @@
 
 using namespace ::com::sun::star;
 
-static rtl::Reference<VCLXWindow> CreateXWindow( vcl::Window const * pWindow )
+static css::uno::Reference< css::awt::XWindowPeer > CreateXWindow( vcl::Window const * pWindow )
 {
     switch ( pWindow->GetType() )
     {
@@ -145,13 +145,13 @@ css::uno::Reference< css::awt::XToolkit> UnoWrapper::GetVCLToolkit()
     return mxToolkit;
 }
 
-rtl::Reference<VCLXWindow> UnoWrapper::GetWindowInterface( vcl::Window* pWindow )
+css::uno::Reference< css::awt::XWindowPeer> UnoWrapper::GetWindowInterface( vcl::Window* pWindow )
 {
-    rtl::Reference<VCLXWindow> xPeer = pWindow->GetWindowPeer();
+    css::uno::Reference< css::awt::XWindowPeer> xPeer = pWindow->GetWindowPeer();
     if ( !xPeer.is() )
     {
         xPeer = CreateXWindow( pWindow );
-        SetWindowInterface( pWindow, xPeer.get() );
+        SetWindowInterface( pWindow, xPeer );
     }
     return xPeer;
 }
@@ -161,8 +161,10 @@ VclPtr<vcl::Window> UnoWrapper::GetWindow(const css::uno::Reference<css::awt::XW
     return VCLUnoHelper::GetWindow(rWindow);
 }
 
-void UnoWrapper::SetWindowInterface( vcl::Window* pWindow, VCLXWindow* pVCLXWindow )
+void UnoWrapper::SetWindowInterface( vcl::Window* pWindow, css::uno::Reference< css::awt::XWindowPeer> xIFace )
 {
+    VCLXWindow* pVCLXWindow = comphelper::getUnoTunnelImplementation<VCLXWindow>( xIFace );
+
     DBG_ASSERT( pVCLXWindow, "SetComponentInterface - unsupported type" );
     if ( !pVCLXWindow )
         return;
@@ -176,7 +178,7 @@ void UnoWrapper::SetWindowInterface( vcl::Window* pWindow, VCLXWindow* pVCLXWind
             return;
     }
     pVCLXWindow->SetWindow( pWindow );
-    pWindow->SetWindowPeer( pVCLXWindow );
+    pWindow->SetWindowPeer( xIFace, pVCLXWindow );
 }
 
 css::uno::Reference<css::awt::XPopupMenu> UnoWrapper::CreateMenuInterface( PopupMenu* pPopupMenu )
@@ -225,7 +227,7 @@ void UnoWrapper::WindowDestroyed( vcl::Window* pWindow )
         VclPtr< vcl::Window > pClient = pChild->GetWindow( GetWindowType::Client );
         if ( pClient && pClient->GetWindowPeer() )
         {
-            rtl::Reference<VCLXWindow> xComp = pClient->GetComponentInterface( false );
+            css::uno::Reference< css::lang::XComponent > xComp = pClient->GetComponentInterface( false );
             xComp->dispose();
         }
 
@@ -244,7 +246,7 @@ void UnoWrapper::WindowDestroyed( vcl::Window* pWindow )
 
             if ( pClient && pClient->GetWindowPeer() && lcl_ImplIsParent( pWindow, pClient ) )
             {
-                rtl::Reference<VCLXWindow> xComp = pClient->GetComponentInterface( false );
+                css::uno::Reference< css::lang::XComponent > xComp = pClient->GetComponentInterface( false );
                 xComp->dispose();
             }
 
@@ -259,13 +261,13 @@ void UnoWrapper::WindowDestroyed( vcl::Window* pWindow )
     }
 
     VCLXWindow* pWindowPeer = pWindow->GetWindowPeer();
-    rtl::Reference<VCLXWindow> xWindowPeerComp = pWindow->GetComponentInterface( false );
+    uno::Reference< lang::XComponent > xWindowPeerComp = pWindow->GetComponentInterface( false );
     OSL_ENSURE( ( pWindowPeer != nullptr ) == xWindowPeerComp.is(),
         "UnoWrapper::WindowDestroyed: inconsistency in the window's peers!" );
     if ( pWindowPeer )
     {
         pWindowPeer->SetWindow( nullptr );
-        pWindow->SetWindowPeer( nullptr );
+        pWindow->SetWindowPeer( nullptr, nullptr );
     }
     if ( xWindowPeerComp.is() )
         xWindowPeerComp->dispose();
diff --git a/vcl/inc/window.h b/vcl/inc/window.h
index 815586162202..6ca9b9a37031 100644
--- a/vcl/inc/window.h
+++ b/vcl/inc/window.h
@@ -270,11 +270,12 @@ public:
     OUString            maQuickHelpText;
     OUString            maID;
     InputContext        maInputContext;
+    css::uno::Reference< css::awt::XWindowPeer > mxWindowPeer;
     css::uno::Reference< css::accessibility::XAccessible > mxAccessible;
     std::shared_ptr< VclSizeGroup > m_xSizeGroup;
     std::vector<VclPtr<FixedText>> m_aMnemonicLabels;
     std::unique_ptr<ImplAccessibleInfos> mpAccessibleInfos;
-    rtl::Reference<VCLXWindow>  mxVCLXWindow; // peer window object from toolkit
+    VCLXWindow*         mpVCLXWindow;
     vcl::Region              maWinRegion;            //< region to 'shape' the VCL window (frame coordinates)
     vcl::Region              maWinClipRegion;        //< the (clipping) region that finally corresponds to the VCL window (frame coordinates)
     vcl::Region              maInvalidateRegion;     //< region that has to be redrawn (frame coordinates)
diff --git a/vcl/qa/cppunit/lifecycle.cxx b/vcl/qa/cppunit/lifecycle.cxx
index 412ce1006fe9..ee706178bad2 100644
--- a/vcl/qa/cppunit/lifecycle.cxx
+++ b/vcl/qa/cppunit/lifecycle.cxx
@@ -288,7 +288,7 @@ void LifecycleTest::testLeakage()
 void LifecycleTest::testToolkit()
 {
     LeakTestObject *pVclWin = LeakTestObject::Create<WorkWindow>(nullptr, WB_APP|WB_STDWORK);
-    auto xWindow = pVclWin->getRef()->GetComponentInterfaceAs<css::awt::XWindow>();
+    css::uno::Reference<css::awt::XWindow> xWindow(pVclWin->getRef()->GetComponentInterface(), css::uno::UNO_QUERY);
     CPPUNIT_ASSERT(xWindow.is());
 
     // test UNO dispose
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index d31ea0f74b70..4d4a418408c1 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1236,7 +1236,8 @@ css::uno::Reference<css::awt::XWindow> SalInstanceContainer::CreateChildFrame()
     auto xPage = VclPtr<VclBin>::Create(m_xContainer.get());
     xPage->set_expand(true);
     xPage->Show();
-    return xPage->GetComponentInterfaceAs<css::awt::XWindow>();
+    return css::uno::Reference<css::awt::XWindow>(xPage->GetComponentInterface(),
+                                                  css::uno::UNO_QUERY);
 }
 
 std::unique_ptr<weld::Container> SalInstanceWidget::weld_parent() const
@@ -1406,7 +1407,9 @@ OUString SalInstanceWindow::get_title() const { return m_xWindow->GetText(); }
 
 css::uno::Reference<css::awt::XWindow> SalInstanceWindow::GetXWindow()
 {
-    return m_xWindow->GetComponentInterfaceAs<css::awt::XWindow>();
+    css::uno::Reference<css::awt::XWindow> xWindow(m_xWindow->GetComponentInterface(),
+                                                   css::uno::UNO_QUERY);
+    return xWindow;
 }
 
 void SalInstanceWindow::resize_to_request()
diff --git a/vcl/source/control/fmtfield.cxx b/vcl/source/control/fmtfield.cxx
index 2895636122f0..cb55d2ce158a 100644
--- a/vcl/source/control/fmtfield.cxx
+++ b/vcl/source/control/fmtfield.cxx
@@ -910,7 +910,7 @@ namespace
             m_rSpinButton.SpinField::SetText(rText, rSel);
         }
 
-        virtual void SetEntryTextColor(const ::Color* pColor) override
+        virtual void SetEntryTextColor(const Color* pColor) override
         {
             if (pColor)
                 m_rSpinButton.SetControlForeground(*pColor);
diff --git a/vcl/source/control/ivctrl.cxx b/vcl/source/control/ivctrl.cxx
index 1a06d68fe48e..c96e133a506f 100644
--- a/vcl/source/control/ivctrl.cxx
+++ b/vcl/source/control/ivctrl.cxx
@@ -18,7 +18,6 @@
  */
 
 
-#include <toolkit/awt/vclxwindow.hxx>
 #include <vcl/toolkit/ivctrl.hxx>
 #include "imivctl.hxx"
 #include <vcl/accessiblefactory.hxx>
@@ -422,7 +421,7 @@ css::uno::Reference< XAccessible > SvtIconChoiceCtrl::CreateAccessible()
         css::uno::Reference< XAccessible > xAccParent = pParent->GetAccessible();
         if ( xAccParent.is() )
         {
-            rtl::Reference<VCLXWindow> xHoldAlive(GetComponentInterface());
+            css::uno::Reference< css::awt::XWindowPeer > xHoldAlive(GetComponentInterface());
             xAccessible = _pImpl->GetAccessibleFactory().createAccessibleIconChoiceCtrl( *this, xAccParent );
         }
     }
diff --git a/vcl/source/treelist/treelistbox.cxx b/vcl/source/treelist/treelistbox.cxx
index a21e41969df0..1fc5feaf21fc 100644
--- a/vcl/source/treelist/treelistbox.cxx
+++ b/vcl/source/treelist/treelistbox.cxx
@@ -23,7 +23,6 @@
         - SelectAll( false ) => only repaint the deselected entries
 */
 
-#include <toolkit/awt/vclxwindow.hxx>
 #include <vcl/toolkit/treelistbox.hxx>
 #include <vcl/accessiblefactory.hxx>
 #include <com/sun/star/accessibility/AccessibleStateType.hpp>
@@ -3474,7 +3473,7 @@ css::uno::Reference< XAccessible > SvTreeListBox::CreateAccessible()
         if ( xAccParent.is() )
         {
             // need to be done here to get the vclxwindow later on in the accessible
-            rtl::Reference< VCLXWindow > xHoldAlive(GetComponentInterface());
+            css::uno::Reference< css::awt::XWindowPeer > xHoldAlive(GetComponentInterface());
             xAccessible = pImpl->m_aFactoryAccess.getFactory().createAccessibleTreeListBox( *this, xAccParent );
         }
     }
diff --git a/vcl/source/window/accessibility.cxx b/vcl/source/window/accessibility.cxx
index 18e4ce23dac6..4e3768286554 100644
--- a/vcl/source/window/accessibility.cxx
+++ b/vcl/source/window/accessibility.cxx
@@ -17,7 +17,6 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#include <toolkit/awt/vclxwindow.hxx>
 #include <vcl/layout.hxx>
 #include <vcl/toolkit/fixed.hxx>
 #include <vcl/window.hxx>
@@ -78,7 +77,8 @@ css::uno::Reference< css::accessibility::XAccessible > Window::GetAccessible( bo
 
 css::uno::Reference< css::accessibility::XAccessible > Window::CreateAccessible()
 {
-    return GetComponentInterfaceAs<css::accessibility::XAccessible>();
+    css::uno::Reference< css::accessibility::XAccessible > xAcc( GetComponentInterface(), css::uno::UNO_QUERY );
+    return xAcc;
 }
 
 void Window::SetAccessible( const css::uno::Reference< css::accessibility::XAccessible >& x )
diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx
index 7efb43b43aff..882d6c0e985b 100644
--- a/vcl/source/window/dialog.cxx
+++ b/vcl/source/window/dialog.cxx
@@ -846,7 +846,7 @@ bool Dialog::Close()
     if ( xWindow->IsDisposed() )
         return false;
 
-    if ( mpWindowImpl->mxVCLXWindow.is() && IsCreatedWithToolkit() && !IsInExecute() )
+    if ( mpWindowImpl->mxWindowPeer.is() && IsCreatedWithToolkit() && !IsInExecute() )
         return false;
 
     // If there's a cancel button with a custom handler, then always give it a chance to
diff --git a/vcl/source/window/dockwin.cxx b/vcl/source/window/dockwin.cxx
index 803ce85e8fc3..3b622cf1cd73 100644
--- a/vcl/source/window/dockwin.cxx
+++ b/vcl/source/window/dockwin.cxx
@@ -625,7 +625,7 @@ bool DockingWindow::Close()
     if ( xWindow->IsDisposed() )
         return false;
 
-    if ( mpWindowImpl->mxVCLXWindow.is() && IsCreatedWithToolkit() )
+    if ( mpWindowImpl->mxWindowPeer.is() && IsCreatedWithToolkit() )
         return false;
 
     Show( false, ShowFlags::NoFocusChange );
diff --git a/vcl/source/window/stacking.cxx b/vcl/source/window/stacking.cxx
index a8d58a086cbc..60f7303f33bc 100644
--- a/vcl/source/window/stacking.cxx
+++ b/vcl/source/window/stacking.cxx
@@ -17,7 +17,6 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#include <toolkit/awt/vclxwindow.hxx>
 #include <vcl/syswin.hxx>
 #include <vcl/window.hxx>
 #include <vcl/taskpanelist.hxx>
@@ -620,7 +619,7 @@ bool Window::IsTopWindow() const
     {
         // #113722#, cache result of expensive queryInterface call
         vcl::Window *pThisWin = const_cast<vcl::Window*>(this);
-        auto xTopWindow = pThisWin->GetComponentInterfaceAs<XTopWindow>();
+        uno::Reference< XTopWindow > xTopWindow( pThisWin->GetComponentInterface(), UNO_QUERY );
         pThisWin->mpWindowImpl->mpWinData->mnIsTopWindow = xTopWindow.is() ? 1 : 0;
     }
     return mpWindowImpl->mpWinData->mnIsTopWindow == 1;
diff --git a/vcl/source/window/syswin.cxx b/vcl/source/window/syswin.cxx
index 18d664844402..ecba89c0aac1 100644
--- a/vcl/source/window/syswin.cxx
+++ b/vcl/source/window/syswin.cxx
@@ -270,7 +270,7 @@ bool SystemWindow::Close()
     if ( xWindow->IsDisposed() )
         return false;
 
-    if ( mpWindowImpl->mxVCLXWindow.is() && IsCreatedWithToolkit() )
+    if ( mpWindowImpl->mxWindowPeer.is() && IsCreatedWithToolkit() )
         return false;
 
     // Is Window not closeable, ignore close
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index 6422d4add39c..c0a9bf8b141b 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -547,8 +547,8 @@ void Window::dispose()
         mpWindowImpl->mpFrameData = nullptr;
     }
 
-    if (mpWindowImpl->mxVCLXWindow)
-        mpWindowImpl->mxVCLXWindow->dispose();
+    if (mpWindowImpl->mxWindowPeer)
+        mpWindowImpl->mxWindowPeer->dispose();
 
     // should be the last statements
     mpWindowImpl.reset();
@@ -612,7 +612,7 @@ WindowImpl::WindowImpl( WindowType nType )
     mnChildEventListenersIteratingCount = 0;
     mpCursor                            = nullptr;                      // cursor
     maPointer                           = PointerStyle::Arrow;
-    mxVCLXWindow                        = nullptr;
+    mpVCLXWindow                        = nullptr;
     mpAccessibleInfos                   = nullptr;
     maControlForeground                 = COL_TRANSPARENT;  // no foreground set
     maControlBackground                 = COL_TRANSPARENT;  // no background set
@@ -3105,37 +3105,39 @@ const OUString& Window::GetHelpText() const
     return mpWindowImpl->maHelpText;
 }
 
-void Window::SetWindowPeer( VCLXWindow* pVCLXWindow  )
+void Window::SetWindowPeer( Reference< css::awt::XWindowPeer > const & xPeer, VCLXWindow* pVCLXWindow  )
 {
     if (!mpWindowImpl || mpWindowImpl->mbInDispose)
         return;
 
     // be safe against re-entrance: first clear the old ref, then assign the new one
-    if (mpWindowImpl->mxVCLXWindow)
+    if (mpWindowImpl->mxWindowPeer)
     {
-        mpWindowImpl->mxVCLXWindow->dispose();
-        mpWindowImpl->mxVCLXWindow.clear();
+        mpWindowImpl->mxWindowPeer->dispose();
+        mpWindowImpl->mxWindowPeer.clear();
     }
-    mpWindowImpl->mxVCLXWindow = pVCLXWindow;
+    mpWindowImpl->mxWindowPeer = xPeer;
+
+    mpWindowImpl->mpVCLXWindow = pVCLXWindow;
 }
 
-VCLXWindow* Window::GetComponentInterface( bool bCreate )
+Reference< css::awt::XWindowPeer > Window::GetComponentInterface( bool bCreate )
 {
-    if ( !mpWindowImpl->mxVCLXWindow.is() && bCreate )
+    if ( !mpWindowImpl->mxWindowPeer.is() && bCreate )
     {
         UnoWrapperBase* pWrapper = UnoWrapperBase::GetUnoWrapper();
         if ( pWrapper )
-            mpWindowImpl->mxVCLXWindow = pWrapper->GetWindowInterface( this );
+            mpWindowImpl->mxWindowPeer = pWrapper->GetWindowInterface( this );
     }
-    return mpWindowImpl->mxVCLXWindow.get();
+    return mpWindowImpl->mxWindowPeer;
 }
 
-void Window::SetComponentInterface( VCLXWindow* pIFace )
+void Window::SetComponentInterface( Reference< css::awt::XWindowPeer > const & xIFace )
 {
     UnoWrapperBase* pWrapper = UnoWrapperBase::GetUnoWrapper();
     SAL_WARN_IF( !pWrapper, "vcl.window", "SetComponentInterface: No Wrapper!" );
     if ( pWrapper )
-        pWrapper->SetWindowInterface( this, pIFace );
+        pWrapper->SetWindowInterface( this, xIFace );
 }
 
 typedef std::map<vcl::LOKWindowId, VclPtr<vcl::Window>> LOKWindowsMap;
@@ -3687,7 +3689,9 @@ Reference< css::rendering::XCanvas > Window::ImplGetCanvas( bool bSpriteCanvas )
     aArg[ 0 ] <<= reinterpret_cast<sal_Int64>(this);
     aArg[ 1 ] <<= css::awt::Rectangle( mnOutOffX, mnOutOffY, mnOutWidth, mnOutHeight );
     aArg[ 2 ] <<= mpWindowImpl->mbAlwaysOnTop;
-    aArg[ 3 ] <<= const_cast<vcl::Window*>(this)->GetComponentInterfaceAs<css::awt::XWindow>();
+    aArg[ 3 ] <<= Reference< css::awt::XWindow >(
+                             const_cast<vcl::Window*>(this)->GetComponentInterface(),
+                             UNO_QUERY );
     aArg[ 4 ] = GetSystemGfxDataAny();
 
     Reference< XComponentContext > xContext = comphelper::getProcessComponentContext();
diff --git a/vcl/source/window/window2.cxx b/vcl/source/window/window2.cxx
index a0addf688e48..f52478299a9b 100644
--- a/vcl/source/window/window2.cxx
+++ b/vcl/source/window/window2.cxx
@@ -1250,7 +1250,7 @@ PointerStyle Window::GetPointer() const
 
 VCLXWindow* Window::GetWindowPeer() const
 {
-    return mpWindowImpl ? mpWindowImpl->mxVCLXWindow.get() : nullptr;
+    return mpWindowImpl ? mpWindowImpl->mpVCLXWindow : nullptr;
 }
 
 void Window::SetPosPixel( const Point& rNewPos )
diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index ef313aaab927..d76344d7c64d 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -15,7 +15,6 @@
 #include <string_view>
 
 #include <osl/process.h>
-#include <toolkit/awt/vclxwindow.hxx>
 #include <unx/gtk/gtkdata.hxx>
 #include <unx/gtk/gtkinst.hxx>
 #include <unx/genprn.h>
@@ -4260,7 +4259,7 @@ public:
 
         // NoActivate otherwise Show grab focus to this widget
         xEmbedWindow->Show(true, ShowFlags::NoActivate);
-        auto xWindow = xEmbedWindow->GetComponentInterfaceAs<css::awt::XWindow>();
+        css::uno::Reference<css::awt::XWindow> xWindow(xEmbedWindow->GetComponentInterface(), css::uno::UNO_QUERY);
         return xWindow;
 #else
         return nullptr;


More information about the Libreoffice-commits mailing list