summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/svtools/toolbarmenu.hxx3
-rw-r--r--include/vcl/dockwin.hxx11
-rw-r--r--sc/source/ui/cctrl/checklistmenu.cxx13
-rw-r--r--sc/source/ui/inc/checklistmenu.hxx3
-rw-r--r--svtools/source/control/toolbarmenu.cxx12
-rw-r--r--vcl/source/control/calendar.cxx13
-rw-r--r--vcl/source/window/dockwin.cxx20
7 files changed, 46 insertions, 29 deletions
diff --git a/include/svtools/toolbarmenu.hxx b/include/svtools/toolbarmenu.hxx
index a9b0a9f5415c..e68043b34ed5 100644
--- a/include/svtools/toolbarmenu.hxx
+++ b/include/svtools/toolbarmenu.hxx
@@ -82,10 +82,9 @@ public:
void unsetPopover();
};
-class SVT_DLLPUBLIC InterimToolbarPopup final : public DockingWindow
+class SVT_DLLPUBLIC InterimToolbarPopup final : public InterimDockingWindow
{
private:
- VclPtr<vcl::Window> m_xBox;
css::uno::Reference<css::frame::XFrame> m_xFrame;
std::unique_ptr<weld::Builder> m_xBuilder;
std::unique_ptr<weld::Container> m_xContainer;
diff --git a/include/vcl/dockwin.hxx b/include/vcl/dockwin.hxx
index b52091f0c642..390c96267f0b 100644
--- a/include/vcl/dockwin.hxx
+++ b/include/vcl/dockwin.hxx
@@ -378,6 +378,17 @@ inline void DockingWindow::SetIdleDebugName( const char *pDebugName )
maLayoutIdle.SetDebugName( pDebugName );
}
+class VCL_DLLPUBLIC InterimDockingWindow : public DockingWindow
+{
+protected:
+ VclPtr<vcl::Window> m_xBox;
+public:
+ InterimDockingWindow(vcl::Window* pParent,
+ const css::uno::Reference<css::frame::XFrame> &rFrame = css::uno::Reference<css::frame::XFrame>(),
+ bool bTearable = false);
+ virtual ~InterimDockingWindow() override;
+ virtual void dispose() override;
+};
#endif // INCLUDED_VCL_DOCKWIN_HXX
diff --git a/sc/source/ui/cctrl/checklistmenu.cxx b/sc/source/ui/cctrl/checklistmenu.cxx
index 9dd2e5a8c0c9..b2da89bb7717 100644
--- a/sc/source/ui/cctrl/checklistmenu.cxx
+++ b/sc/source/ui/cctrl/checklistmenu.cxx
@@ -21,7 +21,6 @@
#include <globstr.hrc>
#include <scresid.hxx>
-#include <vcl/builder.hxx>
#include <vcl/decoview.hxx>
#include <vcl/event.hxx>
#include <vcl/dockwin.hxx>
@@ -568,14 +567,13 @@ ScCheckListMenuControl::~ScCheckListMenuControl()
ScCheckListMenuWindow::ScCheckListMenuWindow(vcl::Window* pParent, ScDocument* pDoc, bool bCanHaveSubMenu,
bool bTreeMode, int nWidth, ScCheckListMenuWindow* pParentMenu,
vcl::ILibreOfficeKitNotifier* pNotifier)
- : DockingWindow(pParent, "InterimDockParent", "vcl/ui/interimdockparent.ui")
+ : InterimDockingWindow(pParent)
, mxParentMenu(pParentMenu)
- , mxBox(m_pUIBuilder->get("box"))
{
if (pNotifier)
SetLOKNotifier(pNotifier);
setDeferredProperties();
- mxControl.reset(new ScCheckListMenuControl(this, mxBox.get(), pDoc, bCanHaveSubMenu, bTreeMode, nWidth));
+ mxControl.reset(new ScCheckListMenuControl(this, m_xBox.get(), pDoc, bCanHaveSubMenu, bTreeMode, nWidth));
SetBackground(Application::GetSettings().GetStyleSettings().GetMenuColor());
set_id("check_list_menu");
}
@@ -588,7 +586,7 @@ bool ScCheckListMenuWindow::EventNotify(NotifyEvent& rNEvt)
rMenuControl.queueCloseSubMenu();
rMenuControl.clearSelectedMenuItem();
}
- return DockingWindow::EventNotify(rNEvt);
+ return InterimDockingWindow::EventNotify(rNEvt);
}
ScCheckListMenuWindow::~ScCheckListMenuWindow()
@@ -599,14 +597,13 @@ ScCheckListMenuWindow::~ScCheckListMenuWindow()
void ScCheckListMenuWindow::dispose()
{
mxControl.reset();
- mxBox.disposeAndClear();
mxParentMenu.clear();
- DockingWindow::dispose();
+ InterimDockingWindow::dispose();
}
void ScCheckListMenuWindow::GetFocus()
{
- DockingWindow::GetFocus();
+ InterimDockingWindow::GetFocus();
if (!mxControl)
return;
mxControl->GrabFocus();
diff --git a/sc/source/ui/inc/checklistmenu.hxx b/sc/source/ui/inc/checklistmenu.hxx
index 602d6d86109d..a00e1447557c 100644
--- a/sc/source/ui/inc/checklistmenu.hxx
+++ b/sc/source/ui/inc/checklistmenu.hxx
@@ -297,7 +297,7 @@ private:
* This class implements a popup window for field button, for quick access
* of hide-item list, and possibly more stuff related to field options.
*/
-class ScCheckListMenuWindow : public DockingWindow
+class ScCheckListMenuWindow : public InterimDockingWindow
{
public:
explicit ScCheckListMenuWindow(vcl::Window* pParent, ScDocument* pDoc,
@@ -315,7 +315,6 @@ public:
private:
VclPtr<ScCheckListMenuWindow> mxParentMenu;
- VclPtr<vcl::Window> mxBox;
std::unique_ptr<ScCheckListMenuControl, o3tl::default_delete<ScCheckListMenuControl>> mxControl;
};
diff --git a/svtools/source/control/toolbarmenu.cxx b/svtools/source/control/toolbarmenu.cxx
index 802321bb12c6..d7336caddb67 100644
--- a/svtools/source/control/toolbarmenu.cxx
+++ b/svtools/source/control/toolbarmenu.cxx
@@ -21,7 +21,6 @@
#include <comphelper/processfactory.hxx>
#include <osl/diagnose.h>
-#include <vcl/builder.hxx>
#include <vcl/taskpanelist.hxx>
#include <vcl/svapp.hxx>
@@ -172,11 +171,7 @@ IMPL_LINK_NOARG(ToolbarPopupContainer, FocusHdl, weld::Widget&, void)
InterimToolbarPopup::InterimToolbarPopup(const css::uno::Reference<css::frame::XFrame>& rFrame, vcl::Window* pParent,
std::unique_ptr<WeldToolbarPopup> xPopup, bool bTearable)
- : DockingWindow(pParent,
- !bTearable ? OString("InterimDockParent") : OString("InterimTearableParent"),
- !bTearable ? OUString("vcl/ui/interimdockparent.ui") : OUString("vcl/ui/interimtearableparent.ui"),
- rFrame)
- , m_xBox(m_pUIBuilder->get("box"))
+ : InterimDockingWindow(pParent, rFrame, bTearable)
, m_xFrame(rFrame)
, m_xBuilder(Application::CreateInterimBuilder(m_xBox.get(), "svt/ui/interimparent.ui", false))
, m_xContainer(m_xBuilder->weld_container("container"))
@@ -192,7 +187,7 @@ InterimToolbarPopup::InterimToolbarPopup(const css::uno::Reference<css::frame::X
void InterimToolbarPopup::GetFocus()
{
- DockingWindow::GetFocus();
+ InterimDockingWindow::GetFocus();
if (!m_xPopup)
return;
m_xPopup->GrabFocus();
@@ -216,9 +211,8 @@ void InterimToolbarPopup::dispose()
m_xPopup.reset();
m_xContainer.reset();
m_xBuilder.reset();
- m_xBox.clear();
m_xFrame.clear();
- DockingWindow::dispose();
+ InterimDockingWindow::dispose();
}
InterimToolbarPopup::~InterimToolbarPopup()
diff --git a/vcl/source/control/calendar.cxx b/vcl/source/control/calendar.cxx
index 1d714e914e56..e35dc353d442 100644
--- a/vcl/source/control/calendar.cxx
+++ b/vcl/source/control/calendar.cxx
@@ -1546,23 +1546,21 @@ namespace
};
}
-struct ImplCFieldFloatWin : public DockingWindow
+struct ImplCFieldFloatWin : public InterimDockingWindow
{
explicit ImplCFieldFloatWin(vcl::Window* pParent);
virtual void dispose() override;
virtual ~ImplCFieldFloatWin() override;
virtual void GetFocus() override;
- VclPtr<vcl::Window> mxBox;
std::unique_ptr<ImplCFieldFloat> mxWidget;
};
ImplCFieldFloatWin::ImplCFieldFloatWin(vcl::Window* pParent)
- : DockingWindow(pParent, "InterimDockParent", "vcl/ui/interimdockparent.ui")
- , mxBox(m_pUIBuilder->get("box"))
+ : InterimDockingWindow(pParent)
{
setDeferredProperties();
- mxWidget.reset(new ImplCFieldFloat(mxBox.get()));
+ mxWidget.reset(new ImplCFieldFloat(m_xBox.get()));
}
ImplCFieldFloatWin::~ImplCFieldFloatWin()
@@ -1573,13 +1571,12 @@ ImplCFieldFloatWin::~ImplCFieldFloatWin()
void ImplCFieldFloatWin::dispose()
{
mxWidget.reset();
- mxBox.disposeAndClear();
- DockingWindow::dispose();
+ InterimDockingWindow::dispose();
}
void ImplCFieldFloatWin::GetFocus()
{
- DockingWindow::GetFocus();
+ InterimDockingWindow::GetFocus();
if (!mxWidget)
return;
mxWidget->GrabFocus();
diff --git a/vcl/source/window/dockwin.cxx b/vcl/source/window/dockwin.cxx
index 42a42889a6c6..b2c45fd6c4da 100644
--- a/vcl/source/window/dockwin.cxx
+++ b/vcl/source/window/dockwin.cxx
@@ -1058,4 +1058,24 @@ IMPL_LINK_NOARG(DockingWindow, ImplHandleLayoutTimerHdl, Timer*, void)
setPosSizeOnContainee();
}
+InterimDockingWindow::InterimDockingWindow(vcl::Window* pParent, const css::uno::Reference<css::frame::XFrame>& rFrame, bool bTearable)
+ : DockingWindow(pParent,
+ !bTearable ? OString("InterimDockParent") : OString("InterimTearableParent"),
+ !bTearable ? OUString("vcl/ui/interimdockparent.ui") : OUString("vcl/ui/interimtearableparent.ui"),
+ rFrame)
+ , m_xBox(m_pUIBuilder->get("box"))
+{
+}
+
+InterimDockingWindow::~InterimDockingWindow()
+{
+ disposeOnce();
+}
+
+void InterimDockingWindow::dispose()
+{
+ m_xBox.clear();
+ DockingWindow::dispose();
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */