diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2018-11-02 15:38:46 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2018-11-02 16:51:29 +0100 |
commit | 4b0db40ab4a05a0940096654e8d60ed04f0cd2e6 (patch) | |
tree | ab91ce13fccbe99ceb96c75a4987e51d3e7ecd4a /vcl | |
parent | d562ee86414c8946c3b650d6e917db3f729325d3 (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.hxx | 1 | ||||
-rw-r--r-- | vcl/inc/salframe.hxx | 5 | ||||
-rw-r--r-- | vcl/inc/unx/gtk/gtkframe.hxx | 1 | ||||
-rw-r--r-- | vcl/inc/window.h | 4 | ||||
-rw-r--r-- | vcl/qt5/Qt5Frame.cxx | 2 | ||||
-rw-r--r-- | vcl/source/app/salvtables.cxx | 43 | ||||
-rw-r--r-- | vcl/source/window/builder.cxx | 14 | ||||
-rw-r--r-- | vcl/source/window/dialog.cxx | 203 | ||||
-rw-r--r-- | vcl/source/window/syswin.cxx | 4 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkframe.cxx | 7 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 101 |
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, ¤t_width, ¤t_height); - return Size(current_width, current_height); - } - - virtual Point get_position() const override - { - int current_x, current_y; - gtk_window_get_position(m_pWindow, ¤t_x, ¤t_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) |