[Libreoffice-commits] core.git: basctl/source basic/source include/vcl sc/source sd/qa svx/source sw/source vcl/source vcl/unx
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Fri Aug 6 08:55:55 UTC 2021
basctl/source/basicide/IDEComboBox.cxx | 16 +++++++----
basctl/source/basicide/basides1.cxx | 2 -
basctl/source/basicide/basobj3.cxx | 6 ++--
basic/source/runtime/inputbox.cxx | 3 --
basic/source/runtime/iosys.cxx | 6 +---
basic/source/runtime/methods.cxx | 3 --
include/vcl/svapp.hxx | 14 ++++++---
include/vcl/toolkit/dialog.hxx | 2 +
sc/source/ui/docshell/docsh.cxx | 3 --
sd/qa/unit/dialogs-test.cxx | 36 ++++++++-----------------
svx/source/dialog/SafeModeUI.cxx | 3 --
sw/source/ui/dbui/mmresultdialogs.cxx | 3 --
vcl/source/app/svapp.cxx | 8 ++++-
vcl/source/window/dialog.cxx | 2 -
vcl/unx/generic/print/genprnpsp.cxx | 3 --
vcl/unx/generic/printer/cupsmgr.cxx | 6 +---
vcl/unx/gtk3/gtkinst.cxx | 7 +++-
vcl/unx/gtk3_kde5/gtk3_kde5_filepicker_ipc.cxx | 17 ++++-------
18 files changed, 68 insertions(+), 72 deletions(-)
New commits:
commit 1aee8678c83c637a2d5c1e0a716528b0bcf11de0
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Aug 5 19:46:35 2021 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Aug 6 10:55:18 2021 +0200
drop intermediate vcl::Window from Application::GetDefDialogParent
Change-Id: I96be984cbefeb8e45bf49de4c50a225a46fbefb6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120089
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/basctl/source/basicide/IDEComboBox.cxx b/basctl/source/basicide/IDEComboBox.cxx
index 87a45e5a9c22..e295e44ff1ed 100644
--- a/basctl/source/basicide/IDEComboBox.cxx
+++ b/basctl/source/basicide/IDEComboBox.cxx
@@ -194,14 +194,20 @@ void LibBox::ReleaseFocus()
SfxViewShell* pCurSh = SfxViewShell::Current();
DBG_ASSERT(pCurSh, "Current ViewShell not found!");
- if (pCurSh)
- {
- vcl::Window* pShellWin = pCurSh->GetWindow();
- if (!pShellWin)
- pShellWin = Application::GetDefDialogParent();
+ if (!pCurSh)
+ return;
+ vcl::Window* pShellWin = pCurSh->GetWindow();
+ if (pShellWin)
+ {
pShellWin->GrabFocus();
+ return;
}
+
+ weld::Window* pWin = Application::GetDefDialogParent();
+ if (!pWin)
+ return;
+ pWin->grab_focus();
}
void LibBox::FillBox()
diff --git a/basctl/source/basicide/basides1.cxx b/basctl/source/basicide/basides1.cxx
index 8942d87f4ae0..70991525331a 100644
--- a/basctl/source/basicide/basides1.cxx
+++ b/basctl/source/basicide/basides1.cxx
@@ -1295,7 +1295,7 @@ BasicDebugFlags Shell::CallBasicBreakHdl( StarBASIC const * pBasic )
if ( StarBASIC::IsRunning() ) // if cancelled...
{
if ( bAppWindowDisabled )
- Application::GetDefDialogParent()->Enable(false);
+ Application::GetDefDialogParent()->set_sensitive(false);
if ( nWaitCount )
{
diff --git a/basctl/source/basicide/basobj3.cxx b/basctl/source/basicide/basobj3.cxx
index fa7c2fc3d220..06f7c6a9e08c 100644
--- a/basctl/source/basicide/basobj3.cxx
+++ b/basctl/source/basicide/basobj3.cxx
@@ -332,10 +332,10 @@ void BasicStopped(
*pnWaitCount = nWait;
}
- vcl::Window* pDefParent = Application::GetDefDialogParent();
- if ( pDefParent && !pDefParent->IsEnabled() )
+ weld::Window* pDefParent = Application::GetDefDialogParent();
+ if (pDefParent && !pDefParent->get_sensitive())
{
- pDefParent->Enable();
+ pDefParent->set_sensitive(true);
if ( pbAppWindowDisabled )
*pbAppWindowDisabled = true;
}
diff --git a/basic/source/runtime/inputbox.cxx b/basic/source/runtime/inputbox.cxx
index 50b19ee51273..e409b1352bfd 100644
--- a/basic/source/runtime/inputbox.cxx
+++ b/basic/source/runtime/inputbox.cxx
@@ -133,8 +133,7 @@ void SbRtl_InputBox(StarBASIC *, SbxArray & rPar, bool)
nX = rPar.Get(4)->GetLong();
nY = rPar.Get(5)->GetLong();
}
- vcl::Window* pParent = Application::GetDefDialogParent();
- SvRTLInputBox aDlg(pParent ? pParent->GetFrameWeld() : nullptr,rPrompt,aTitle,aDefault,nX,nY);
+ SvRTLInputBox aDlg(Application::GetDefDialogParent(), rPrompt, aTitle, aDefault, nX, nY);
aDlg.run();
rPar.Get(0)->PutString(aDlg.GetText());
}
diff --git a/basic/source/runtime/iosys.cxx b/basic/source/runtime/iosys.cxx
index 5b177b906d2d..43ee1c4d6856 100644
--- a/basic/source/runtime/iosys.cxx
+++ b/basic/source/runtime/iosys.cxx
@@ -691,8 +691,7 @@ void SbiIoSystem::Shutdown()
// anything left to PRINT?
if( !aOut.isEmpty() )
{
- vcl::Window* pParent = Application::GetDefDialogParent();
- std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(pParent ? pParent->GetFrameWeld() : nullptr, VclMessageType::Warning,
+ std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(Application::GetDefDialogParent(), VclMessageType::Warning,
VclButtonsType::Ok, aOut));
xBox->run();
}
@@ -831,8 +830,7 @@ void SbiIoSystem::WriteCon(std::u16string_view rText)
{
SolarMutexGuard aSolarGuard;
- vcl::Window* pParent = Application::GetDefDialogParent();
- std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(pParent ? pParent->GetFrameWeld() : nullptr, VclMessageType::Warning,
+ std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(Application::GetDefDialogParent(), VclMessageType::Warning,
VclButtonsType::OkCancel, s));
xBox->set_default_response(RET_OK);
if (!xBox->run())
diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx
index 39309f06a4f4..27da5fdac33d 100644
--- a/basic/source/runtime/methods.cxx
+++ b/basic/source/runtime/methods.cxx
@@ -4410,8 +4410,7 @@ void SbRtl_MsgBox(StarBASIC *, SbxArray & rPar, bool)
WinBits nDialogType = nType & (16+32+64);
SolarMutexGuard aSolarGuard;
- vcl::Window* pParentWin = Application::GetDefDialogParent();
- weld::Widget* pParent = pParentWin ? pParentWin->GetFrameWeld() : nullptr;
+ weld::Widget* pParent = Application::GetDefDialogParent();
VclMessageType eType = VclMessageType::Other;
diff --git a/include/vcl/svapp.hxx b/include/vcl/svapp.hxx
index d6a6bfbc5065..519aad8bb27b 100644
--- a/include/vcl/svapp.hxx
+++ b/include/vcl/svapp.hxx
@@ -1092,16 +1092,20 @@ public:
/** Get the default parent window for dialog boxes.
- @remark GetDefDialogParent does all sorts of things find a useful parent
- window for dialogs. It first uses the topmost parent of the active
- window to avoid using floating windows or other dialog boxes. If
- there are no active windows, then it will take a random stab and
+ @remark This is almost always a terrible method to use to get a parent
+ for a dialog, try hard to instead pass a specific parent window
+ to dialogs.
+
+ GetDefDialogParent does all sorts of things to try and find a useful
+ parent window for dialogs. It first uses the topmost parent of the
+ active window to avoid using floating windows or other dialog boxes.
+ If there are no active windows, then it will take a random stab and
choose the first visible top window. Otherwise, it defaults to
the desktop.
@returns Pointer to the default window.
*/
- static vcl::Window* GetDefDialogParent();
+ static weld::Window* GetDefDialogParent();
/** Gets the dialog cancel mode for headless environments.
diff --git a/include/vcl/toolkit/dialog.hxx b/include/vcl/toolkit/dialog.hxx
index 52f58957bc5a..3a5a1650bdc7 100644
--- a/include/vcl/toolkit/dialog.hxx
+++ b/include/vcl/toolkit/dialog.hxx
@@ -88,6 +88,8 @@ public:
virtual void doDeferredInit(WinBits nBits) override;
SAL_DLLPRIVATE void disposeOwnedButtons();
+ SAL_DLLPRIVATE static vcl::Window* GetDefDialogParent();
+
protected:
explicit Dialog( WindowType nType );
explicit Dialog( vcl::Window* pParent, std::u16string_view rID, const OUString& rUIXMLDescription);
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
index 8e2c3c45218f..7a5732e0a154 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -3028,8 +3028,7 @@ weld::Window* ScDocShell::GetActiveDialogParent()
ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell();
if ( pViewSh )
return pViewSh->GetDialogParent();
- vcl::Window* pRet = Application::GetDefDialogParent();
- return pRet ? pRet->GetFrameWeld() : nullptr;
+ return Application::GetDefDialogParent();
}
void ScDocShell::SetSolverSaveData( std::unique_ptr<ScOptSolverSave> pData )
diff --git a/sd/qa/unit/dialogs-test.cxx b/sd/qa/unit/dialogs-test.cxx
index 50272165e702..16b14a7b37d8 100644
--- a/sd/qa/unit/dialogs-test.cxx
+++ b/sd/qa/unit/dialogs-test.cxx
@@ -250,9 +250,8 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID)
// it is more a 'wizard' in that it has prev/next buttons and implicitly
// multiple pages. To make use of that it is necessary that the implementation
// supports the 'Screenshot interface'
- auto const parent = Application::GetDefDialogParent();
pRetval = getSdAbstractDialogFactory()->CreateSdPublishingDlg(
- parent == nullptr ? nullptr : parent->GetFrameWeld(),
+ Application::GetDefDialogParent(),
DocumentType::Impress);
break;
}
@@ -263,9 +262,8 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID)
// there is no object selected that can be broken up. For better
// results it might be necessary to add/select an object that
// delivers a good metafile (which is the base for breaking)
- auto const parent = Application::GetDefDialogParent();
pRetval = getSdAbstractDialogFactory()->CreateBreakDlg(
- parent == nullptr ? nullptr : parent->GetFrameWeld(),
+ Application::GetDefDialogParent(),
getDrawView(),
getDocShell(),
0,
@@ -380,9 +378,8 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID)
SdrObject* pSdrObj = pSdPage->GetObj(0);
// using one SdrObject is okay, none crashes
CPPUNIT_ASSERT(pSdrObj);
- auto const parent = Application::GetDefDialogParent();
pRetval = getSdAbstractDialogFactory()->CreateMorphDlg(
- parent == nullptr ? nullptr : parent->GetFrameWeld(),
+ Application::GetDefDialogParent(),
pSdrObj,
pSdrObj);
break;
@@ -390,9 +387,8 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID)
case 11:
{
// CreateSdOutlineBulletTabDlg(const SfxItemSet* pAttr, ::sd::View* pView = nullptr) override;
- auto const parent = Application::GetDefDialogParent();
pRetval = getSdAbstractDialogFactory()->CreateSdOutlineBulletTabDlg(
- parent == nullptr ? nullptr : parent->GetFrameWeld(),
+ Application::GetDefDialogParent(),
&getEmptySfxItemSet(),
getDrawView());
break;
@@ -427,9 +423,8 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID)
aDlgSet.Put(SfxBoolItem(ATTR_PRESENT_SHOW_PAUSELOGO, rPresentationSettings.mbShowPauseLogo));
//SdOptions* pOptions = SD_MOD()->GetSdOptions(DocumentType::Impress);
aDlgSet.Put(SfxInt32Item(ATTR_PRESENT_DISPLAY, 0 /*pOptions->GetDisplay()*/));
- vcl::Window* pWin = Application::GetDefDialogParent();
pRetval = getSdAbstractDialogFactory()->CreateSdStartPresentationDlg(
- pWin ? pWin->GetFrameWeld() : nullptr,
+ Application::GetDefDialogParent(),
aDlgSet,
std::vector<OUString>(),
nullptr);
@@ -437,10 +432,9 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID)
}
case 14:
{
- auto const parent = Application::GetDefDialogParent();
// CreateRemoteDialog(vcl::Window* pWindow) override; // ad for RemoteDialog
pRetval = getSdAbstractDialogFactory()->CreateRemoteDialog(
- parent == nullptr ? nullptr : parent->GetFrameWeld());
+ Application::GetDefDialogParent());
break;
}
case 15:
@@ -452,10 +446,9 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID)
CPPUNIT_ASSERT(pStyleSheetPool);
SfxStyleSheetBase* pStyleSheet = pStyleSheetPool->First(SfxStyleFamily::Page);
CPPUNIT_ASSERT(pStyleSheet);
- vcl::Window* pWin = Application::GetDefDialogParent();
pRetval = getSdAbstractDialogFactory()->CreateSdPresLayoutTemplateDlg(
getDocShell(),
- pWin ? pWin->GetFrameWeld() : nullptr,
+ Application::GetDefDialogParent(),
false,
*pStyleSheet,
PresentationObjects::Title,
@@ -465,9 +458,8 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID)
case 16:
{
// CreateSdPresLayoutDlg(::sd::DrawDocShell* pDocShell, vcl::Window* pWindow, const SfxItemSet& rInAttrs) override;
- auto const parent = Application::GetDefDialogParent();
pRetval = getSdAbstractDialogFactory()->CreateSdPresLayoutDlg(
- parent == nullptr ? nullptr : parent->GetFrameWeld(),
+ Application::GetDefDialogParent(),
getDocShell(),
getEmptySfxItemSet());
break;
@@ -524,9 +516,8 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID)
// CreateSdVectorizeDlg(weld::Window* pParent, const Bitmap& rBmp, ::sd::DrawDocShell* pDocShell) override;
// works well with empty Bitmap, but my be nicer with setting one
Bitmap aEmptyBitmap;
- auto const parent = Application::GetDefDialogParent();
pRetval = getSdAbstractDialogFactory()->CreateSdVectorizeDlg(
- parent == nullptr ? nullptr : parent->GetFrameWeld(),
+ Application::GetDefDialogParent(),
aEmptyBitmap,
getDocShell());
break;
@@ -536,9 +527,8 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID)
// CreateSdPhotoAlbumDialog(weld::Window* pWindow, SdDrawDocument* pDoc) override;
SdDrawDocument* pDrawDoc = getSdXImpressDocument()->GetDoc();
CPPUNIT_ASSERT(pDrawDoc);
- auto const parent = Application::GetDefDialogParent();
pRetval = getSdAbstractDialogFactory()->CreateSdPhotoAlbumDialog(
- parent == nullptr ? nullptr : parent->GetFrameWeld(),
+ Application::GetDefDialogParent(),
pDrawDoc);
break;
}
@@ -549,9 +539,8 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID)
CPPUNIT_ASSERT(pDrawDoc);
SdPage* pSdPage = pDrawDoc->GetSdPage(0, PageKind::Standard);
CPPUNIT_ASSERT(pSdPage);
- auto const parent = Application::GetDefDialogParent();
pRetval = getSdAbstractDialogFactory()->CreateMasterLayoutDialog(
- parent == nullptr ? nullptr : parent->GetFrameWeld(),
+ Application::GetDefDialogParent(),
pDrawDoc,
pSdPage);
break;
@@ -569,10 +558,9 @@ VclPtr<VclAbstractDialog> SdDialogsTest::createDialogByID(sal_uInt32 nID)
CPPUNIT_ASSERT(pDrawDoc);
SdPage* pSdPage = pDrawDoc->GetSdPage(0, PageKind::Standard);
CPPUNIT_ASSERT(pSdPage);
- auto const parent = Application::GetDefDialogParent();
pRetval = getSdAbstractDialogFactory()->CreateHeaderFooterDialog(
getViewShell(),
- parent == nullptr ? nullptr : parent->GetFrameWeld(),
+ Application::GetDefDialogParent(),
pDrawDoc,
pSdPage);
break;
diff --git a/svx/source/dialog/SafeModeUI.cxx b/svx/source/dialog/SafeModeUI.cxx
index 541057e0c846..d6ab6e5c86a3 100644
--- a/svx/source/dialog/SafeModeUI.cxx
+++ b/svx/source/dialog/SafeModeUI.cxx
@@ -62,8 +62,7 @@ css::uno::Any SAL_CALL SafeModeUI::dispatchWithReturnValue(const css::util::URL&
{
SolarMutexGuard aGuard;
css::uno::Any aRet;
- vcl::Window* pParentWindow = Application::GetDefDialogParent();
- SafeModeDialog aDialog(pParentWindow ? pParentWindow->GetFrameWeld() : nullptr);
+ SafeModeDialog aDialog(Application::GetDefDialogParent());
aDialog.run();
return aRet;
}
diff --git a/sw/source/ui/dbui/mmresultdialogs.cxx b/sw/source/ui/dbui/mmresultdialogs.cxx
index cc659cbebd74..ab41dcb4693c 100644
--- a/sw/source/ui/dbui/mmresultdialogs.cxx
+++ b/sw/source/ui/dbui/mmresultdialogs.cxx
@@ -1075,8 +1075,7 @@ IMPL_LINK_NOARG(SwMMResultEmailDialog, SendDocumentsHdl_Impl, weld::Button&, voi
xStore->storeToURL( sTargetTempURL, aValues );
//create the send dialog
- vcl::Window* pParent = Application::GetDefDialogParent();
- std::shared_ptr<SwSendMailDialog> xDlg = std::make_shared<SwSendMailDialog>(pParent ? pParent->GetFrameWeld() : nullptr, *xConfigItem);
+ std::shared_ptr<SwSendMailDialog> xDlg = std::make_shared<SwSendMailDialog>(Application::GetDefDialogParent(), *xConfigItem);
xDlg->StartSend(nEnd - nBegin);
weld::DialogController::runAsync(xDlg, [](sal_Int32 /*nResult*/){});
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx
index 1a8c1d0b8e1a..be8e600f026e 100644
--- a/vcl/source/app/svapp.cxx
+++ b/vcl/source/app/svapp.cxx
@@ -1376,7 +1376,7 @@ OUString Application::GetToolkitName()
return OUString();
}
-vcl::Window* Application::GetDefDialogParent()
+vcl::Window* Dialog::GetDefDialogParent()
{
ImplSVData* pSVData = ImplGetSVData();
// find some useful dialog parent
@@ -1433,6 +1433,12 @@ vcl::Window* Application::GetDefDialogParent()
return nullptr;
}
+weld::Window* Application::GetDefDialogParent()
+{
+ vcl::Window* pWindow = Dialog::GetDefDialogParent();
+ return pWindow ? pWindow->GetFrameWeld() : nullptr;
+}
+
DialogCancelMode Application::GetDialogCancelMode()
{
return ImplGetSVData()->maAppData.meDialogCancel;
diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx
index ca5298bef0e4..50717d9da058 100644
--- a/vcl/source/window/dialog.cxx
+++ b/vcl/source/window/dialog.cxx
@@ -406,7 +406,7 @@ void Dialog::PixelInvalidate(const tools::Rectangle* pRectangle)
vcl::Window* Dialog::GetDefaultParent(WinBits nStyle)
{
- vcl::Window* pParent = Application::GetDefDialogParent();
+ vcl::Window* pParent = Dialog::GetDefDialogParent();
if (!pParent && !(nStyle & WB_SYSTEMWINDOW))
pParent = ImplGetSVData()->maFrameData.mpAppWin;
diff --git a/vcl/unx/generic/print/genprnpsp.cxx b/vcl/unx/generic/print/genprnpsp.cxx
index bd511f6d9326..19ec3206287f 100644
--- a/vcl/unx/generic/print/genprnpsp.cxx
+++ b/vcl/unx/generic/print/genprnpsp.cxx
@@ -134,8 +134,7 @@ namespace
int QueryFaxNumber(OUString& rNumber)
{
- vcl::Window* pWin = Application::GetDefDialogParent();
- QueryString aQuery(pWin ? pWin->GetFrameWeld() : nullptr, VclResId(SV_PRINT_QUERYFAXNUMBER_TXT), rNumber);
+ QueryString aQuery(Application::GetDefDialogParent(), VclResId(SV_PRINT_QUERYFAXNUMBER_TXT), rNumber);
return aQuery.run();
}
}
diff --git a/vcl/unx/generic/printer/cupsmgr.cxx b/vcl/unx/generic/printer/cupsmgr.cxx
index 6ac997d14c10..5c7fb3013e73 100644
--- a/vcl/unx/generic/printer/cupsmgr.cxx
+++ b/vcl/unx/generic/printer/cupsmgr.cxx
@@ -737,8 +737,7 @@ namespace
{
bool bRet = false;
- vcl::Window* pWin = Application::GetDefDialogParent();
- RTSPWDialog aDialog(pWin ? pWin->GetFrameWeld() : nullptr, rServer, rUserName);
+ RTSPWDialog aDialog(Application::GetDefDialogParent(), rServer, rUserName);
if (aDialog.run() == RET_OK)
{
rUserName = aDialog.getUserName();
@@ -828,8 +827,7 @@ bool CUPSManager::endSpool( const OUString& rPrintername, const OUString& rJobTi
{
OString sPrinterName(OUStringToOString(rPrintername, RTL_TEXTENCODING_UTF8));
OString sUser = cupsUser();
- vcl::Window* pWin = Application::GetDefDialogParent();
- RTSPWDialog aDialog(pWin ? pWin->GetFrameWeld() : nullptr, sPrinterName, sUser);
+ RTSPWDialog aDialog(Application::GetDefDialogParent(), sPrinterName, sUser);
aDialog.SetDomainVisible(bDomain);
aDialog.SetUserVisible(bUser);
aDialog.SetPassVisible(bPass);
diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 29a16612c992..6122cff7c871 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -5901,8 +5901,11 @@ public:
virtual SystemEnvData get_system_data() const override
{
- assert(false && "nothing should call this impl, yet anyway, if ever");
- return SystemEnvData();
+ GtkSalFrame* pFrame = GtkSalFrame::getFromWindow(GTK_WIDGET(m_pWindow));
+ assert(pFrame && "nothing should call this impl, yet anyway, if ever, except on result of GetFrameWeld()");
+ const SystemEnvData* pEnvData = pFrame->GetSystemData();
+ assert(pEnvData);
+ return *pEnvData;
}
virtual Size get_size() const override
diff --git a/vcl/unx/gtk3_kde5/gtk3_kde5_filepicker_ipc.cxx b/vcl/unx/gtk3_kde5/gtk3_kde5_filepicker_ipc.cxx
index 6ffd51272dfd..c1491208977e 100644
--- a/vcl/unx/gtk3_kde5/gtk3_kde5_filepicker_ipc.cxx
+++ b/vcl/unx/gtk3_kde5/gtk3_kde5_filepicker_ipc.cxx
@@ -31,7 +31,7 @@
#include <vcl/svapp.hxx>
#include <vcl/sysdata.hxx>
-#include <vcl/syswin.hxx>
+#include <vcl/weld.hxx>
#include <osl/file.h>
#include <osl/process.h>
@@ -189,20 +189,17 @@ static gboolean ignoreDeleteEvent(GtkWidget* /*widget*/, GdkEvent* /*event*/,
std::function<void()> Gtk3KDE5FilePickerIpc::blockMainWindow()
{
- vcl::Window* pParentWin = Application::GetDefDialogParent();
+ weld::Window* pParentWin = Application::GetDefDialogParent();
if (!pParentWin)
return {};
- const SystemEnvData* pSysData = static_cast<SystemWindow*>(pParentWin)->GetSystemData();
- if (!pSysData)
- return {};
-
- sendCommand(Commands::SetWinId, pSysData->GetWindowHandle(pParentWin->ImplGetFrame()));
-
- auto* pMainWindow = static_cast<GtkWidget*>(pSysData->pWidget);
+ const SystemEnvData aSysData = pParentWin->get_system_data();
+ auto* pMainWindow = static_cast<GtkWidget*>(aSysData.pWidget);
if (!pMainWindow)
return {};
+ sendCommand(Commands::SetWinId, aSysData.GetWindowHandle(aSysData.pSalFrame));
+
SolarMutexGuard guard;
auto deleteEventSignalId = g_signal_lookup("delete_event", gtk_widget_get_type());
@@ -212,7 +209,7 @@ std::function<void()> Gtk3KDE5FilePickerIpc::blockMainWindow()
// block the GtkSalFrame delete_event handler
auto blockedHandler = g_signal_handler_find(
pMainWindow, static_cast<GSignalMatchType>(G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_DATA),
- deleteEventSignalId, 0, nullptr, nullptr, pSysData->pSalFrame);
+ deleteEventSignalId, 0, nullptr, nullptr, aSysData.pSalFrame);
g_signal_handler_block(pMainWindow, blockedHandler);
// prevent the window from being closed
More information about the Libreoffice-commits
mailing list