[Libreoffice-commits] core.git: include/sfx2 sfx2/source

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Thu Mar 11 17:36:11 UTC 2021


 include/sfx2/objsh.hxx       |    4 ++--
 sfx2/source/appl/appopen.cxx |    6 +++---
 sfx2/source/doc/objcont.cxx  |    4 +---
 sfx2/source/doc/objmisc.cxx  |   24 +++++++++++++++---------
 4 files changed, 21 insertions(+), 17 deletions(-)

New commits:
commit 3f66a801aeab257705922998e518398d27e4d698
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Mar 11 09:52:56 2021 +0000
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Thu Mar 11 18:35:27 2021 +0100

    keep SfxObjectShell::GetDialogParent ret as an awt::XWindow
    
    instead of extracting the vcl::Window impl details from it
    
    Change-Id: Ia13c1559861ab2a65a2108c8ccd704cba711916c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112329
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/include/sfx2/objsh.hxx b/include/sfx2/objsh.hxx
index b21f7bf4bb69..40715f29e6ac 100644
--- a/include/sfx2/objsh.hxx
+++ b/include/sfx2/objsh.hxx
@@ -88,7 +88,7 @@ namespace sfx2
     class StyleManager;
 }
 
-namespace vcl { class Window; }
+namespace com::sun::star::awt { class XWindow; }
 namespace com::sun::star::beans { struct PropertyValue; }
 namespace com::sun::star::document { struct CmisVersion; }
 namespace com::sun::star::document { class XDocumentProperties; }
@@ -574,7 +574,7 @@ public:
 
     virtual css::uno::Sequence< OUString > GetEventNames();
 
-    vcl::Window*                GetDialogParent( SfxMedium const * pMedium=nullptr );
+    css::uno::Reference<css::awt::XWindow> GetDialogParent(SfxMedium const* pMedium = nullptr);
     static SfxObjectShell*      CreateObject( const OUString& rServiceName, SfxObjectCreateMode = SfxObjectCreateMode::STANDARD );
     static SfxObjectShell*      CreateObjectByFactoryName( const OUString& rURL, SfxObjectCreateMode = SfxObjectCreateMode::STANDARD );
     static css::uno::Reference< css::lang::XComponent >
diff --git a/sfx2/source/appl/appopen.cxx b/sfx2/source/appl/appopen.cxx
index 4a6c1f403bbb..025316846d3d 100644
--- a/sfx2/source/appl/appopen.cxx
+++ b/sfx2/source/appl/appopen.cxx
@@ -206,9 +206,9 @@ ErrCode CheckPasswd_Impl
 
                 if ( bIsEncrypted )
                 {
-                    vcl::Window* pWin = pDoc ? pDoc->GetDialogParent( pFile ) : nullptr;
-                    if ( pWin )
-                        pWin->Show();
+                    css::uno::Reference<css::awt::XWindow> xWin(pDoc ? pDoc->GetDialogParent(pFile) : nullptr);
+                    if (xWin)
+                        xWin->setVisible(true);
 
                     nRet = ERRCODE_SFX_CANTGETPASSWD;
 
diff --git a/sfx2/source/doc/objcont.cxx b/sfx2/source/doc/objcont.cxx
index 04255063fd3f..f7f69f595e85 100644
--- a/sfx2/source/doc/objcont.cxx
+++ b/sfx2/source/doc/objcont.cxx
@@ -26,7 +26,6 @@
 #include <comphelper/fileurl.hxx>
 #include <vcl/svapp.hxx>
 #include <vcl/weld.hxx>
-#include <vcl/window.hxx>
 #include <svl/style.hxx>
 
 #include <svl/intitem.hxx>
@@ -523,8 +522,7 @@ void SfxObjectShell::UpdateFromTemplate_Impl(  )
             else if ( bCanUpdateFromTemplate == document::UpdateDocMode::ACCORDING_TO_CONFIG )
             {
                 const OUString sMessage( SfxResId(STR_QRYTEMPL_MESSAGE).replaceAll( "$(ARG1)", aTemplName ) );
-                vcl::Window *pWin = GetDialogParent();
-                QueryTemplateBox aBox(pWin ? pWin->GetFrameWeld() : nullptr, sMessage);
+                QueryTemplateBox aBox(Application::GetFrameWeld(GetDialogParent()), sMessage);
                 if (RET_YES == aBox.run())
                     bLoad = true;
             }
diff --git a/sfx2/source/doc/objmisc.cxx b/sfx2/source/doc/objmisc.cxx
index b4321576b3b8..81298eb8ff11 100644
--- a/sfx2/source/doc/objmisc.cxx
+++ b/sfx2/source/doc/objmisc.cxx
@@ -28,6 +28,7 @@
 #include <cppuhelper/exc_hlp.hxx>
 #include <sal/log.hxx>
 
+#include <com/sun/star/awt/XTopWindow.hpp>
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/container/XChild.hpp>
 #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
@@ -1602,18 +1603,18 @@ bool SfxObjectShell::AdjustMacroMode()
     return pImpl->aMacroMode.adjustMacroMode( xInteraction );
 }
 
-vcl::Window* SfxObjectShell::GetDialogParent( SfxMedium const * pLoadingMedium )
+css::uno::Reference<css::awt::XWindow> SfxObjectShell::GetDialogParent( SfxMedium const * pLoadingMedium )
 {
-    VclPtr<vcl::Window> pWindow;
+    css::uno::Reference<css::awt::XWindow> xWindow;
     SfxItemSet* pSet = pLoadingMedium ? pLoadingMedium->GetItemSet() : GetMedium()->GetItemSet();
     const SfxUnoFrameItem* pUnoItem = SfxItemSet::GetItem<SfxUnoFrameItem>(pSet, SID_FILLFRAME, false);
     if ( pUnoItem )
     {
         const uno::Reference < frame::XFrame >& xFrame( pUnoItem->GetFrame() );
-        pWindow = VCLUnoHelper::GetWindow( xFrame->getContainerWindow() );
+        xWindow = xFrame->getContainerWindow();
     }
 
-    if ( !pWindow )
+    if (!xWindow)
     {
         SfxFrame* pFrame = nullptr;
         const SfxFrameItem* pFrameItem = SfxItemSet::GetItem<SfxFrameItem>(pSet, SID_DOCFRAME, false);
@@ -1632,22 +1633,27 @@ vcl::Window* SfxObjectShell::GetDialogParent( SfxMedium const * pLoadingMedium )
         }
 
         if ( pFrame )
+        {
             // get topmost window
-            pWindow = VCLUnoHelper::GetWindow( pFrame->GetFrameInterface()->getContainerWindow() );
+            xWindow = pFrame->GetFrameInterface()->getContainerWindow();
+        }
     }
 
-    if ( pWindow )
+    if (xWindow)
     {
         // this frame may be invisible, show it if it is allowed
         const SfxBoolItem* pHiddenItem = SfxItemSet::GetItem<SfxBoolItem>(pSet, SID_HIDDEN, false);
         if ( !pHiddenItem || !pHiddenItem->GetValue() )
         {
-            pWindow->Show();
-            pWindow->ToTop();
+            xWindow->setVisible(true);
+            css::uno::Reference<css::awt::XTopWindow> xTopWindow(xWindow, uno::UNO_QUERY);
+            SAL_WARN_IF(!xTopWindow, "sfx.appl", "XTopWindow not available from XWindow");
+            if (xTopWindow)
+                xTopWindow->toFront();
         }
     }
 
-    return pWindow;
+    return xWindow;
 }
 
 void SfxObjectShell::SetCreateMode_Impl( SfxObjectCreateMode nMode )


More information about the Libreoffice-commits mailing list