summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embeddedobj/Library_embobj.mk1
-rw-r--r--embeddedobj/source/general/docholder.cxx15
-rw-r--r--embeddedobj/source/inc/commonembobj.hxx1
-rw-r--r--embeddedobj/source/msole/oleembed.cxx3
-rw-r--r--filter/source/msfilter/msdffimp.cxx8
-rw-r--r--include/sfx2/sfx.hrc2
-rw-r--r--sfx2/source/appl/app.src5
-rw-r--r--sw/source/core/unocore/unoframe.cxx7
8 files changed, 41 insertions, 1 deletions
diff --git a/embeddedobj/Library_embobj.mk b/embeddedobj/Library_embobj.mk
index 87c33c893d6f..dc0f88667be7 100644
--- a/embeddedobj/Library_embobj.mk
+++ b/embeddedobj/Library_embobj.mk
@@ -29,6 +29,7 @@ $(eval $(call gb_Library_use_libraries,embobj,\
svt \
vcl \
tl \
+ i18nlangtag \
))
$(eval $(call gb_Library_add_exception_objects,embobj,\
diff --git a/embeddedobj/source/general/docholder.cxx b/embeddedobj/source/general/docholder.cxx
index 1bef54e7741f..60ac61682ae1 100644
--- a/embeddedobj/source/general/docholder.cxx
+++ b/embeddedobj/source/general/docholder.cxx
@@ -19,6 +19,7 @@
#include <com/sun/star/embed/Aspects.hpp>
#include <com/sun/star/frame/TaskCreator.hpp>
+#include <com/sun/star/frame/XTitle.hpp>
#include <com/sun/star/frame/TerminationVetoException.hpp>
#include <com/sun/star/frame/XComponentLoader.hpp>
#include <com/sun/star/frame/XSynchronousFrameLoader.hpp>
@@ -65,6 +66,9 @@
#include <rtl/process.h>
#include <vcl/svapp.hxx>
#include <svtools/embedhlp.hxx>
+#include <tools/resmgr.hxx>
+#include <vcl/settings.hxx>
+#include <sfx2/sfx.hrc>
#include <comphelper/processfactory.hxx>
#include <comphelper/namedvaluecollection.hxx>
@@ -962,6 +966,17 @@ bool DocumentHolder::LoadDocToFrame( bool bInPlace )
::comphelper::NamedValueCollection aArgs;
aArgs.put( "Model", m_xComponent );
aArgs.put( "ReadOnly", m_bReadOnly );
+
+ // set document title to show in the title bar
+ css::uno::Reference< css::frame::XTitle > xModelTitle( xDoc, css::uno::UNO_QUERY );
+ if( xModelTitle.is() )
+ {
+ LanguageTag aLocale( Application::GetSettings().GetUILanguageTag() );
+ ResMgr* pResMgr = ResMgr::SearchCreateResMgr( "sfx", aLocale );
+ OUString nTitle = ResId( STR_EMBEDDED_TITLE, *pResMgr );
+ xModelTitle->setTitle( m_pEmbedObj->getContainerName() + nTitle );
+ }
+
if ( bInPlace )
aArgs.put( "PluginMode", sal_Int16(1) );
OUString sUrl;
diff --git a/embeddedobj/source/inc/commonembobj.hxx b/embeddedobj/source/inc/commonembobj.hxx
index 52624c291775..5e857b0a3331 100644
--- a/embeddedobj/source/inc/commonembobj.hxx
+++ b/embeddedobj/source/inc/commonembobj.hxx
@@ -248,6 +248,7 @@ public:
// not a real listener and should not be
void PostEvent_Impl( const OUString& aEventName );
+ OUString getContainerName() { return m_aContainerName; }
// XInterface
virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type& rType ) override ;
diff --git a/embeddedobj/source/msole/oleembed.cxx b/embeddedobj/source/msole/oleembed.cxx
index c3acbb687e8b..2a075c8da812 100644
--- a/embeddedobj/source/msole/oleembed.cxx
+++ b/embeddedobj/source/msole/oleembed.cxx
@@ -357,6 +357,9 @@ bool OleEmbeddedObject::TryToConvertToOOo( const uno::Reference< io::XStream >&
nStep = 4;
m_xWrappedObject.set( xEmbCreator->createInstanceInitFromEntry( m_xParentStorage, m_aEntryName, uno::Sequence< beans::PropertyValue >(), uno::Sequence< beans::PropertyValue >() ), uno::UNO_QUERY_THROW );
+ // remember parent document name to show in the title bar
+ m_xWrappedObject->setContainerName( m_aContainerName );
+
bResult = true; // the change is no more revertable
try
{
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index a3afce6202cd..6aef843a0c84 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -7131,6 +7131,10 @@ SdrOle2Obj* SvxMSDffManager::CreateSdrOLEFromStorage(
rVisArea, rBaseURL));
if ( xObj.is() )
{
+ // remember file name to use in the title bar
+ INetURLObject aURL(rBaseURL);
+ xObj->setContainerName(aURL.GetLastName(INetURLObject::DecodeMechanism::WithCharset));
+
svt::EmbeddedObjectRef aObj( xObj, nAspect );
// TODO/LATER: need MediaType
@@ -7193,6 +7197,10 @@ SdrOle2Obj* SvxMSDffManager::CreateSdrOLEFromStorage(
uno::Reference < embed::XEmbeddedObject > xObj = aCnt.GetEmbeddedObject( aDstStgName );
if( xObj.is() )
{
+ // remember file name to use in the title bar
+ INetURLObject aURL( rBaseURL );
+ xObj->setContainerName( aURL.GetLastName( INetURLObject::DecodeMechanism::WithCharset ) );
+
// the visual area must be retrieved from the metafile (object doesn't know it so far)
if ( nAspect != embed::Aspects::MSOLE_ICON )
diff --git a/include/sfx2/sfx.hrc b/include/sfx2/sfx.hrc
index c9de431bd10a..73b8583a8d3f 100644
--- a/include/sfx2/sfx.hrc
+++ b/include/sfx2/sfx.hrc
@@ -99,7 +99,7 @@
#define STR_ERRUNOEVENTBINDUNG (RID_SFX_START+119)
#define STR_SHARED (RID_SFX_START+120)
#define RID_XMLSEC_DOCUMENTSIGNED (RID_SFX_START+121)
-// Here is a gap, STR_PASSWORD was removed RID_SFX_START+122
+#define STR_EMBEDDED_TITLE (RID_SFX_START+122)
#define STR_PASSWD_EMPTY (RID_SFX_START+123)
#define STR_PASSWD_MIN_LEN (RID_SFX_START+124)
#define STR_NONCHECKEDOUT_DOCUMENT (RID_SFX_START+125)
diff --git a/sfx2/source/appl/app.src b/sfx2/source/appl/app.src
index 6c3bb53d2330..b792413365a1 100644
--- a/sfx2/source/appl/app.src
+++ b/sfx2/source/appl/app.src
@@ -293,6 +293,11 @@ String RID_XMLSEC_DOCUMENTSIGNED
Text [ en-US ] = " (Signed)" ;
};
+String STR_EMBEDDED_TITLE
+{
+ Text [ en-US ] = " (Embedded document)" ;
+};
+
String STR_STANDARD
{
Text [ en-US ] = "Standard" ;
diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx
index a10893f9a8c4..e666726b06dc 100644
--- a/sw/source/core/unocore/unoframe.cxx
+++ b/sw/source/core/unocore/unoframe.cxx
@@ -27,6 +27,7 @@
#include <com/sun/star/embed/XComponentSupplier.hpp>
#include <com/sun/star/embed/EmbedStates.hpp>
#include <com/sun/star/embed/Aspects.hpp>
+#include <com/sun/star/frame/XTitle.hpp>
#include <com/sun/star/graphic/XGraphicProvider.hpp>
#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
#include <o3tl/any.hxx>
@@ -2964,6 +2965,12 @@ void SwXFrame::attachToRange(const uno::Reference< text::XTextRange > & xTextRan
::svt::EmbeddedObjectRef xObjRef( xIPObj, m_nDrawAspect);
pFormat2 = pDoc->getIDocumentContentOperations().InsertEmbObject(
aPam, xObjRef, &aFrameSet );
+
+ // store main document name to show in the title bar
+ uno::Reference< frame::XTitle > xModelTitle( pDoc->GetDocShell()->GetModel(), css::uno::UNO_QUERY );
+ if( xModelTitle.is() )
+ xIPObj->setContainerName( xModelTitle->getTitle() );
+
assert(pFormat2 && "Doc->Insert(notxt) failed.");
pDoc->GetIDocumentUndoRedo().EndUndo(SwUndoId::INSERT, nullptr);