diff options
Diffstat (limited to 'framework')
-rw-r--r-- | framework/source/services/frame.cxx | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/framework/source/services/frame.cxx b/framework/source/services/frame.cxx index 09e5104652f6..88de578a07ba 100644 --- a/framework/source/services/frame.cxx +++ b/framework/source/services/frame.cxx @@ -1947,7 +1947,18 @@ void SAL_CALL Frame::setLayoutManager(const css::uno::Reference<css::uno::XInter { checkDisposed(); SolarMutexGuard g; - m_xLayoutManager.set(p1, css::uno::UNO_QUERY); + + css::uno::Reference<css::frame::XLayoutManager2> xOldLayoutManager = m_xLayoutManager; + css::uno::Reference<css::frame::XLayoutManager2> xNewLayoutManager(p1, css::uno::UNO_QUERY); + + if (xOldLayoutManager != xNewLayoutManager) + { + m_xLayoutManager = xNewLayoutManager; + if (xOldLayoutManager.is()) + disableLayoutManager(xOldLayoutManager); + if (xNewLayoutManager.is()) + lcl_enableLayoutManager(xNewLayoutManager, this); + } } css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL Frame::getPropertySetInfo() |