diff options
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/app/svmain.cxx | 3 | ||||
-rw-r--r-- | vcl/source/window/floatwin.cxx | 2 | ||||
-rw-r--r-- | vcl/source/window/window.cxx | 8 |
3 files changed, 10 insertions, 3 deletions
diff --git a/vcl/source/app/svmain.cxx b/vcl/source/app/svmain.cxx index f3bcac658e1a..3fd6d86b1bc0 100644 --- a/vcl/source/app/svmain.cxx +++ b/vcl/source/app/svmain.cxx @@ -416,6 +416,9 @@ VCLUnoWrapperDeleter::disposing(lang::EventObject const& /* rSource */) void DeInitVCL() { + // The LOK Windows map container should be empty + assert(vcl::Window::IsLOKWindowsEmpty()); + //rhbz#1444437, when using LibreOffice like a library you can't realistically //tear everything down and recreate them on the next call, there's too many //(c++) singletons that point to stuff that gets deleted during shutdown diff --git a/vcl/source/window/floatwin.cxx b/vcl/source/window/floatwin.cxx index 72dff4985c34..8257aeea7d7d 100644 --- a/vcl/source/window/floatwin.cxx +++ b/vcl/source/window/floatwin.cxx @@ -202,6 +202,8 @@ FloatingWindow::~FloatingWindow() void FloatingWindow::dispose() { + ReleaseLOKNotifier(); + if (mpImplData) { if( mbPopupModeCanceled ) diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index 20187261ee22..6d5a73fc8f62 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -3178,9 +3178,6 @@ namespace { LOKWindowsMap& GetLOKWindowsMap() { - // never use this in the desktop case - assert(comphelper::LibreOfficeKit::isActive()); - // Map to remember the LOKWindowId <-> Window binding. static std::unique_ptr<LOKWindowsMap> s_pLOKWindowsMap; @@ -3225,6 +3222,11 @@ VclPtr<Window> Window::FindLOKWindow(vcl::LOKWindowId nWindowId) return VclPtr<Window>(); } +bool Window::IsLOKWindowsEmpty() +{ + return GetLOKWindowsMap().empty(); +} + void Window::ReleaseLOKNotifier() { // unregister the LOK window binding |