summaryrefslogtreecommitdiff
path: root/framework
diff options
context:
space:
mode:
Diffstat (limited to 'framework')
-rw-r--r--framework/source/dispatch/dispatchprovider.cxx20
-rw-r--r--framework/source/layoutmanager/layoutmanager.cxx1
2 files changed, 20 insertions, 1 deletions
diff --git a/framework/source/dispatch/dispatchprovider.cxx b/framework/source/dispatch/dispatchprovider.cxx
index 051640fc3724..392e5574d82d 100644
--- a/framework/source/dispatch/dispatchprovider.cxx
+++ b/framework/source/dispatch/dispatchprovider.cxx
@@ -489,7 +489,25 @@ css::uno::Reference< css::frame::XDispatch > DispatchProvider::implts_queryFrame
)
{
// There exist a hard coded interception for special URLs.
- if (lcl_isCloseDispatch (aURL))
+ if (
+ (aURL.Complete.equalsAscii(".uno:CloseDoc" )) ||
+ (aURL.Complete.equalsAscii(".uno:CloseWin" ))
+ )
+ {
+ css::uno::Reference< css::frame::XDispatchProvider > xParent( xFrame->getCreator(), css::uno::UNO_QUERY );
+ // In case the frame is not a top one, is not based on system window and has a parent,
+ // the parent frame should to be queried for the correct dispatcher.
+ // See i93473
+ if (
+ !WindowHelper::isTopWindow(xFrame->getContainerWindow()) &&
+ !VCLUnoHelper::GetWindow(xFrame->getContainerWindow())->IsSystemWindow() &&
+ xParent.is()
+ )
+ xDispatcher = xParent->queryDispatch(aURL, SPECIALTARGET_SELF, 0);
+ else
+ xDispatcher = implts_getOrCreateDispatchHelper( E_CLOSEDISPATCHER, xFrame );
+ }
+ else if (aURL.Complete.equalsAscii(".uno:CloseFrame"))
xDispatcher = implts_getOrCreateDispatchHelper( E_CLOSEDISPATCHER, xFrame );
if ( ! xDispatcher.is())
diff --git a/framework/source/layoutmanager/layoutmanager.cxx b/framework/source/layoutmanager/layoutmanager.cxx
index 90fbd3d2356e..932dd7fd1019 100644
--- a/framework/source/layoutmanager/layoutmanager.cxx
+++ b/framework/source/layoutmanager/layoutmanager.cxx
@@ -3278,6 +3278,7 @@ void LayoutManager::implts_updateUIElementsVisibleState( sal_Bool bSetVisible )
WriteGuard aWriteLock( m_aLock );
m_aDockingArea = css::awt::Rectangle();
+ m_bMustDoLayout = sal_True;
aWriteLock.unlock();
}
catch ( Exception& )