summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2018-11-02 15:38:46 +0100
committerStephan Bergmann <sbergman@redhat.com>2018-11-02 16:51:29 +0100
commit4b0db40ab4a05a0940096654e8d60ed04f0cd2e6 (patch)
treeab91ce13fccbe99ceb96c75a4987e51d3e7ecd4a /vcl
parentd562ee86414c8946c3b650d6e917db3f729325d3 (diff)
Revert "weld SwWordCountFloatDlg"
This reverts commit 26c375671aa362b2f59d84645784938677ae1719. Conflicts: vcl/qt5/Qt5Frame.cxx It caused null pointer dereference during UITest_writer_tests, as seen at <https://ci.libreoffice.org//job/lo_ubsan/1090/>: > /sfx2/source/appl/childwin.cxx:654:18: runtime error: member call on null pointer of type 'vcl::Window' > #0 0x2b97d4160fa3 in SfxChildWindow::SetWorkWindow_Impl(SfxWorkWindow*) /sfx2/source/appl/childwin.cxx:654:18 > #1 0x2b97d462ab86 in SfxWorkWindow::CreateChildWin_Impl(SfxChildWin_Impl*, bool) /sfx2/source/appl/workwin.cxx:1350:9 > #2 0x2b97d463e6bb in SfxWorkWindow::ToggleChildWindow_Impl(unsigned short, bool) /sfx2/source/appl/workwin.cxx:1837:21 > #3 0x2b97d6eae94d in SfxViewFrame::ToggleChildWindow(unsigned short) /sfx2/source/view/viewfrm.cxx:3080:9 > #4 0x2b987664316d in SwView::UpdateWordCount(SfxShell*, unsigned short) /sw/source/uibase/uiview/view1.cxx:212:9 > #5 0x2b9876126a5d in SwTextShell::Execute(SfxRequest&) /sw/source/uibase/shells/textsh1.cxx:1369:9 > #6 0x2b98760a2391 in SfxStubSwTextShellExecute(SfxShell*, SfxRequest&) /workdir/SdiTarget/sw/sdi/swslots.hxx:2974:1 > #7 0x2b97d49050f6 in SfxShell::CallExec(void (*)(SfxShell*, SfxRequest&), SfxRequest&) /include/sfx2/shell.hxx:207:35 > #8 0x2b97d48c27d0 in SfxDispatcher::Call_Impl(SfxShell&, SfxSlot const&, SfxRequest&, bool) /sfx2/source/control/dispatch.cxx:353:13 > #9 0x2b97d48de12d in SfxDispatcher::Execute_(SfxShell&, SfxSlot const&, SfxRequest&, SfxCallMode) /sfx2/source/control/dispatch.cxx:854:9 > #10 0x2b97d482ea34 in SfxBindings::Execute_Impl(SfxRequest&, SfxSlot const*, SfxShell*) /sfx2/source/control/bindings.cxx:1063:9 > #11 0x2b97d4e5cead in SfxDispatchController_Impl::dispatch(com::sun::star::util::URL const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) /sfx2/source/control/unoctitm.cxx:754:29 > #12 0x2b97d4e60b5e in SfxOfficeDispatch::dispatchWithNotification(com::sun::star::util::URL const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) /sfx2/source/control/unoctitm.cxx:239:9 > #13 0x2b97c6c10b19 in comphelper::dispatchCommand(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) /comphelper/source/misc/dispatchcommand.cxx:60:9 > #14 0x2b980472020c in UITest::executeCommand(rtl::OUString const&) /vcl/source/uitest/uitest.cxx:22:12 [...] Change-Id: I276684a5617bfec3803b195af59c51735bfa470a
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/qt5/Qt5Frame.hxx1
-rw-r--r--vcl/inc/salframe.hxx5
-rw-r--r--vcl/inc/unx/gtk/gtkframe.hxx1
-rw-r--r--vcl/inc/window.h4
-rw-r--r--vcl/qt5/Qt5Frame.cxx2
-rw-r--r--vcl/source/app/salvtables.cxx43
-rw-r--r--vcl/source/window/builder.cxx14
-rw-r--r--vcl/source/window/dialog.cxx203
-rw-r--r--vcl/source/window/syswin.cxx4
-rw-r--r--vcl/unx/gtk3/gtk3gtkframe.cxx7
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx101
11 files changed, 102 insertions, 283 deletions
diff --git a/vcl/inc/qt5/Qt5Frame.hxx b/vcl/inc/qt5/Qt5Frame.hxx
index 766044a7b6d5..5b049fabc4e5 100644
--- a/vcl/inc/qt5/Qt5Frame.hxx
+++ b/vcl/inc/qt5/Qt5Frame.hxx
@@ -147,7 +147,6 @@ public:
virtual void GetWorkArea(tools::Rectangle& rRect) override;
virtual SalFrame* GetParent() const override;
virtual void SetModal(bool bModal) override;
- virtual bool GetModal() const override;
virtual void SetWindowState(const SalFrameState* pState) override;
virtual bool GetWindowState(SalFrameState* pState) override;
virtual void ShowFullScreen(bool bFullScreen, sal_Int32 nDisplay) override;
diff --git a/vcl/inc/salframe.hxx b/vcl/inc/salframe.hxx
index b27b46d828c8..e2662d415fc2 100644
--- a/vcl/inc/salframe.hxx
+++ b/vcl/inc/salframe.hxx
@@ -240,11 +240,6 @@ public:
{
}
- virtual bool GetModal() const
- {
- return false;
- }
-
// return true to indicate tooltips are shown natively, false otherwise
virtual bool ShowTooltip(const OUString& /*rHelpText*/, const tools::Rectangle& /*rHelpArea*/)
{
diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx
index a77c7c61686b..7b2e78a5414e 100644
--- a/vcl/inc/unx/gtk/gtkframe.hxx
+++ b/vcl/inc/unx/gtk/gtkframe.hxx
@@ -537,7 +537,6 @@ public:
#if GTK_CHECK_VERSION(3,0,0)
virtual void PositionByToolkit(const tools::Rectangle& rRect, FloatWinPopupFlags nFlags) override;
virtual void SetModal(bool bModal) override;
- virtual bool GetModal() const override;
void HideTooltip();
virtual bool ShowTooltip(const OUString& rHelpText, const tools::Rectangle& rHelpArea) override;
virtual void* ShowPopover(const OUString& rHelpText, vcl::Window* pParent, const tools::Rectangle& rHelpArea, QuickHelpFlags nFlags) override;
diff --git a/vcl/inc/window.h b/vcl/inc/window.h
index 452a88e6f9f5..21448efd9496 100644
--- a/vcl/inc/window.h
+++ b/vcl/inc/window.h
@@ -40,7 +40,6 @@ class VirtualDevice;
class PhysicalFontCollection;
class ImplFontCache;
class VCLXWindow;
-class WindowStateData;
class SalFrame;
class SalObject;
enum class MouseEventModifiers;
@@ -415,9 +414,6 @@ bool ImplHandleMouseEvent( const VclPtr<vcl::Window>& xWindow, MouseNotifyEvent
sal_uInt16 nCode, MouseEventModifiers nMode );
void ImplHandleResize( vcl::Window* pWindow, long nNewWidth, long nNewHeight );
-VCL_DLLPUBLIC void ImplWindowStateFromStr(WindowStateData& rData, const OString& rStr);
-VCL_DLLPUBLIC OString ImplWindowStateToStr(const WindowStateData& rData);
-
#endif // INCLUDED_VCL_INC_WINDOW_H
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/qt5/Qt5Frame.cxx b/vcl/qt5/Qt5Frame.cxx
index b5680b654771..2628b0583b90 100644
--- a/vcl/qt5/Qt5Frame.cxx
+++ b/vcl/qt5/Qt5Frame.cxx
@@ -474,8 +474,6 @@ void Qt5Frame::SetModal(bool bModal)
}
}
-bool Qt5Frame::GetModal() const { return isWindow() && windowHandle()->isModal(); }
-
void Qt5Frame::SetWindowState(const SalFrameState* pState)
{
if (!isWindow() || !pState || isChild(true, false))
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index d3bbd9385470..485b404ac200 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -730,15 +730,11 @@ public:
virtual void set_modal(bool bModal) override
{
if (::Dialog* pDialog = dynamic_cast<::Dialog*>(m_xWindow.get()))
- return pDialog->SetModalInputMode(bModal);
- return m_xWindow->ImplGetFrame()->SetModal(bModal);
- }
-
- virtual bool get_modal() const override
- {
- if (const ::Dialog* pDialog = dynamic_cast<const ::Dialog*>(m_xWindow.get()))
- return pDialog->IsModalInputMode();
- return m_xWindow->ImplGetFrame()->GetModal();
+ {
+ pDialog->SetModalInputMode(bModal);
+ return;
+ }
+ m_xWindow->ImplGetFrame()->SetModal(bModal);
}
virtual void window_move(int x, int y) override
@@ -761,35 +757,6 @@ public:
return true;
}
- virtual Size get_size() const override
- {
- return m_xWindow->GetSizePixel();
- }
-
- virtual Point get_position() const override
- {
- return m_xWindow->GetPosPixel();
- }
-
- virtual bool get_resizable() const override
- {
- return m_xWindow->GetStyle() & WB_SIZEABLE;
- }
-
- virtual void set_window_state(const OString& rStr) override
- {
- SystemWindow* pSysWin = dynamic_cast<SystemWindow*>(m_xWindow.get());
- assert(pSysWin);
- pSysWin->SetWindowState(rStr);
- }
-
- virtual OString get_window_state(WindowStateMask nMask) const override
- {
- SystemWindow* pSysWin = dynamic_cast<SystemWindow*>(m_xWindow.get());
- assert(pSysWin);
- return pSysWin->GetWindowState(nMask);
- }
-
virtual SystemEnvData get_system_data() const override
{
return *m_xWindow->GetSystemData();
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 480c2f7b6c47..85ed792d5f39 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -831,18 +831,6 @@ namespace
return bResizable;
}
- bool extractModal(VclBuilder::stringmap &rMap)
- {
- bool bModal = false;
- VclBuilder::stringmap::iterator aFind = rMap.find(OString("modal"));
- if (aFind != rMap.end())
- {
- bModal = toBool(aFind->second);
- rMap.erase(aFind);
- }
- return bModal;
- }
-
bool extractDecorated(VclBuilder::stringmap &rMap)
{
bool bDecorated = true;
@@ -1533,8 +1521,6 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OString &
if (extractResizable(rMap))
nBits |= WB_SIZEABLE;
xWindow = VclPtr<Dialog>::Create(pParent, nBits, !pParent ? Dialog::InitFlag::NoParent : Dialog::InitFlag::Default);
- if (!m_bLegacy && !extractModal(rMap))
- xWindow->SetType(WindowType::MODELESSDIALOG);
}
else if (name == "GtkMessageDialog")
{
diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx
index 11a92bb9a8f4..53ebce93689b 100644
--- a/vcl/source/window/dialog.cxx
+++ b/vcl/source/window/dialog.cxx
@@ -819,7 +819,7 @@ bool Dialog::Close()
return bRet;
}
- if (IsInExecute() || mpDialogImpl->maEndCtx.isSet())
+ if ( IsInExecute() )
{
EndDialog();
mbInClose = false;
@@ -832,11 +832,11 @@ bool Dialog::Close()
}
}
-bool Dialog::ImplStartExecute()
+bool Dialog::ImplStartExecuteModal()
{
setDeferredProperties();
- if (IsInExecute() || mpDialogImpl->maEndCtx.isSet())
+ if ( mbInExecute || mpDialogImpl->maEndCtx.isSet() )
{
#ifdef DBG_UTIL
SAL_WARN( "vcl", "Dialog::StartExecuteModal() is called in Dialog::StartExecuteModal(): "
@@ -854,74 +854,68 @@ bool Dialog::ImplStartExecute()
SetLOKNotifier(pViewShell);
}
- const bool bModal = GetType() != WindowType::MODELESSDIALOG;
-
- if (bModal)
+ switch ( Application::GetDialogCancelMode() )
{
- switch ( Application::GetDialogCancelMode() )
+ case Application::DialogCancelMode::Off:
+ break;
+ case Application::DialogCancelMode::Silent:
+ if (GetLOKNotifier())
{
- case Application::DialogCancelMode::Off:
- break;
- case Application::DialogCancelMode::Silent:
- if (bModal && GetLOKNotifier())
- {
- // check if there's already some dialog being ::Execute()d
- const bool bDialogExecuting = std::any_of(pSVData->maWinData.mpExecuteDialogs.begin(),
- pSVData->maWinData.mpExecuteDialogs.end(),
- [](const Dialog* pDialog) {
- return pDialog->IsInSyncExecute();
- });
- if (!(bDialogExecuting && IsInSyncExecute()))
- break;
- else
- SAL_WARN("lok.dialog", "Dialog \"" << ImplGetDialogText(this) << "\" is being synchronously executed over an existing synchronously executing dialog.");
- }
-
- SAL_INFO(
- "vcl",
- "Dialog \"" << ImplGetDialogText(this)
- << "\"cancelled in silent mode");
- return false;
- default: // default cannot happen
- case Application::DialogCancelMode::Fatal:
- std::abort();
+ // check if there's already some dialog being ::Execute()d
+ const bool bDialogExecuting = std::any_of(pSVData->maWinData.mpExecuteDialogs.begin(),
+ pSVData->maWinData.mpExecuteDialogs.end(),
+ [](const Dialog* pDialog) {
+ return pDialog->IsInSyncExecute();
+ });
+ if (!(bDialogExecuting && IsInSyncExecute()))
+ break;
+ else
+ SAL_WARN("lok.dialog", "Dialog \"" << ImplGetDialogText(this) << "\" is being synchronously executed over an existing synchronously executing dialog.");
}
+ SAL_INFO(
+ "vcl",
+ "Dialog \"" << ImplGetDialogText(this)
+ << "\"cancelled in silent mode");
+ return false;
+ default: // default cannot happen
+ case Application::DialogCancelMode::Fatal:
+ std::abort();
+ }
+
#ifdef DBG_UTIL
- vcl::Window* pParent = GetParent();
- if ( pParent )
- {
- pParent = pParent->ImplGetFirstOverlapWindow();
- SAL_WARN_IF( !pParent->IsReallyVisible(), "vcl",
- "Dialog::StartExecuteModal() - Parent not visible" );
- SAL_WARN_IF( !pParent->IsInputEnabled(), "vcl",
- "Dialog::StartExecuteModal() - Parent input disabled, use another parent to ensure modality!" );
- SAL_WARN_IF( pParent->IsInModalMode(), "vcl",
- "Dialog::StartExecuteModal() - Parent already modally disabled, use another parent to ensure modality!" );
+ vcl::Window* pParent = GetParent();
+ if ( pParent )
+ {
+ pParent = pParent->ImplGetFirstOverlapWindow();
+ SAL_WARN_IF( !pParent->IsReallyVisible(), "vcl",
+ "Dialog::StartExecuteModal() - Parent not visible" );
+ SAL_WARN_IF( !pParent->IsInputEnabled(), "vcl",
+ "Dialog::StartExecuteModal() - Parent input disabled, use another parent to ensure modality!" );
+ SAL_WARN_IF( pParent->IsInModalMode(), "vcl",
+ "Dialog::StartExecuteModal() - Parent already modally disabled, use another parent to ensure modality!" );
- }
+ }
#endif
- // link all dialogs which are being executed
- pSVData->maWinData.mpExecuteDialogs.push_back(this);
+ // link all dialogs which are being executed
+ pSVData->maWinData.mpExecuteDialogs.push_back(this);
- // stop capturing, in order to have control over the dialog
- if ( pSVData->maWinData.mpTrackWin )
- pSVData->maWinData.mpTrackWin->EndTracking( TrackingEventFlags::Cancel );
- if ( pSVData->maWinData.mpCaptureWin )
- pSVData->maWinData.mpCaptureWin->ReleaseMouse();
- EnableInput();
+ // stop capturing, in order to have control over the dialog
+ if ( pSVData->maWinData.mpTrackWin )
+ pSVData->maWinData.mpTrackWin->EndTracking( TrackingEventFlags::Cancel );
+ if ( pSVData->maWinData.mpCaptureWin )
+ pSVData->maWinData.mpCaptureWin->ReleaseMouse();
+ EnableInput();
- if ( GetParent() )
- {
- NotifyEvent aNEvt( MouseNotifyEvent::EXECUTEDIALOG, this );
- GetParent()->CompatNotify( aNEvt );
- }
+ if ( GetParent() )
+ {
+ NotifyEvent aNEvt( MouseNotifyEvent::EXECUTEDIALOG, this );
+ GetParent()->CompatNotify( aNEvt );
}
-
mbInExecute = true;
// no real modality in LibreOfficeKit
- if (!bKitActive && bModal)
+ if (!bKitActive)
SetModalInputMode(true);
// FIXME: no layouting, workaround some clipping issues
@@ -933,17 +927,13 @@ bool Dialog::ImplStartExecute()
ShowFlags showFlags = bForceFocusAndToFront ? ShowFlags::ForegroundTask : ShowFlags::NONE;
Show(true, showFlags);
- if (bModal)
- pSVData->maAppData.mnModalMode++;
+ pSVData->maAppData.mnModalMode++;
css::uno::Reference<css::frame::XGlobalEventBroadcaster> xEventBroadcaster(css::frame::theGlobalEventBroadcaster::get(xContext), css::uno::UNO_QUERY_THROW);
css::document::DocumentEvent aObject;
aObject.EventName = "DialogExecute";
xEventBroadcaster->documentEventOccured(aObject);
- if (bModal)
- UITestLogger::getInstance().log("ModalDialogExecuted Id:" + get_id());
- else
- UITestLogger::getInstance().log("ModelessDialogExecuted Id:" + get_id());
+ UITestLogger::getInstance().log("ModalDialogExecuted Id:" + get_id());
if (bKitActive)
{
@@ -1025,7 +1015,7 @@ short Dialog::Execute()
mbInSyncExecute = false;
});
- if ( !ImplStartExecute() )
+ if ( !ImplStartExecuteModal() )
return 0;
// Yield util EndDialog is called or dialog gets destroyed
@@ -1064,8 +1054,7 @@ short Dialog::Execute()
// virtual
bool Dialog::StartExecuteAsync( VclAbstractDialog::AsyncContext &rCtx )
{
- const bool bModal = GetType() != WindowType::MODELESSDIALOG;
- if (!ImplStartExecute())
+ if ( !ImplStartExecuteModal() )
{
rCtx.mxOwner.disposeAndClear();
rCtx.mxOwnerDialog.reset();
@@ -1073,7 +1062,7 @@ bool Dialog::StartExecuteAsync( VclAbstractDialog::AsyncContext &rCtx )
}
mpDialogImpl->maEndCtx = rCtx;
- mpDialogImpl->mbStartedModal = bModal;
+ mpDialogImpl->mbStartedModal = true;
return true;
}
@@ -1092,60 +1081,47 @@ void Dialog::EndDialog( long nResult )
if ( !mbInExecute )
return;
- const bool bModal = GetType() != WindowType::MODELESSDIALOG;
+ SetModalInputMode(false);
- if (bModal)
- {
- SetModalInputMode(false);
+ RemoveFromDlgList();
- RemoveFromDlgList();
+ // set focus to previous modal dialogue if it is modal for
+ // the same frame parent (or NULL)
+ ImplSVData* pSVData = ImplGetSVData();
+ if (!pSVData->maWinData.mpExecuteDialogs.empty())
+ {
+ VclPtr<Dialog> pPrevious = pSVData->maWinData.mpExecuteDialogs.back();
- // set focus to previous modal dialogue if it is modal for
- // the same frame parent (or NULL)
- ImplSVData* pSVData = ImplGetSVData();
- if (!pSVData->maWinData.mpExecuteDialogs.empty())
+ vcl::Window* pFrameParent = ImplGetFrameWindow()->ImplGetParent();
+ vcl::Window* pPrevFrameParent = pPrevious->ImplGetFrameWindow()? pPrevious->ImplGetFrameWindow()->ImplGetParent(): nullptr;
+ if( ( !pFrameParent && !pPrevFrameParent ) ||
+ ( pFrameParent && pPrevFrameParent && pFrameParent->ImplGetFrame() == pPrevFrameParent->ImplGetFrame() )
+ )
{
- VclPtr<Dialog> pPrevious = pSVData->maWinData.mpExecuteDialogs.back();
-
- vcl::Window* pFrameParent = ImplGetFrameWindow()->ImplGetParent();
- vcl::Window* pPrevFrameParent = pPrevious->ImplGetFrameWindow()? pPrevious->ImplGetFrameWindow()->ImplGetParent(): nullptr;
- if( ( !pFrameParent && !pPrevFrameParent ) ||
- ( pFrameParent && pPrevFrameParent && pFrameParent->ImplGetFrame() == pPrevFrameParent->ImplGetFrame() )
- )
- {
- pPrevious->GrabFocus();
- }
+ pPrevious->GrabFocus();
}
}
Hide();
-
- if (bModal)
+ if ( GetParent() )
{
- if ( GetParent() )
- {
- NotifyEvent aNEvt( MouseNotifyEvent::ENDEXECUTEDIALOG, this );
- GetParent()->CompatNotify( aNEvt );
- }
+ NotifyEvent aNEvt( MouseNotifyEvent::ENDEXECUTEDIALOG, this );
+ GetParent()->CompatNotify( aNEvt );
}
mpDialogImpl->mnResult = nResult;
if ( mpDialogImpl->mbStartedModal )
- ImplEndExecuteModal();
-
- if (mpDialogImpl->maEndCtx.isSet())
- {
- mpDialogImpl->maEndCtx.maEndDialogFn(nResult);
- mpDialogImpl->maEndCtx.maEndDialogFn = nullptr;
- }
-
- if ( mpDialogImpl->mbStartedModal )
{
+ ImplEndExecuteModal();
+ if (mpDialogImpl->maEndCtx.isSet())
+ {
+ mpDialogImpl->maEndCtx.maEndDialogFn(nResult);
+ mpDialogImpl->maEndCtx.maEndDialogFn = nullptr;
+ }
mpDialogImpl->mbStartedModal = false;
mpDialogImpl->mnResult = -1;
}
-
mbInExecute = false;
// Destroy ourselves (if we have a context with VclPtr owner)
@@ -1498,18 +1474,15 @@ ModalDialog::ModalDialog( vcl::Window* pParent, const OUString& rID, const OUStr
{
}
-void Dialog::Activate()
+void ModelessDialog::Activate()
{
- if (GetType() == WindowType::MODELESSDIALOG)
- {
- css::uno::Reference< css::uno::XComponentContext > xContext(
- comphelper::getProcessComponentContext() );
- css::uno::Reference<css::frame::XGlobalEventBroadcaster> xEventBroadcaster(css::frame::theGlobalEventBroadcaster::get(xContext), css::uno::UNO_QUERY_THROW);
- css::document::DocumentEvent aObject;
- aObject.EventName = "ModelessDialogVisible";
- xEventBroadcaster->documentEventOccured(aObject);
- }
- SystemWindow::Activate();
+ css::uno::Reference< css::uno::XComponentContext > xContext(
+ comphelper::getProcessComponentContext() );
+ css::uno::Reference<css::frame::XGlobalEventBroadcaster> xEventBroadcaster(css::frame::theGlobalEventBroadcaster::get(xContext), css::uno::UNO_QUERY_THROW);
+ css::document::DocumentEvent aObject;
+ aObject.EventName = "ModelessDialogVisible";
+ xEventBroadcaster->documentEventOccured(aObject);
+ Dialog::Activate();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/window/syswin.cxx b/vcl/source/window/syswin.cxx
index 72f2eb5bf46d..734e1d0b946f 100644
--- a/vcl/source/window/syswin.cxx
+++ b/vcl/source/window/syswin.cxx
@@ -431,7 +431,7 @@ const Size& SystemWindow::GetMaxOutputSizePixel() const
return mpImplData->maMaxOutSize;
}
-void ImplWindowStateFromStr(WindowStateData& rData,
+static void ImplWindowStateFromStr(WindowStateData& rData,
const OString& rStr)
{
WindowStateMask nValidMask = WindowStateMask::NONE;
@@ -545,7 +545,7 @@ void ImplWindowStateFromStr(WindowStateData& rData,
rData.SetMask( nValidMask );
}
-OString ImplWindowStateToStr(const WindowStateData& rData)
+static OString ImplWindowStateToStr(const WindowStateData& rData)
{
const WindowStateMask nValidMask = rData.GetMask();
if ( nValidMask == WindowStateMask::NONE )
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx
index bb1cbf48b569..048f15c19207 100644
--- a/vcl/unx/gtk3/gtk3gtkframe.cxx
+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx
@@ -2467,13 +2467,6 @@ void GtkSalFrame::SetModal(bool bModal)
gtk_window_set_modal(GTK_WINDOW(m_pWindow), bModal);
}
-bool GtkSalFrame::GetModal() const
-{
- if (!m_pWindow)
- return false;
- return gtk_window_get_modal(GTK_WINDOW(m_pWindow));
-}
-
gboolean GtkSalFrame::signalTooltipQuery(GtkWidget*, gint /*x*/, gint /*y*/,
gboolean /*keyboard_mode*/, GtkTooltip *tooltip,
gpointer frame)
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 2d624e2d6197..09594386fa1d 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -36,9 +36,7 @@
#include <vcl/ImageTree.hxx>
#include <vcl/quickselectionengine.hxx>
#include <vcl/mnemonic.hxx>
-#include <vcl/syswin.hxx>
#include <vcl/weld.hxx>
-#include <window.h>
using namespace com::sun::star;
using namespace com::sun::star::uno;
@@ -2059,11 +2057,6 @@ public:
gtk_window_set_modal(m_pWindow, bModal);
}
- virtual bool get_modal() const override
- {
- return gtk_window_get_modal(m_pWindow);
- }
-
virtual void resize_to_request() override
{
gtk_window_resize(m_pWindow, 1, 1);
@@ -2090,87 +2083,6 @@ public:
return SystemEnvData();
}
- virtual Size get_size() const override
- {
- int current_width, current_height;
- gtk_window_get_size(m_pWindow, &current_width, &current_height);
- return Size(current_width, current_height);
- }
-
- virtual Point get_position() const override
- {
- int current_x, current_y;
- gtk_window_get_position(m_pWindow, &current_x, &current_y);
- return Point(current_x, current_y);
- }
-
- virtual bool get_resizable() const override
- {
- return gtk_window_get_resizable(m_pWindow);
- }
-
- virtual void set_window_state(const OString& rStr) override
- {
- WindowStateData aData;
- ImplWindowStateFromStr( aData, rStr );
-
- auto nMask = aData.GetMask();
- auto nState = aData.GetState() & WindowStateState::SystemMask;
-
- if (nMask & WindowStateMask::Width && nMask & WindowStateMask::Height)
- {
- gtk_window_set_default_size(m_pWindow, aData.GetWidth(), aData.GetHeight());
- }
- if (nMask & WindowStateMask::State)
- {
- if (nState & WindowStateState::Maximized)
- gtk_window_maximize(m_pWindow);
- else
- gtk_window_unmaximize(m_pWindow);
- }
- }
-
- virtual OString get_window_state(WindowStateMask nMask) const override
- {
- bool bPositioningAllowed = true;
-#if defined(GDK_WINDOWING_WAYLAND)
- // drop x/y when under wayland
- GdkDisplay *pDisplay = gtk_widget_get_display(m_pWidget);
- bPositioningAllowed = !GDK_IS_WAYLAND_DISPLAY(pDisplay);
-#endif
-
- WindowStateData aData;
- WindowStateMask nAvailable = WindowStateMask::State |
- WindowStateMask::Width | WindowStateMask::Height;
- if (bPositioningAllowed)
- nAvailable |= WindowStateMask::X | WindowStateMask::Y;
- aData.SetMask(nMask & nAvailable);
-
- if (nMask & WindowStateMask::State)
- {
- WindowStateState nState = WindowStateState::Normal;
- if (gtk_window_is_maximized(m_pWindow))
- nState |= WindowStateState::Maximized;
- aData.SetState(nState);
- }
-
- if (bPositioningAllowed && (nMask & (WindowStateMask::X | WindowStateMask::Y)))
- {
- auto aPos = get_position();
- aData.SetX(aPos.X());
- aData.SetY(aPos.Y());
- }
-
- if (nMask & (WindowStateMask::Width | WindowStateMask::Height))
- {
- auto aSize = get_size();
- aData.SetWidth(aSize.Width());
- aData.SetHeight(aSize.Height());
- }
-
- return ImplWindowStateToStr(aData);
- }
-
virtual ~GtkInstanceWindow() override
{
if (m_xWindow.is())
@@ -2320,7 +2232,11 @@ public:
m_xDialogController = rDialogController;
m_aFunc = func;
- show();
+ if (!gtk_widget_get_visible(m_pWidget))
+ {
+ sort_native_button_order(GTK_BOX(gtk_dialog_get_action_area(m_pDialog)));
+ gtk_widget_show(m_pWidget);
+ }
m_nResponseSignalId = g_signal_connect(m_pDialog, "response", G_CALLBACK(signalAsyncResponse), this);
@@ -2359,11 +2275,8 @@ public:
virtual void show() override
{
- if (!gtk_widget_get_visible(m_pWidget))
- {
- sort_native_button_order(GTK_BOX(gtk_dialog_get_action_area(m_pDialog)));
- gtk_widget_show(m_pWidget);
- }
+ sort_native_button_order(GTK_BOX(gtk_dialog_get_action_area(m_pDialog)));
+ gtk_widget_show(m_pWidget);
}
static int VclToGtk(int nResponse)