[ooo-build-commit] Branch 'ooo/master' - 3 commits - desktop/win32 embeddedobj/source fpicker/source officecfg/registry sfx2/inc sfx2/source shell/source svx/inc svx/source ucb/source uui/source

Jan Holesovsky kendy at kemper.freedesktop.org
Tue Jun 16 17:51:32 PDT 2009


 desktop/win32/source/setup/makefile.mk                     |    2 
 embeddedobj/source/msole/makefile.mk                       |    8 
 embeddedobj/source/msole/olecomponent.cxx                  |  152 +++++-
 embeddedobj/source/msole/platform.h                        |   11 
 fpicker/source/win32/filepicker/makefile.mk                |    3 
 officecfg/registry/schema/org/openoffice/Office/Common.xcs |   10 
 sfx2/inc/sfx2/docfile.hxx                                  |   90 ---
 sfx2/inc/sfx2/objsh.hxx                                    |    5 
 sfx2/inc/sfx2/sfxhtml.hxx                                  |   22 
 sfx2/source/bastyp/sfxhtml.cxx                             |  222 ---------
 sfx2/source/control/dispatch.cxx                           |   18 
 sfx2/source/doc/docfile.cxx                                |  306 +++++++------
 sfx2/source/doc/doctemplates.cxx                           |   11 
 sfx2/source/doc/objmisc.cxx                                |  103 ++++
 sfx2/source/doc/objserv.cxx                                |   17 
 sfx2/source/doc/objstor.cxx                                |  108 +++-
 sfx2/source/doc/plugin.cxx                                 |    2 
 sfx2/source/doc/sfxbasemodel.cxx                           |   77 ++-
 sfx2/source/inc/objshimp.hxx                               |    3 
 shell/source/win32/shlxthandler/res/makefile.mk            |    2 
 svx/inc/svx/svdoole2.hxx                                   |    2 
 svx/source/svdraw/svdetc.cxx                               |   18 
 svx/source/svdraw/svdoole2.cxx                             |   58 +-
 ucb/source/ucp/file/bc.cxx                                 |   10 
 ucb/source/ucp/file/filcmd.cxx                             |    4 
 ucb/source/ucp/file/filglob.cxx                            |    3 
 ucb/source/ucp/file/filinpstr.cxx                          |   14 
 ucb/source/ucp/file/filprp.cxx                             |    2 
 ucb/source/ucp/file/filrow.cxx                             |   38 -
 ucb/source/ucp/file/filrset.cxx                            |   22 
 ucb/source/ucp/file/filstr.cxx                             |   20 
 ucb/source/ucp/file/filtask.cxx                            |    2 
 ucb/source/ucp/file/prov.cxx                               |    8 
 ucb/source/ucp/file/shell.cxx                              |   16 
 uui/source/passworddlg.src                                 |   47 +
 35 files changed, 753 insertions(+), 683 deletions(-)

New commits:
commit bf8ab3c3b687847bda6aa7065db4c02d7fd71933
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Tue Jun 16 18:11:49 2009 +0000

    CWS-TOOLING: integrate CWS ause102
    2009-06-16 19:22:59 +0200 hjs  r273039 : #i102607# don't kill mingw
    2009-06-12 15:17:22 +0200 ihi  r272921 : #i102607# add path before calling l10n tool
    2009-06-11 14:25:20 +0200 hjs  r272873 : #i102607# on EPM=internal call binary with full path
    2009-06-10 13:35:48 +0200 hjs  r272807 : #i102607# remove solver PATH entry from OOo env.
    2009-06-10 12:10:44 +0200 hjs  r272802 : #i102635# correct dependencies for all
    2009-06-10 11:58:53 +0200 hjs  r272801 : #i102607# call tools from solver with absolute path

diff --git a/desktop/win32/source/setup/makefile.mk b/desktop/win32/source/setup/makefile.mk
index 1453e89..d26c9c9 100644
--- a/desktop/win32/source/setup/makefile.mk
+++ b/desktop/win32/source/setup/makefile.mk
@@ -91,5 +91,5 @@ APP1NOSVRES=	$(RES)$/$(TARGET).res
 .INCLUDE :  target.mk
 
 $(RCFILES) : $(ULFDIR)$/setup.ulf makefile.mk rcfooter.txt rcheader.txt rctmpl.txt
-    $(WRAPCMD) lngconvex.exe -ulf $(ULFDIR)$/setup.ulf -rc $(RCFILES) -rct rctmpl.txt -rch rcheader.txt -rcf rcfooter.txt
+    $(LNGCONVEX) -ulf $(ULFDIR)$/setup.ulf -rc $(RCFILES) -rct rctmpl.txt -rch rcheader.txt -rcf rcfooter.txt
 
diff --git a/shell/source/win32/shlxthandler/res/makefile.mk b/shell/source/win32/shlxthandler/res/makefile.mk
index eaf1471..0889350 100644
--- a/shell/source/win32/shlxthandler/res/makefile.mk
+++ b/shell/source/win32/shlxthandler/res/makefile.mk
@@ -62,5 +62,5 @@ ULFDIR:=.
 # using lngconvex.exe 
 
 $(RCFILES) : $(ULFDIR)$/shlxthdl.ulf makefile.mk rcfooter.txt rcheader.txt rctmpl.txt
-    $(WRAPCMD) $(BIN)$/lngconvex.exe -ulf $(ULFDIR)$/shlxthdl.ulf -rc $(RES)$/shlxthdl.rc -rct rctmpl.txt -rch rcheader.txt -rcf rcfooter.txt
+    $(subst,$(SOLARBINDIR)$/lngconvex,$(BIN)$/lngconvex $(LNGCONVEX)) -ulf $(ULFDIR)$/shlxthdl.ulf -rc $(RES)$/shlxthdl.rc -rct rctmpl.txt -rch rcheader.txt -rcf rcfooter.txt
     
commit 5646785b01aea9b91b7d2029c4306e5cf78aa589
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Tue Jun 16 17:37:30 2009 +0000

    CWS-TOOLING: integrate CWS mingwport20
    2009-06-13 05:03:46 +0200 tono  r272946 : i102723: Set WINVER abd _WIN32_IE to 0x500 in mingw build

diff --git a/fpicker/source/win32/filepicker/makefile.mk b/fpicker/source/win32/filepicker/makefile.mk
index de9ee56..c23c081 100644
--- a/fpicker/source/win32/filepicker/makefile.mk
+++ b/fpicker/source/win32/filepicker/makefile.mk
@@ -48,9 +48,6 @@ CDEFS+=-DUNICODE
 #CDEFS+=-DWIN32_LEAN_AND_MEAN
 #CDEFS+=-DWIN32
 
-.IF "$(COM)"=="GCC"
-CDEFS+=-UWINVER -DWINVER=0x500
-.ENDIF
 
 # --- Resources ----------------------------------------------------
 
commit 800e3ca6d8fee95ce34b950cc70878c8bfb13a5c
Author: Ivo Hinkelmann <ihi at openoffice.org>
Date:   Tue Jun 16 16:15:54 2009 +0000

    CWS-TOOLING: integrate CWS fwk103
    2009-05-26 12:44:25 +0200 mst  r272292 : #i100727#
    - svtools/inc/svtools/parhtml.hxx, svtools/source/svhtml/parhtml.cxx:
      + fix warning: rename method to prevent overloading
    2009-05-19 13:42:31 +0200 mav  r272075 : #i101356# add comment
    2009-05-19 10:56:24 +0200 mav  r272062 : #i101356# register the singleton correctly
    2009-05-19 10:25:42 +0200 mav  r272060 : #i101356# register the singleton correctly
    2009-05-18 12:48:48 +0200 mav  r272013 : #i91306# fix the typo
    2009-05-14 08:50:06 +0200 mav  r271871 : #i101356# reduce the amount of macros
    2009-05-13 13:26:08 +0200 mav  r271858 : #i101356# reduce the amount of macros
    2009-05-13 11:29:16 +0200 mav  r271849 : #i101356# reduce the amount of macros
    2009-05-12 12:09:42 +0200 mav  r271815 : #i101356# allow to generate a small log if a document can not be stored
    2009-05-12 12:03:20 +0200 mav  r271814 : #i101356# allow to generate a small log if a document can not be stored
    2009-05-12 11:58:48 +0200 mav  r271813 : #i101356# allow to generate a small log if a document can not be stored
    2009-05-12 11:53:05 +0200 mav  r271812 : #i101356# allow to generate a small log if a document can not be stored
    2009-05-12 11:48:36 +0200 mav  r271810 : #i101356# allow to generate a small log if a document can not be stored
    2009-05-12 11:43:45 +0200 mav  r271809 : #i101356# allow to generate a small log if a document can not be stored
    2009-05-12 11:39:38 +0200 mav  r271808 : #i101356# allow to generate a small log if a document can not be stored
    2009-05-12 11:37:38 +0200 mav  r271806 : #i101356# allow to generate a small log if a document can not be stored
    2009-05-12 11:33:58 +0200 mav  r271805 : #i101356# allow to generate a small log if a document can not be stored
    2009-05-12 11:30:01 +0200 mav  r271804 : #i101356# allow to generate a small log if a document can not be stored
    2009-05-06 17:43:38 +0200 mst  r271607 : #i100727#
    - svtools/source/svhtml/parhtml.cxx:
      + adapt code to renaming of HTML constants (sb107)
    2009-05-05 11:14:18 +0200 mav  r271507 : #i101222# avoid warning
    2009-05-05 10:27:23 +0200 mav  r271505 : #i101426# send the modified() notification only when the document can be modified
    2009-05-05 10:25:07 +0200 mav  r271504 : #i101426# send the modified() notification only when the document is modified
    2009-05-05 08:42:48 +0200 mav  r271497 : CWS-TOOLING: rebase CWS fwk103 to trunk at 271427 (milestone: DEV300:m47)
    2009-04-30 13:32:11 +0200 mav  r271412 : #i100518# check the template folders quietly
    2009-04-29 20:04:25 +0200 mst  r271393 : - sw/source/filter/html/swhtml.cxx:
      + fix wrong initialization order in constructor
    2009-04-28 12:28:46 +0200 mav  r271319 : #i99142# set the error correctly
    2009-04-28 08:44:48 +0200 mav  r271305 : #i99050# clear hidden flag if necessary
    2009-04-28 08:40:10 +0200 mav  r271304 : #i99050# avoid crash
    2009-04-22 07:40:11 +0200 mav  r271056 : #i101093# lets not affect the performance
    2009-04-15 09:30:47 +0200 cd  r270820 : #i99771# Fix warnings for gcc 4.4
    2009-04-15 09:19:52 +0200 cd  r270819 : #i99771# Fix warnings for gcc 4.4
    2009-04-15 08:42:34 +0200 cd  r270817 : #i99771# Fix warnings for gcc 4.4
    2009-04-14 14:31:01 +0200 mav  r270768 : #i99493# fix typo
    2009-04-01 12:45:43 +0200 mst  r270317 : fix #i100727#
    - svtools/inc/svtools/svparser.hxx, svtools/source/svrtf/svparser.cxx,
      sfx2/inc/sfx2/docfile.hxx, sfx2/source/doc/{objmisc.cxx,docfile.cxx}:
      + move SvKeyValue stuff from sfx2 to svtools
    - svtools/inc/svtools/parhtml.hxx, svtools/source/svhtml/parhtml.cxx,
      sfx2/inc/sfx2/sfxhtml.hxx, sfx2/source/bastyp/sfxhtml.cxx:
      + move ParseMetaOptions() and GetEncodingByMIME() from SfxHTMLParser (sfx2)
        to HTMLParser (svtools)
      + make HTMLParser::ParseMetaOptions() a virtual function
      + HTMLParser::ParseMetaOptions() calls GetExtendedCompatibilityTextEncoding()
      + new template method HTMLParser::AddMetaUserDefined()
    - svtools/source/svhtml/makefile.mk:
      + enable exceptions for parhtml.cxx
    - dbaccess/source/ui/misc/HtmlReader.cxx,
      sc/source/filter/html/htmlpars.cxx:
      + remove encoding related code duplication
    - sw/source/filter/html/{swhtml{.hxx,.cxx},htmlfld.cxx}:
      + new SwHTMLParser::AddMetaUserDefined() for import of
        DOCINFO field subtypes INFO[1-4]
      + do not use DocumentInfo for import of DOCINFO field subtypes INFO[1-4]
    2009-03-31 17:01:35 +0200 mav  r270288 : #i91214# fix typo
    2009-03-31 15:19:41 +0200 mav  r270285 : #i100123# allow to turn OOo locking mechanics off
    2009-03-31 15:00:36 +0200 mav  r270284 : #i100123# allow to turn OOo locking mechanics off
    2009-03-31 12:19:13 +0200 mav  r270270 : #i100123# taking the lock file over throws no exception
    2009-03-30 13:57:21 +0200 mav  r270227 : #i100351# fix the typo
    2009-03-30 13:47:26 +0200 mav  r270225 : #i99885# let OK be default button
    2009-03-29 19:38:55 +0200 mav  r270190 : CWS-TOOLING: rebase CWS fwk103 to trunk at 270033 (milestone: DEV300:m45)
    2009-03-16 16:39:48 +0100 mav  r269558 : #i93558# convert the attributes as well
    2009-03-13 15:35:55 +0100 mav  r269488 : #i93558# improve manifest.xml parsing
    2009-03-13 08:47:00 +0100 mav  r269454 : #i96205# allow to remove password on SaveAs
    2009-03-12 13:36:07 +0100 mav  r269398 : #i91306# show special error in case of shared document
    2009-03-12 13:33:35 +0100 mav  r269397 : #i91306# introduce the new error-message
    2009-03-12 11:40:42 +0100 mst  r269378 : fix #i90877#
    - svtools/source/uno/unoevent.cxx:
      + use proper operator delete[]
    2009-02-26 15:23:10 +0100 mav  r268526 : #i91214# do not use ATL
    2009-02-26 14:19:06 +0100 mav  r268516 : #i98909# integrate the patch
    2009-02-10 17:29:52 +0100 cd  r267568 : #i98649# Make sure that we catch the NoSuchElementException when a module is not installed.

diff --git a/embeddedobj/source/msole/makefile.mk b/embeddedobj/source/msole/makefile.mk
index 3e8a55c..2af3f28 100644
--- a/embeddedobj/source/msole/makefile.mk
+++ b/embeddedobj/source/msole/makefile.mk
@@ -39,14 +39,10 @@ TARGET=emboleobj
 
 .INCLUDE :  settings.mk
 
-.IF "$(DISABLE_ATL)"==""
+# .IF "$(DISABLE_ATL)"==""
 
 LIBTARGET=NO
 USE_DEFFILE=YES
-INCPRE+=$(ATL_INCLUDE)
-.IF "$(MFC_INCLUDE)"!=""
-INCPRE+=$(MFC_INCLUDE)
-.ENDIF
 
 # --- Files --------------------------------------------------------
 
@@ -134,7 +130,7 @@ SHL1DEF= $(MISC)$/$(SHL1TARGET).def
 
 DEF1NAME= $(SHL1TARGET)
 
-.ENDIF
+# .ENDIF
 # --- Targets -------------------------------------------------------
 
 .INCLUDE :  target.mk
diff --git a/embeddedobj/source/msole/olecomponent.cxx b/embeddedobj/source/msole/olecomponent.cxx
index ec07274..d156d19 100644
--- a/embeddedobj/source/msole/olecomponent.cxx
+++ b/embeddedobj/source/msole/olecomponent.cxx
@@ -58,6 +58,120 @@ using namespace ::comphelper;
 #define     MAX_ENUM_ELE     20
 #define		FORMATS_NUM		 3
 
+// ============ class ComSmart =====================
+namespace {
+
+template< class T > class ComSmart
+{
+    T* m_pInterface;
+
+    void OwnRelease()
+    {
+        if ( m_pInterface )
+        {
+            T* pInterface = m_pInterface;
+            m_pInterface = NULL;
+            pInterface->Release();
+        }
+    }
+
+public:
+    ComSmart()
+    : m_pInterface( NULL )
+    {}
+
+    ComSmart( const ComSmart<T>& rObj )
+    : m_pInterface( rObj.m_pInterface )
+    {
+        if ( m_pInterface != NULL )
+            m_pInterface->AddRef();
+    }
+
+    ComSmart( T* pInterface )
+    : m_pInterface( pInterface )
+    {
+         if ( m_pInterface != NULL )
+            m_pInterface->AddRef();
+    }
+
+    ~ComSmart()
+    {
+        OwnRelease();
+    }
+
+    ComSmart& operator=( const ComSmart<T>& rObj )
+    {
+        OwnRelease();
+
+        m_pInterface = rObj.m_pInterface;
+
+        if ( m_pInterface != NULL )
+            m_pInterface->AddRef();
+
+        return *this;
+    }
+
+    ComSmart<T>& operator=( T* pInterface )
+    {
+        OwnRelease();
+
+        m_pInterface = pInterface;
+
+        if ( m_pInterface != NULL )
+            m_pInterface->AddRef();
+
+        return *this;
+    }
+
+    operator T*() const
+    {
+        return m_pInterface;
+    }
+
+    T& operator*() const
+    {
+        return *m_pInterface;
+    }
+
+    T** operator&()
+    {
+        OwnRelease();
+
+        m_pInterface = NULL;
+
+        return &m_pInterface;
+    }
+
+    T* operator->() const
+    {
+        return m_pInterface;
+    }
+
+    BOOL operator==( const ComSmart<T>& rObj ) const
+    {
+        return ( m_pInterface == rObj.m_pInterface );
+    }
+
+    BOOL operator!=( const ComSmart<T>& rObj ) const
+    {
+        return ( m_pInterface != rObj.m_pInterface );
+    }
+
+    BOOL operator==( const T* pInterface ) const
+    {
+        return ( m_pInterface == pInterface );
+    }
+
+    BOOL operator!=( const T* pInterface ) const
+    {
+        return ( m_pInterface != pInterface );
+    }
+};
+
+}
+
+// ============ class ComSmart =====================
+
 sal_Bool ConvertBufferToFormat( void* pBuf,
                                 sal_uInt32 nBufSize,
                                 const ::rtl::OUString& aFormatShortName,
@@ -74,10 +188,10 @@ FORMATETC pFormatTemplates[FORMATS_NUM] = {
 
 
 struct OleComponentNative_Impl {
-    CComPtr< IUnknown > m_pObj;
-    CComPtr< IOleObject > m_pOleObject;
-    CComPtr< IViewObject2 > m_pViewObject2;
-    CComPtr< IStorage > m_pIStorage;
+    ComSmart< IUnknown > m_pObj;
+    ComSmart< IOleObject > m_pOleObject;
+    ComSmart< IViewObject2 > m_pViewObject2;
+    ComSmart< IStorage > m_pIStorage;
     FormatEtcList m_aFormatsList;
     uno::Sequence< datatransfer::DataFlavor > m_aSupportedGraphFormats;
     uno::Sequence< ::rtl::OUString > m_aGraphShortFormats; //short names for formats from previous sequence
@@ -509,11 +623,11 @@ void OleComponent::RetrieveObjectDataFlavors_Impl()
 
     if ( !m_aDataFlavors.getLength() )
     {
-        CComPtr< IDataObject > pDataObject;
+        ComSmart< IDataObject > pDataObject;
         HRESULT hr = m_pNativeImpl->m_pObj->QueryInterface( IID_IDataObject, (void**)&pDataObject );
         if ( SUCCEEDED( hr ) && pDataObject )
         {
-            CComPtr< IEnumFORMATETC > pFormatEnum;
+            ComSmart< IEnumFORMATETC > pFormatEnum;
             hr = pDataObject->EnumFormatEtc( DATADIR_GET, &pFormatEnum );
             if ( SUCCEEDED( hr ) && pFormatEnum )
             {
@@ -561,11 +675,11 @@ sal_Bool OleComponent::InitializeObject_Impl()
         return sal_False;
 
     // the linked object will be detected here
-    CComPtr< IOleLink > pOleLink;
+    ComSmart< IOleLink > pOleLink;
     HRESULT hr = m_pNativeImpl->m_pObj->QueryInterface( IID_IOleLink, (void**)&pOleLink );
     OSL_ENSURE( m_pUnoOleObject, "Unexpected object absence!" );
     if ( m_pUnoOleObject )
-        m_pUnoOleObject->SetObjectIsLink_Impl( pOleLink != NULL );
+        m_pUnoOleObject->SetObjectIsLink_Impl( sal_Bool( pOleLink != NULL ) );
 
 
     hr = m_pNativeImpl->m_pObj->QueryInterface( IID_IViewObject2, (void**)&m_pNativeImpl->m_pViewObject2 );
@@ -799,7 +913,7 @@ void OleComponent::InitEmbeddedCopyOfLink( OleComponent* pOleLinkComponent )
     if ( m_pNativeImpl->m_pIStorage )
         throw io::IOException(); // TODO:the object is already initialized
 
-    CComPtr< IDataObject > pDataObject;
+    ComSmart< IDataObject > pDataObject;
     HRESULT hr = pOleLinkComponent->m_pNativeImpl->m_pObj->QueryInterface( IID_IDataObject, (void**)&pDataObject );
     if ( SUCCEEDED( hr ) && pDataObject && SUCCEEDED( OleQueryCreateFromData( pDataObject ) ) )
     {
@@ -819,12 +933,12 @@ void OleComponent::InitEmbeddedCopyOfLink( OleComponent* pOleLinkComponent )
 
     if ( !m_pNativeImpl->m_pObj )
     {
-        CComPtr< IOleLink > pOleLink;
+        ComSmart< IOleLink > pOleLink;
         hr = pOleLinkComponent->m_pNativeImpl->m_pObj->QueryInterface( IID_IOleLink, (void**)&pOleLink );
         if ( FAILED( hr ) || !pOleLink )
             throw io::IOException(); // TODO: the object doesn't support IOleLink
 
-        CComPtr< IMoniker > pMoniker;
+        ComSmart< IMoniker > pMoniker;
         hr = pOleLink->GetSourceMoniker( &pMoniker );
         if ( FAILED( hr ) || !pMoniker )
             throw io::IOException(); // TODO: can not retrieve moniker
@@ -834,7 +948,7 @@ void OleComponent::InitEmbeddedCopyOfLink( OleComponent* pOleLinkComponent )
         hr = pMoniker->IsSystemMoniker( &aMonType );
         if ( SUCCEEDED( hr ) && aMonType == MKSYS_FILEMONIKER )
         {
-            CComPtr< IMalloc > pMalloc;
+            ComSmart< IMalloc > pMalloc;
             CoGetMalloc( 1, &pMalloc ); // if fails there will be a memory leak
             OSL_ENSURE( pMalloc, "CoGetMalloc() failed!" );
 
@@ -860,11 +974,11 @@ void OleComponent::InitEmbeddedCopyOfLink( OleComponent* pOleLinkComponent )
         // in case of other moniker types the only way is to get storage
         if ( !m_pNativeImpl->m_pObj )
         {
-            CComPtr< IBindCtx > pBindCtx;
+            ComSmart< IBindCtx > pBindCtx;
             hr = CreateBindCtx( 0, ( LPBC FAR* )&pBindCtx );
             if ( SUCCEEDED( hr ) && pBindCtx )
             {
-                CComPtr< IStorage > pObjectStorage;
+                ComSmart< IStorage > pObjectStorage;
                 hr = pMoniker->BindToStorage( pBindCtx, NULL, IID_IStorage, (void**)&pObjectStorage );
                 if ( SUCCEEDED( hr ) && pObjectStorage )
                 {
@@ -948,7 +1062,7 @@ uno::Sequence< embed::VerbDescriptor > OleComponent::GetVerbList()
 
     if( !m_aVerbList.getLength() )
     {
-        CComPtr< IEnumOLEVERB > pEnum;
+        ComSmart< IEnumOLEVERB > pEnum;
         if( SUCCEEDED( m_pNativeImpl->m_pOleObject->EnumVerbs( &pEnum ) ) )
         {
             OLEVERB     szEle[ MAX_ENUM_ELE ];
@@ -1045,7 +1159,7 @@ awt::Size OleComponent::GetExtent( sal_Int64 nAspect )
     if ( nMSAspect == DVASPECT_CONTENT )
     {
         // Try to get the size from the replacement image first
-        CComPtr< IDataObject > pDataObject;
+        ComSmart< IDataObject > pDataObject;
         HRESULT hr = m_pNativeImpl->m_pObj->QueryInterface( IID_IDataObject, (void**)&pDataObject );
         if ( SUCCEEDED( hr ) || pDataObject )
         {
@@ -1190,7 +1304,7 @@ sal_Bool OleComponent::IsDirty()
     if ( IsWorkaroundActive() )
         return sal_True;
 
-    CComPtr< IPersistStorage > pPersistStorage;
+    ComSmart< IPersistStorage > pPersistStorage;
     HRESULT hr = m_pNativeImpl->m_pObj->QueryInterface( IID_IPersistStorage, (void**)&pPersistStorage );
     if ( FAILED( hr ) || !pPersistStorage )
         throw io::IOException(); // TODO
@@ -1205,7 +1319,7 @@ void OleComponent::StoreOwnTmpIfNecessary()
     if ( !m_pNativeImpl->m_pOleObject )
         throw embed::WrongStateException(); // TODO: the object is in wrong state
 
-    CComPtr< IPersistStorage > pPersistStorage;
+    ComSmart< IPersistStorage > pPersistStorage;
     HRESULT hr = m_pNativeImpl->m_pObj->QueryInterface( IID_IPersistStorage, (void**)&pPersistStorage );
     if ( FAILED( hr ) || !pPersistStorage )
         throw io::IOException(); // TODO
@@ -1439,7 +1553,7 @@ uno::Any SAL_CALL OleComponent::getTransferData( const datatransfer::DataFlavor&
         DWORD nRequestedAspect = GetAspectFromFlavor( aFlavor );
         // if own icon is set and icon aspect is requested the own icon can be returned directly
 
-        CComPtr< IDataObject > pDataObject;
+        ComSmart< IDataObject > pDataObject;
         HRESULT hr = m_pNativeImpl->m_pObj->QueryInterface( IID_IDataObject, (void**)&pDataObject );
         if ( FAILED( hr ) || !pDataObject )
             throw io::IOException(); // TODO: transport error code
diff --git a/embeddedobj/source/msole/platform.h b/embeddedobj/source/msole/platform.h
index 748e4e0..c731f24 100644
--- a/embeddedobj/source/msole/platform.h
+++ b/embeddedobj/source/msole/platform.h
@@ -41,16 +41,9 @@
 #pragma warning(push, 1)
 #pragma warning(disable: 4548 4555 4917)
 #endif
+
 #include "windows.h"
-#ifdef __MINGW32__
-#include <atlbase.h>
-#else
-#if defined(_MSC_VER) && (_MSC_VER > 1310)
-#include <atldbcli.h>
-#else
-#include "atlcomcli.h"
-#endif
-#endif
+
 #if defined _MSC_VER
 #pragma warning(pop)
 #endif
diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
index f71c6dc..52045f4 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
@@ -5624,11 +5624,17 @@ Dymamic border coloring means that when the mouse is hovered over a control, and
 			<prop oor:name="UseDocumentSystemFileLocking" oor:type="xs:boolean">
 				<info>
 					<author>MAV</author>
-					<desc>Allows to specify whether the OOo document file locking mechanics should use the system file locking additionaly.</desc>
+					<desc>Allows to specify whether the OOo document file locking mechanics should use the system file locking.</desc>
+				</info>
+				<value>true</value>
+			</prop>
+			<prop oor:name="UseDocumentOOoLockFile" oor:type="xs:boolean">
+				<info>
+					<author>MAV</author>
+					<desc>Allows to specify whether the OOo document file locking mechanics should use the lock file for locking.</desc>
 				</info>
 				<value>true</value>
 			</prop>
-
 			<prop oor:name="UseSystemPrintDialog" oor:type="xs:boolean">
 				<info>
 					<author>PL</author>
diff --git a/sfx2/inc/sfx2/docfile.hxx b/sfx2/inc/sfx2/docfile.hxx
index ab6cc60..feba3e0 100644
--- a/sfx2/inc/sfx2/docfile.hxx
+++ b/sfx2/inc/sfx2/docfile.hxx
@@ -1,4 +1,4 @@
-    /*************************************************************************
+/*************************************************************************
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  * 
@@ -206,7 +206,9 @@ public:
                         { return ERRCODE_TOERROR(GetErrorCode()); }
     sal_uInt32			GetLastStorageCreationState();
 
-    void                SetError( sal_uInt32 nError ) { eError = nError; }
+    void                SetError( sal_uInt32 nError, const ::rtl::OUString& aLogMessage );
+
+    void                AddLog( const ::rtl::OUString& aMessage );
 
     void                CloseInStream();
     sal_Bool            CloseOutStream();
@@ -360,89 +362,5 @@ SV_DECL_COMPAT_WEAK( SfxMedium )
 DECLARE_LIST( SfxMediumList, SfxMedium* )
 #endif
 
-/*========================================================================
- *
- * SvKeyValue.
- *
- *======================================================================*/
-
-#ifndef COPYCTOR_API
-#define COPYCTOR_API(C) C (const C&); C& operator= (const C&)
-#endif
-SV_DECL_REF(SvKeyValueIterator)
-
-class SvKeyValue
-{
-    /** Representation.
-    */
-    String m_aKey;
-    String m_aValue;
-
-public:
-    /** Construction.
-    */
-    SvKeyValue (void)
-    {}
-
-    SvKeyValue (const String &rKey, const String &rValue)
-        : m_aKey (rKey), m_aValue (rValue)
-    {}
-
-    SvKeyValue (const SvKeyValue &rOther)
-        : m_aKey (rOther.m_aKey), m_aValue (rOther.m_aValue)
-    {}
-
-    /** Assignment.
-    */
-    SvKeyValue& operator= (SvKeyValue &rOther)
-    {
-        m_aKey   = rOther.m_aKey;
-        m_aValue = rOther.m_aValue;
-        return *this;
-    }
-
-    /** Operation.
-    */
-    const String& GetKey   (void) const { return m_aKey; }
-    const String& GetValue (void) const { return m_aValue; }
-
-    void SetKey   (const String &rKey  ) { m_aKey = rKey; }
-    void SetValue (const String &rValue) { m_aValue = rValue; }
-};
-
-/*========================================================================
- *
- * SvKeyValueIterator.
- *
- *======================================================================*/
-class SvKeyValueList_Impl;
-class SFX2_DLLPUBLIC SvKeyValueIterator : public SvRefBase
-{
-    /** Representation.
-    */
-    SvKeyValueList_Impl* m_pList;
-    USHORT               m_nPos;
-
-    /** Not implemented.
-    */
-    COPYCTOR_API(SvKeyValueIterator);
-
-public:
-    /** Construction/Destruction.
-    */
-    SvKeyValueIterator (void);
-    virtual ~SvKeyValueIterator (void);
-
-    /** Operation.
-    */
-    virtual BOOL GetFirst (SvKeyValue &rKeyVal);
-    virtual BOOL GetNext  (SvKeyValue &rKeyVal);
-    virtual void Append   (const SvKeyValue &rKeyVal);
-};
-
-SV_IMPL_REF(SvKeyValueIterator);
-
-
-
 #endif
 
diff --git a/sfx2/inc/sfx2/objsh.hxx b/sfx2/inc/sfx2/objsh.hxx
index 8d07bb8..b6d25ed 100644
--- a/sfx2/inc/sfx2/objsh.hxx
+++ b/sfx2/inc/sfx2/objsh.hxx
@@ -325,7 +325,10 @@ public:
     void                        ResetError();
     sal_uInt32                  GetError() const;
     sal_uInt32                  GetErrorCode() const;
-    void                        SetError(sal_uInt32 rErr);
+    void                        SetError( sal_uInt32 rErr, const ::rtl::OUString& aLogMessage );
+
+    void                        AddLog( const ::rtl::OUString& aMessage );
+    void                        StoreLog();
 
     sal_Bool                    DoInitNew( SfxMedium* pMedium=0 );
     sal_Bool                    DoLoad( SfxMedium* pMedium );
diff --git a/sfx2/inc/sfx2/sfxhtml.hxx b/sfx2/inc/sfx2/sfxhtml.hxx
index 06d57db..811db2f 100644
--- a/sfx2/inc/sfx2/sfxhtml.hxx
+++ b/sfx2/inc/sfx2/sfxhtml.hxx
@@ -38,16 +38,10 @@
 #include <svtools/parhtml.hxx>
 #include <svtools/macitem.hxx>
 
-namespace com { namespace sun { namespace star {
-    namespace document {
-        class XDocumentProperties;
-    }
-} } }
 
 class ImageMap;
 class SfxMedium;
 class SfxObjectShell;
-class SvKeyValueIterator;
 
 class SFX2_DLLPUBLIC SfxHTMLParser : public HTMLParser
 {
@@ -67,7 +61,7 @@ protected:
 
     SfxHTMLParser( SvStream& rStream, BOOL bNewDoc=TRUE, SfxMedium *pMedium=0 );
 
-    ~SfxHTMLParser();
+    virtual ~SfxHTMLParser();
 
 public:
     // Lesen der Optionen einer Image-Map
@@ -85,24 +79,14 @@ public:
                                  USHORT nEventMouseOver = 0,
                                  USHORT nEventMouseOut = 0);
 
-    /// parse meta options into XDocumentProperties
-    static BOOL ParseMetaOptions( const ::com::sun::star::uno::Reference<
-                ::com::sun::star::document::XDocumentProperties>&,
-            SvKeyValueIterator*,
-            const HTMLOptions*,
-            rtl_TextEncoding& rEnc );
-
     // <TD SDVAL="..." SDNUM="...">
     static double GetTableDataOptionsValNum( sal_uInt32& nNumForm,
             LanguageType& eNumLang, const String& aValStr,
             const String& aNumStr, SvNumberFormatter& rFormatter );
 
     static rtl_TextEncoding GetEncodingByHttpHeader( SvKeyValueIterator *pHTTPHeader );
-protected:
 
-    BOOL ParseMetaOptions( const ::com::sun::star::uno::Reference<
-                ::com::sun::star::document::XDocumentProperties>&,
-            SvKeyValueIterator* );
+protected:
 
     // Start eines File-Downloads. Dieser erfolgt synchron oder asynchron.
     // Im synchronen Fall befindet sich der Parser nach dem Aufruf im
@@ -141,8 +125,6 @@ protected:
     ScriptType GetScriptType( SvKeyValueIterator* ) const;
     const String& GetScriptTypeString( SvKeyValueIterator* ) const;
 
-    static rtl_TextEncoding GetEncodingByMIME( const String& rMime );
-
     BOOL SetEncodingByHTTPHeader( SvKeyValueIterator *pHTTPHeader );
 
 };
diff --git a/sfx2/source/bastyp/sfxhtml.cxx b/sfx2/source/bastyp/sfxhtml.cxx
index e70537d..eba014f 100644
--- a/sfx2/source/bastyp/sfxhtml.cxx
+++ b/sfx2/source/bastyp/sfxhtml.cxx
@@ -37,7 +37,6 @@
 #include <sfx2/docfile.hxx>
 #include "openflag.hxx"
 
-#include <comphelper/string.hxx>
 #include <svtools/htmlkywd.hxx>
 #include <svtools/htmltokn.h>
 #include <svtools/imap.hxx>
@@ -50,15 +49,13 @@
 #include <svtools/svstdarr.hxx>
 #endif
 #include <svtools/zforlist.hxx>
-#include <svtools/inettype.hxx>
 #include <rtl/tencinfo.h>
 #include <tools/tenccvt.hxx>
 
 #include <sfx2/sfxhtml.hxx>
 
-#include <com/sun/star/document/XDocumentProperties.hpp>
 #include <com/sun/star/beans/XPropertyContainer.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
+
 
 using namespace ::com::sun::star;
 
@@ -67,20 +64,6 @@ sal_Char __FAR_DATA sHTML_MIME_text[] = "text/";
 sal_Char __FAR_DATA sHTML_MIME_application[] = "application/";
 sal_Char __FAR_DATA sHTML_MIME_experimental[] = "x-";
 
-#define HTML_META_NONE			0
-#define HTML_META_AUTHOR		1
-#define HTML_META_DESCRIPTION	2
-#define HTML_META_KEYWORDS		3
-#define HTML_META_REFRESH		4
-#define HTML_META_CLASSIFICATION 5
-#define HTML_META_CREATED		6
-#define HTML_META_CHANGEDBY		7
-#define HTML_META_CHANGED		8
-#define HTML_META_GENERATOR		9
-#define HTML_META_SDFOOTNOTE	10
-#define HTML_META_SDENDNOTE		11
-#define HTML_META_CONTENT_TYPE	12
-
 // <INPUT TYPE=xxx>
 #ifdef __MINGW32__ // for runtime pseudo reloc
 static HTMLOptionEnum aAreaShapeOptEnums[] =
@@ -97,28 +80,6 @@ static HTMLOptionEnum __READONLY_DATA aAreaShapeOptEnums[] =
     { 0,					0					}
 };
 
-// <META NAME=xxx>
-#ifdef __MINGW32__ // for runtime pseudo reloc
-static HTMLOptionEnum aHTMLMetaNameTable[] =
-#else
-static HTMLOptionEnum __READONLY_DATA aHTMLMetaNameTable[] =
-#endif
-{
-    { OOO_STRING_SVTOOLS_HTML_META_author,		HTML_META_AUTHOR		},
-    { OOO_STRING_SVTOOLS_HTML_META_changed,		HTML_META_CHANGED		},
-    { OOO_STRING_SVTOOLS_HTML_META_changedby,		HTML_META_CHANGEDBY		},
-    { OOO_STRING_SVTOOLS_HTML_META_classification,HTML_META_CLASSIFICATION},
-    { OOO_STRING_SVTOOLS_HTML_META_content_type,	HTML_META_CONTENT_TYPE	},
-    { OOO_STRING_SVTOOLS_HTML_META_created,		HTML_META_CREATED		},
-    { OOO_STRING_SVTOOLS_HTML_META_description,	HTML_META_DESCRIPTION	},
-    { OOO_STRING_SVTOOLS_HTML_META_keywords,		HTML_META_KEYWORDS		},
-    { OOO_STRING_SVTOOLS_HTML_META_generator,		HTML_META_GENERATOR		},
-    { OOO_STRING_SVTOOLS_HTML_META_refresh,		HTML_META_REFRESH		},
-    { OOO_STRING_SVTOOLS_HTML_META_sdendnote,		HTML_META_SDENDNOTE		},
-    { OOO_STRING_SVTOOLS_HTML_META_sdfootnote,	HTML_META_SDFOOTNOTE	},
-    { 0,						0						}
-};
-
 SfxHTMLParser::SfxHTMLParser( SvStream& rStream, BOOL bIsNewDoc,
                               SfxMedium *pMed ) :
     HTMLParser( rStream, bIsNewDoc ),
@@ -288,169 +249,6 @@ IMAPOBJ_SETEVENT:
     return bNewArea;
 }
 
-BOOL SfxHTMLParser::ParseMetaOptions(
-        const uno::Reference<document::XDocumentProperties> & i_xDocProps,
-        SvKeyValueIterator *pHTTPHeader,
-        const HTMLOptions *pOptions,
-        rtl_TextEncoding& rEnc )
-{
-    String aName, aContent;
-    USHORT nAction = HTML_META_NONE;
-    BOOL bHTTPEquiv = FALSE, bChanged = FALSE;
-
-    for( USHORT i = pOptions->Count(); i; )
-    {
-        const HTMLOption *pOption = (*pOptions)[ --i ];
-        switch( pOption->GetToken() )
-        {
-        case HTML_O_NAME:
-            aName = pOption->GetString();
-            if( HTML_META_NONE==nAction )
-                pOption->GetEnum( nAction, aHTMLMetaNameTable );
-            break;
-        case HTML_O_HTTPEQUIV:
-            aName = pOption->GetString();
-            pOption->GetEnum( nAction, aHTMLMetaNameTable );
-            bHTTPEquiv = TRUE;
-            break;
-        case HTML_O_CONTENT:
-            aContent = pOption->GetString();
-            break;
-        }
-    }
-
-    if( bHTTPEquiv || HTML_META_DESCRIPTION!=nAction )
-    {
-        // wenn's keine Description ist CRs und LFs aus dem CONTENT entfernen
-        aContent.EraseAllChars( _CR );
-        aContent.EraseAllChars( _LF );
-    }
-    else
-    {
-        // fuer die Beschreibung die Zeilen-Umbrueche entsprechen wandeln
-        aContent.ConvertLineEnd();
-    }
-
-
-    if( bHTTPEquiv && pHTTPHeader )
-    {
-        // #57232#: Netscape scheint ein abschliessendes " einfach zu
-        // ignorieren, also tun wir das auch.
-        if( aContent.Len() && '"' == aContent.GetChar( aContent.Len()-1 ) )
-            aContent.Erase( aContent.Len() - 1 );
-        SvKeyValue aKeyValue( aName, aContent );
-        pHTTPHeader->Append( aKeyValue );
-    }
-
-    switch( nAction )
-    {
-    case HTML_META_AUTHOR:
-        if (i_xDocProps.is()) {
-            i_xDocProps->setAuthor( aContent );
-            bChanged = TRUE;
-        }
-        break;
-    case HTML_META_DESCRIPTION:
-        if (i_xDocProps.is()) {
-            i_xDocProps->setDescription( aContent );
-            bChanged = TRUE;
-        }
-        break;
-    case HTML_META_KEYWORDS:
-        if (i_xDocProps.is()) {
-            i_xDocProps->setKeywords(
-                ::comphelper::string::convertCommaSeparated(aContent));
-            bChanged = TRUE;
-        }
-        break;
-    case HTML_META_CLASSIFICATION:
-        if (i_xDocProps.is()) {
-            i_xDocProps->setSubject( aContent );
-            bChanged = TRUE;
-        }
-        break;
-
-    case HTML_META_CHANGEDBY:
-        if (i_xDocProps.is()) {
-            i_xDocProps->setModifiedBy( aContent );
-        bChanged = TRUE;
-        }
-        break;
-
-    case HTML_META_CREATED:
-    case HTML_META_CHANGED:
-        if( i_xDocProps.is() && aContent.Len() && aContent.GetTokenCount()==2 )
-        {
-            Date aDate( (ULONG)aContent.GetToken(0).ToInt32() );
-            Time aTime( (ULONG)aContent.GetToken(1).ToInt32() );
-            DateTime aDateTime( aDate, aTime );
-            ::util::DateTime uDT(aDateTime.Get100Sec(),
-                aDateTime.GetSec(), aDateTime.GetMin(),
-                aDateTime.GetHour(), aDateTime.GetDay(),
-                aDateTime.GetMonth(), aDateTime.GetYear());
-            if( HTML_META_CREATED==nAction )
-                i_xDocProps->setCreationDate( uDT );
-            else
-                i_xDocProps->setModificationDate( uDT );
-            bChanged = TRUE;
-        }
-        break;
-
-    case HTML_META_REFRESH:
-        DBG_ASSERT( !bHTTPEquiv || pHTTPHeader,
-                "Reload-URL aufgrund unterlsassener MUSS-Aenderung verlorengegangen" );
-        break;
-
-    case HTML_META_CONTENT_TYPE:
-        if( aContent.Len() )
-            rEnc = GetEncodingByMIME( aContent );
-        bChanged = TRUE;
-        break;
-
-    case HTML_META_NONE:
-        if( !bHTTPEquiv )
-        {
-            if (i_xDocProps.is()) {
-                uno::Reference<beans::XPropertyContainer> xUDProps
-                    = i_xDocProps->getUserDefinedProperties();
-                try {
-                    xUDProps->addProperty(aName,
-                        beans::PropertyAttribute::REMOVEABLE,
-                        uno::makeAny(::rtl::OUString(aContent)));
-                    bChanged = TRUE;
-                } catch (uno::Exception &) {
-                    // ignore
-                }
-            }
-        }
-        break;
-    }
-
-    return bChanged;
-}
-
-BOOL SfxHTMLParser::ParseMetaOptions(
-        const uno::Reference<document::XDocumentProperties> & i_xDocProps,
-                                      SvKeyValueIterator *pHeader )
-{
-    USHORT nContentOption = HTML_O_CONTENT;
-    rtl_TextEncoding eEnc = RTL_TEXTENCODING_DONTKNOW;
-
-    BOOL bRet = ParseMetaOptions( i_xDocProps, pHeader,
-                                  GetOptions(&nContentOption),
-                                  eEnc );
-
-    // If the encoding is set by a META tag, it may only overwrite the
-    // current encoding if both, the current and the new encoding, are 1-BYTE
-    // encodings. Everything else cannot lead to reasonable results.
-    if( RTL_TEXTENCODING_DONTKNOW != eEnc &&
-        rtl_isOctetTextEncoding( eEnc ) &&
-        rtl_isOctetTextEncoding( GetSrcEncoding() ) )
-        SetSrcEncoding( eEnc );
-
-    return bRet;
-}
-
 
 void SfxHTMLParser::StartFileDownload( const String& rURL, int nToken,
                                        SfxObjectShell *pSh )
@@ -559,24 +357,6 @@ IMPL_STATIC_LINK( SfxHTMLParser, FileDownloadDone, void*, EMPTYARG )
     return 0;
 }
 
-rtl_TextEncoding SfxHTMLParser::GetEncodingByMIME( const String& rMime )
-{
-    ByteString sType;
-    ByteString sSubType;
-    INetContentTypeParameterList aParameters;
-    ByteString sMime( rMime, RTL_TEXTENCODING_ASCII_US );
-    if (INetContentTypes::parse(sMime, sType, sSubType, &aParameters))
-    {
-        const INetContentTypeParameter * pCharset
-            = aParameters.find("charset");
-        if (pCharset != 0)
-        {
-            ByteString sValue( pCharset->m_sValue, RTL_TEXTENCODING_ASCII_US );
-            return GetExtendedCompatibilityTextEncoding(rtl_getTextEncodingFromMimeCharset( sValue.GetBuffer() ) );
-        }
-    }
-    return RTL_TEXTENCODING_DONTKNOW;
-}
 rtl_TextEncoding SfxHTMLParser::GetEncodingByHttpHeader( SvKeyValueIterator *pHTTPHeader )
 {
     rtl_TextEncoding eRet = RTL_TEXTENCODING_DONTKNOW;
diff --git a/sfx2/source/control/dispatch.cxx b/sfx2/source/control/dispatch.cxx
index 7d42221..d76697b 100644
--- a/sfx2/source/control/dispatch.cxx
+++ b/sfx2/source/control/dispatch.cxx
@@ -270,8 +270,6 @@ int SfxDispatcher::Call_Impl( SfxShell& rShell, const SfxSlot &rSlot, SfxRequest
             }
         }
 
-        SfxBindings *pBindings = GetBindings();
-
         // Alles holen, was gebraucht wird, da der Slot den Execute evtl. nicht
         // "uberlebt, falls es ein 'Pseudoslot' f"ur Macros oder Verben ist
         sal_Bool bAutoUpdate = rSlot.IsMode(SFX_SLOT_AUTOUPDATE);
@@ -308,9 +306,17 @@ int SfxDispatcher::Call_Impl( SfxShell& rShell, const SfxSlot &rSlot, SfxRequest
             // falls 'this' noch lebt
             if ( bThisDispatcherAlive )
                 pImp->pInCallAliveFlag = pOldInCallAliveFlag;
-            else if ( pOldInCallAliveFlag )
-                // auch verschachtelte Stack-Frames sch"utzen
-                *pOldInCallAliveFlag = sal_False;
+            else
+            {
+                if ( pOldInCallAliveFlag )
+                {
+                    // auch verschachtelte Stack-Frames sch"utzen
+                    *pOldInCallAliveFlag = sal_False;
+                }
+
+                // do nothing after this object is dead
+                return rReq.IsDone();
+            }
         }
 
         // TabPage-ID und Executing-SID zurueck setzen
@@ -325,6 +331,8 @@ int SfxDispatcher::Call_Impl( SfxShell& rShell, const SfxSlot &rSlot, SfxRequest
 
         if ( rReq.IsDone() )
         {
+            SfxBindings *pBindings = GetBindings();
+
             // bei AutoUpdate sofort updaten; "Pseudoslots" d"urfen nicht
             // Autoupdate sein!
             if ( bAutoUpdate && pBindings )
diff --git a/sfx2/source/doc/docfile.cxx b/sfx2/source/doc/docfile.cxx
index 2ca8a68..7ff1ade 100644
--- a/sfx2/source/doc/docfile.cxx
+++ b/sfx2/source/doc/docfile.cxx
@@ -71,6 +71,7 @@
 #include <com/sun/star/ucb/OpenCommandArgument2.hpp>
 #include <com/sun/star/ucb/OpenMode.hpp>
 #include <com/sun/star/ucb/NameClashException.hpp>
+#include <com/sun/star/logging/XSimpleLogRing.hpp>
 #include <cppuhelper/implbase1.hxx>
 #include <com/sun/star/beans/PropertyValue.hpp>
 #ifndef _COM_SUN_STAR_SECURITY_DOCUMENTSIGNATURESINFORMATION_HPP_
@@ -82,6 +83,7 @@
 #include <tools/urlobj.hxx>
 #include <unotools/tempfile.hxx>
 #include <comphelper/processfactory.hxx>
+#include <comphelper/componentcontext.hxx>
 #include <unotools/streamhelper.hxx>
 #include <unotools/localedatawrapper.hxx>
 #ifndef _MSGBOX_HXX //autogen
@@ -93,6 +95,7 @@
 #include <svtools/sfxecode.hxx>
 #include <svtools/itemset.hxx>
 #include <svtools/intitem.hxx>
+#include <svtools/svparser.hxx> // SvKeyValue
 #include <cppuhelper/weakref.hxx>
 #include <cppuhelper/implbase1.hxx>
 
@@ -149,12 +152,73 @@ using namespace ::com::sun::star::io;
 
 #define MAX_REDIRECT 5
 
+
+//==========================================================
 namespace {
-    static const sal_Int8 LOCK_UI_NOLOCK = 0;
-    static const sal_Int8 LOCK_UI_SUCCEEDED = 1;
-    static const sal_Int8 LOCK_UI_TRY = 2;
+
+static const sal_Int8 LOCK_UI_NOLOCK = 0;
+static const sal_Int8 LOCK_UI_SUCCEEDED = 1;
+static const sal_Int8 LOCK_UI_TRY = 2;
+
+//----------------------------------------------------------------
+sal_Bool IsSystemFileLockingUsed()
+{
+    // check whether system file locking has been used, the default value is false
+    sal_Bool bUseSystemLock = sal_False;
+    try
+    {
+
+        uno::Reference< uno::XInterface > xCommonConfig = ::comphelper::ConfigurationHelper::openConfig(
+                            ::comphelper::getProcessServiceFactory(),
+                            ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Office.Common" ) ),
+                            ::comphelper::ConfigurationHelper::E_STANDARD );
+        if ( !xCommonConfig.is() )
+            throw uno::RuntimeException();
+
+        ::comphelper::ConfigurationHelper::readRelativeKey(
+                xCommonConfig,
+                ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Misc/" ) ),
+                ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "UseDocumentSystemFileLocking" ) ) ) >>= bUseSystemLock;
+    }
+    catch( const uno::Exception& )
+    {
+    }
+
+    return bUseSystemLock;
+}
+
+//----------------------------------------------------------------
+sal_Bool IsOOoLockFileUsed()
+{
+    // check whether system file locking has been used, the default value is false
+    sal_Bool bOOoLockFileUsed = sal_False;
+    try
+    {
+
+        uno::Reference< uno::XInterface > xCommonConfig = ::comphelper::ConfigurationHelper::openConfig(
+                            ::comphelper::getProcessServiceFactory(),
+                            ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Office.Common" ) ),
+                            ::comphelper::ConfigurationHelper::E_STANDARD );
+        if ( !xCommonConfig.is() )
+            throw uno::RuntimeException();
+
+        ::comphelper::ConfigurationHelper::readRelativeKey(
+                xCommonConfig,
+                ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Misc/" ) ),
+                ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "UseDocumentOOoLockFile" ) ) ) >>= bOOoLockFileUsed;
+    }
+    catch( const uno::Exception& )
+    {
+    }
+
+    return bOOoLockFileUsed;
 }
 
+} // anonymous namespace
+//========================================================== 
+
+
+//----------------------------------------------------------------
 class SfxMediumHandler_Impl : public ::cppu::WeakImplHelper1< com::sun::star::task::XInteractionHandler >
 {
     com::sun::star::uno::Reference< com::sun::star::task::XInteractionHandler > m_xInter;
@@ -170,10 +234,12 @@ public:
     ~SfxMediumHandler_Impl();
 };
 
+//----------------------------------------------------------------
 SfxMediumHandler_Impl::~SfxMediumHandler_Impl()
 {
 }
 
+//----------------------------------------------------------------
 void SAL_CALL SfxMediumHandler_Impl::handle( const com::sun::star::uno::Reference< com::sun::star::task::XInteractionRequest >& xRequest )
         throw( com::sun::star::uno::RuntimeException )
 {
@@ -192,6 +258,7 @@ void SAL_CALL SfxMediumHandler_Impl::handle( const com::sun::star::uno::Referenc
         m_xInter->handle( xRequest );
 }
 
+//----------------------------------------------------------------
 class SfxPoolCancelManager_Impl  :   public SfxCancelManager ,
                                      public SfxCancellable   ,
                                      public SfxListener      ,
@@ -208,6 +275,7 @@ public:
     virtual void Cancel();
 };
 
+//----------------------------------------------------------------
 SV_DECL_IMPL_REF( SfxPoolCancelManager_Impl )
 
 
@@ -327,6 +395,8 @@ public:
 
     util::DateTime m_aDateTime;
 
+    uno::Reference< logging::XSimpleLogRing > m_xLogRing;
+
     SfxPoolCancelManager_Impl* GetCancelManager();
 
     SfxMedium_Impl( SfxMedium* pAntiImplP );
@@ -341,7 +411,7 @@ void SfxMedium::DataAvailable_Impl()
 
 void SfxMedium::Cancel_Impl()
 {
-    SetError( ERRCODE_IO_GENERAL );
+    SetError( ERRCODE_IO_GENERAL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
 }
 
 SfxPoolCancelManager_Impl* SfxMedium_Impl::GetCancelManager()
@@ -449,6 +519,33 @@ sal_uInt32 SfxMedium::GetLastStorageCreationState()
 }
 
 //------------------------------------------------------------------
+void SfxMedium::AddLog( const ::rtl::OUString& aMessage )
+{
+    if ( !pImp->m_xLogRing.is() )
+    {
+        try
+        {
+            ::comphelper::ComponentContext aContext( ::comphelper::getProcessServiceFactory() );
+            if ( aContext.is() )
+                pImp->m_xLogRing.set( aContext.getSingleton( "com.sun.star.logging.DocumentIOLogRing" ), UNO_QUERY_THROW );
+        }
+        catch( uno::Exception& )
+        {}
+    }
+
+    if ( pImp->m_xLogRing.is() )
+        pImp->m_xLogRing->logString( aMessage );
+}
+
+//------------------------------------------------------------------
+void SfxMedium::SetError( sal_uInt32 nError, const ::rtl::OUString& aLogMessage )
+{
+    eError = nError;
+    if ( eError != ERRCODE_NONE && aLogMessage.getLength() )
+        AddLog( aLogMessage );
+}
+
+//------------------------------------------------------------------
 sal_uInt32 SfxMedium::GetErrorCode() const
 {
     sal_uInt32 lError=eError;
@@ -479,28 +576,7 @@ void SfxMedium::CheckFileDate( const util::DateTime& aInitDate )
       || pImp->m_aDateTime.Month != aInitDate.Month
       || pImp->m_aDateTime.Year != aInitDate.Year )
     {
-        // check whether system file locking has been used, the default value is false
-        sal_Bool bUseSystemLock = sal_False;
-        try
-        {
-
-            uno::Reference< uno::XInterface > xCommonConfig = ::comphelper::ConfigurationHelper::openConfig(
-                                ::comphelper::getProcessServiceFactory(),
-                                ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Office.Common" ) ),
-                                ::comphelper::ConfigurationHelper::E_STANDARD );
-            if ( !xCommonConfig.is() )
-                throw uno::RuntimeException();
-
-            ::comphelper::ConfigurationHelper::readRelativeKey(
-                    xCommonConfig,
-                    ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Misc/" ) ),
-                    ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "UseDocumentSystemFileLocking" ) ) ) >>= bUseSystemLock;
-        }
-        catch( const uno::Exception& )
-        {
-        }
-
-        if ( !bUseSystemLock )
+        if ( !IsSystemFileLockingUsed() )
         {
             uno::Reference< task::XInteractionHandler > xHandler = GetInteractionHandler();
 
@@ -520,7 +596,7 @@ void SfxMedium::CheckFileDate( const util::DateTime& aInitDate )
                     ::rtl::Reference< ::ucbhelper::InteractionContinuation > xSelected = xInteractionRequestImpl->getSelection();
                     if ( uno::Reference< task::XInteractionAbort >( xSelected.get(), uno::UNO_QUERY ).is() )
                     {
-                        SetError( ERRCODE_ABORT );
+                        SetError( ERRCODE_ABORT, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
                     }
                 }
                 catch ( uno::Exception& )
@@ -946,7 +1022,7 @@ void SfxMedium::StorageBackup_Impl()
     {
         DoInternalBackup_Impl( aOriginalContent );
         if( !pImp->m_aBackupURL.getLength() )
-            SetError( ERRCODE_SFX_CANTCREATEBACKUP );
+            SetError( ERRCODE_SFX_CANTCREATEBACKUP, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
     }
 }
 
@@ -1021,7 +1097,7 @@ void SfxMedium::SetPasswordToStorage_Impl()
             {
                 OSL_ENSURE( sal_False, "It must be possible to set a common password for the storage" );
                 // TODO/LATER: set the error code in case of problem
-                // SetError( ERRCODE_IO_GENERAL );
+                // SetError( ERRCODE_IO_GENERAL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
             }
         }
     }
@@ -1090,7 +1166,7 @@ sal_Int8 SfxMedium::ShowLockedDocumentDialog( const uno::Sequence< ::rtl::OUStri
         ::rtl::Reference< ::ucbhelper::InteractionContinuation > xSelected = xInteractionRequestImpl->getSelection();
         if ( uno::Reference< task::XInteractionAbort >( xSelected.get(), uno::UNO_QUERY ).is() )
         {
-            SetError( ERRCODE_ABORT );
+            SetError( ERRCODE_ABORT, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
         }
         else if ( uno::Reference< task::XInteractionDisapprove >( xSelected.get(), uno::UNO_QUERY ).is() )
         {
@@ -1129,7 +1205,7 @@ sal_Int8 SfxMedium::ShowLockedDocumentDialog( const uno::Sequence< ::rtl::OUStri
             GetItemSet()->Put( SfxBoolItem( SID_DOC_READONLY, sal_True ) );
         }
         else
-            SetError( ERRCODE_IO_ACCESSDENIED );
+            SetError( ERRCODE_IO_ACCESSDENIED, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
 
     }
 
@@ -1184,24 +1260,7 @@ sal_Bool SfxMedium::LockOrigFileOnDemand( sal_Bool bLoading, sal_Bool bNoUI )
                 sal_Int8 bUIStatus = LOCK_UI_NOLOCK;
 
                 // check whether system file locking has been used, the default value is false
-                sal_Bool bUseSystemLock = sal_False;
-                try
-                {
-                    uno::Reference< uno::XInterface > xCommonConfig = ::comphelper::ConfigurationHelper::openConfig(
-                                        ::comphelper::getProcessServiceFactory(),
-                                        ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Office.Common" ) ),
-                                        ::comphelper::ConfigurationHelper::E_STANDARD );
-                    if ( !xCommonConfig.is() )
-                        throw uno::RuntimeException();
-
-                    ::comphelper::ConfigurationHelper::readRelativeKey(
-                            xCommonConfig,
-                            ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Misc/" ) ),
-                            ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "UseDocumentSystemFileLocking" ) ) ) >>= bUseSystemLock;
-                }
-                catch( const uno::Exception& )
-                {
-                }
+                sal_Bool bUseSystemLock = IsSystemFileLockingUsed();
 
                 // TODO/LATER: This implementation does not allow to detect the system lock on saving here, actually this is no big problem
                 // if system lock is used the writeable stream should be available
@@ -1220,35 +1279,55 @@ sal_Bool SfxMedium::LockOrigFileOnDemand( sal_Bool bLoading, sal_Bool bNoUI )
                             }
                             catch ( ucb::InteractiveIOException& e )
                             {
-                                if ( e.Code == IOErrorCode_INVALID_PARAMETER )
+                                // exception means that the lock file can not be successfuly accessed
+                                // in this case it should be ignored if system file locking is anyway active
+                                if ( bUseSystemLock || !IsOOoLockFileUsed() )
                                 {
-                                    // it looks like the lock file name is not accepted by the content
-                                    if ( !bUseSystemLock )
+                                    bResult = sal_True;
+                                    // take the ownership over the lock file
+                                    aLockFile.OverwriteOwnLockFile();
+                                }
+                                else if ( e.Code == IOErrorCode_INVALID_PARAMETER )
+                                {
+                                    // system file locking is not active, ask user whether he wants to open the document without any locking
+                                    uno::Reference< task::XInteractionHandler > xHandler = GetInteractionHandler();
+                                    
+                                    if ( xHandler.is() )
                                     {
-                                        // system file locking is not active, ask user whether he wants to open the document without any locking
-                                        uno::Reference< task::XInteractionHandler > xHandler = GetInteractionHandler();
-                                        
-                                        if ( xHandler.is() )
-                                        {
-                                            ::rtl::Reference< ::ucbhelper::InteractionRequest > xIgnoreRequestImpl
-                                                = new ::ucbhelper::InteractionRequest( uno::makeAny( document::LockFileIgnoreRequest() ) );
-
-                                            uno::Sequence< uno::Reference< task::XInteractionContinuation > > aContinuations( 2 );
-                                            aContinuations[0] = new ::ucbhelper::InteractionAbort( xIgnoreRequestImpl.get() );
-                                            aContinuations[1] = new ::ucbhelper::InteractionApprove( xIgnoreRequestImpl.get() );
-                                            xIgnoreRequestImpl->setContinuations( aContinuations );
-
-                                            xHandler->handle( xIgnoreRequestImpl.get() );
-
-                                            ::rtl::Reference< ::ucbhelper::InteractionContinuation > xSelected = xIgnoreRequestImpl->getSelection();
-                                            bResult = (  uno::Reference< task::XInteractionApprove >( xSelected.get(), uno::UNO_QUERY ).is() );
-                                        }
+                                        ::rtl::Reference< ::ucbhelper::InteractionRequest > xIgnoreRequestImpl
+                                            = new ::ucbhelper::InteractionRequest( uno::makeAny( document::LockFileIgnoreRequest() ) );
+
+                                        uno::Sequence< uno::Reference< task::XInteractionContinuation > > aContinuations( 2 );
+                                        aContinuations[0] = new ::ucbhelper::InteractionAbort( xIgnoreRequestImpl.get() );
+                                        aContinuations[1] = new ::ucbhelper::InteractionApprove( xIgnoreRequestImpl.get() );
+                                        xIgnoreRequestImpl->setContinuations( aContinuations );
+
+                                        xHandler->handle( xIgnoreRequestImpl.get() );
+
+                                        ::rtl::Reference< ::ucbhelper::InteractionContinuation > xSelected = xIgnoreRequestImpl->getSelection();
+                                        bResult = (  uno::Reference< task::XInteractionApprove >( xSelected.get(), uno::UNO_QUERY ).is() );
                                     }
-                                    else
-                                        bResult = sal_True;
                                 }
-                                else
-                                    throw;
+                            }
+                            catch ( uno::Exception& )
+                            {
+                                // exception means that the lock file can not be successfuly accessed
+                                // in this case it should be ignored if system file locking is anyway active
+                                if ( bUseSystemLock || !IsOOoLockFileUsed() )
+                                {
+                                    bResult = sal_True;
+                                    // take the ownership over the lock file
+                                    aLockFile.OverwriteOwnLockFile();
+                                }
+                            }
+
+                            // in case OOo locking is turned off the lock file is still written if possible
+                            // but it is ignored while deciding whether the document should be opened for editing or not
+                            if ( !bResult && !IsOOoLockFileUsed() )
+                            {
+                                bResult = sal_True;
+                                // take the ownership over the lock file
+                                aLockFile.OverwriteOwnLockFile();
                             }
                         }
 
@@ -1316,7 +1395,7 @@ sal_Bool SfxMedium::LockOrigFileOnDemand( sal_Bool bLoading, sal_Bool bNoUI )
 
         SFX_ITEMSET_ARG( pSet, pReadOnlyItem, SfxBoolItem, SID_DOC_READONLY, FALSE );
         if ( !bLoading || (pReadOnlyItem && !pReadOnlyItem->GetValue()) )
-            SetError( ERRCODE_IO_ACCESSDENIED );
+            SetError( ERRCODE_IO_ACCESSDENIED, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
         else 
             GetItemSet()->Put( SfxBoolItem( SID_DOC_READONLY, sal_True ) );
     }
@@ -1816,13 +1895,13 @@ sal_Bool SfxMedium::StorageCommit_Impl()
                         }
 
                         if ( !GetError() )
-                            SetError( ERRCODE_IO_GENERAL );
+                            SetError( ERRCODE_IO_GENERAL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
                     }
                 }
                 catch ( uno::Exception& )
                 {
                     //TODO/LATER: improve error handling
-                    SetError( ERRCODE_IO_GENERAL );
+                    SetError( ERRCODE_IO_GENERAL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
                 }
             }
         }
@@ -2102,7 +2181,7 @@ void SfxMedium::Transfer_Impl()
             else
             {
                 DBG_ERROR( "Illegal Output stream parameter!\n" );
-                SetError( ERRCODE_IO_GENERAL );
+                SetError( ERRCODE_IO_GENERAL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
             }
 
             // free the reference
@@ -2147,7 +2226,7 @@ void SfxMedium::Transfer_Impl()
             {
                 //TODO/MBA: error handling
                 //if ( !GetError() )
-                  //  SetError( xStor->GetError() );
+                  //  SetError( xStor->GetError(, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) )) );
             }
             return;
         }
@@ -2192,7 +2271,7 @@ void SfxMedium::Transfer_Impl()
                     SetStorage_Impl( xStor );
                 }
                 else if ( !GetError() )
-                    SetError( xStor->GetError() );
+                    SetError( xStor->GetError(, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) )) );
                 return;
             }*/
         }
@@ -2573,7 +2652,7 @@ void SfxMedium::GetMedium_Impl()
 
         //TODO/MBA: ErrorHandling - how to transport error from MediaDescriptor
         if ( !GetError() && !pImp->xStream.is() && !pImp->xInputStream.is() )
-            SetError( ERRCODE_IO_ACCESSDENIED );
+            SetError( ERRCODE_IO_ACCESSDENIED, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
 
         if ( !GetError() )
         {
@@ -3696,17 +3775,17 @@ void SfxMedium::TryToSwitchToRepairedTemp()
                 catch ( uno::Exception& )
                 {
                     //TODO/MBA: error handling
-                    //SetError( aNewStorage->GetError() );
+                    //SetError( aNewStorage->GetError(, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) )) );
                 }
             }
             else
-                SetError( ERRCODE_IO_CANTWRITE );
+                SetError( ERRCODE_IO_CANTWRITE, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
 
             if (pImp->pTempFile != pTmpFile)
                 delete pTmpFile;
         }
         else
-            SetError( ERRCODE_IO_CANTREAD );
+            SetError( ERRCODE_IO_CANTREAD, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
     }
 }
 
@@ -3756,7 +3835,7 @@ void SfxMedium::CreateTempFile()
     aName = pImp->pTempFile->GetFileName();
     if ( !aName.Len() )
     {
-        SetError( ERRCODE_IO_CANTWRITE );
+        SetError( ERRCODE_IO_CANTWRITE, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
         return;
     }
 
@@ -3800,7 +3879,7 @@ void SfxMedium::CreateTempFileNoCopy()
     aName = pImp->pTempFile->GetFileName();
     if ( !aName.Len() )
     {
-        SetError( ERRCODE_IO_CANTWRITE );
+        SetError( ERRCODE_IO_CANTWRITE, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
         return;
     }
 
@@ -4005,61 +4084,6 @@ sal_Bool SfxMedium::EqualURLs( const ::rtl::OUString& aFirstURL, const ::rtl::OU
     return bResult;
 }
 
-SV_DECL_PTRARR_DEL(SvKeyValueList_Impl, SvKeyValue*, 0, 4)
-SV_IMPL_PTRARR(SvKeyValueList_Impl, SvKeyValue*);
-
-/*
- * SvKeyValueIterator.
- */
-SvKeyValueIterator::SvKeyValueIterator (void)
-    : m_pList (new SvKeyValueList_Impl),
-      m_nPos  (0)
-{
-}
-
-/*
- * ~SvKeyValueIterator.
- */
-SvKeyValueIterator::~SvKeyValueIterator (void)
-{
-    delete m_pList;
-}
-
-/*
- * GetFirst.
- */
-BOOL SvKeyValueIterator::GetFirst (SvKeyValue &rKeyVal)
-{
-    m_nPos = m_pList->Count();
-    return GetNext (rKeyVal);
-}
-
-/*
- * GetNext.
- */
-BOOL SvKeyValueIterator::GetNext (SvKeyValue &rKeyVal)
-{
-    if (m_nPos > 0)
-    {
-        rKeyVal = *m_pList->GetObject(--m_nPos);
-        return TRUE;
-    }
-    else
-    {
-        // Nothing to do.
-        return FALSE;
-    }
-}
-
-/*
- * Append.
- */
-void SvKeyValueIterator::Append (const SvKeyValue &rKeyVal)
-{
-    SvKeyValue *pKeyVal = new SvKeyValue (rKeyVal);
-    m_pList->C40_INSERT(SvKeyValue, pKeyVal, m_pList->Count());
-}
-
 BOOL SfxMedium::HasStorage_Impl() const
 {
     return pImp->xStorage.is();
diff --git a/sfx2/source/doc/doctemplates.cxx b/sfx2/source/doc/doctemplates.cxx
index a2047a1..6b07a22 100644
--- a/sfx2/source/doc/doctemplates.cxx
+++ b/sfx2/source/doc/doctemplates.cxx
@@ -1220,10 +1220,14 @@ void SfxDocTplService_Impl::doUpdate()
 
     // the last directory in the list must be writable
     sal_Bool bWriteableDirectory = sal_True;
+
+    // the target folder might not exist, for this reason no interaction handler should be used
+    uno::Reference< XCommandEnvironment > aQuietEnv;
+
     while ( nCountDir )
     {
         nCountDir--;
-        if ( Content::create( pDirs[ nCountDir ], maCmdEnv, aDirContent ) )
+        if ( Content::create( pDirs[ nCountDir ], aQuietEnv, aDirContent ) )
         {
             createFromContent( aGroupList, aDirContent, sal_False, bWriteableDirectory );
         }
@@ -2535,7 +2539,10 @@ void SfxDocTplService_Impl::addFsysGroup( GroupList_Impl& rList,
 
     try
     {
-        aContent = Content( rOwnURL, maCmdEnv );
+        // this method is only used during checking of the available template-folders
+        // that should happen quietly
+        uno::Reference< XCommandEnvironment > aQuietEnv;
+        aContent = Content( rOwnURL, aQuietEnv );
         ResultSetInclude eInclude = INCLUDE_DOCUMENTS_ONLY;
         xResultSet = aContent.createCursor( aProps, eInclude );
     }
diff --git a/sfx2/source/doc/objmisc.cxx b/sfx2/source/doc/objmisc.cxx
index de0f500..88b3ab7 100644
--- a/sfx2/source/doc/objmisc.cxx
+++ b/sfx2/source/doc/objmisc.cxx
@@ -38,6 +38,7 @@
 #include <svtools/eitem.hxx>
 #include <svtools/stritem.hxx>
 #include <svtools/intitem.hxx>
+#include <svtools/svparser.hxx> // SvKeyValue
 #include <vos/mutex.hxx>
 #include <cppuhelper/exc_hlp.hxx>
 
@@ -64,6 +65,7 @@
 #include <com/sun/star/embed/XEmbedPersist.hpp>
 #include <com/sun/star/util/XModifiable.hpp>
 #include <com/sun/star/container/XChild.hpp>
+#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
 
 
 #include <com/sun/star/script/provider/XScript.hpp>
@@ -113,6 +115,7 @@ using namespace ::com::sun::star::container;
 #include <svtools/inettype.hxx>
 #include <svtools/sharecontrolfile.hxx>
 #include <osl/file.hxx>
+#include <rtl/bootstrap.hxx>
 #include <vcl/svapp.hxx>
 #include <framework/interaction.hxx>
 #include <comphelper/storagehelper.hxx>
@@ -256,10 +259,15 @@ void SfxObjectShell::FlushDocInfo()
 
 //-------------------------------------------------------------------------
 
-void SfxObjectShell::SetError(sal_uInt32 lErr)
+void SfxObjectShell::SetError( sal_uInt32 lErr, const ::rtl::OUString& aLogMessage )
 {
     if(pImp->lErr==ERRCODE_NONE)
+    {
         pImp->lErr=lErr;
+
+        if( lErr != ERRCODE_NONE && aLogMessage.getLength() )
+            AddLog( aLogMessage );
+    }
 }
 
 //-------------------------------------------------------------------------
@@ -285,6 +293,9 @@ sal_uInt32 SfxObjectShell::GetErrorCode() const
 
 void SfxObjectShell::ResetError()
 {
+    if( pImp->lErr != ERRCODE_NONE )
+        AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Resetting Error." ) ) );
+
     pImp->lErr=0;
     SfxMedium * pMed = GetMedium();
     if( pMed )
@@ -669,7 +680,7 @@ void SfxObjectShell::DisconnectFromShared()
             SfxMedium* pTmpMedium = pMedium;
             ForgetMedium();
             if( !DoSaveCompleted( pTmpMedium ) )
-                SetError( ERRCODE_IO_GENERAL );
+                SetError( ERRCODE_IO_GENERAL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
             else
             {
                 // the medium should not dispose the storage, DoSaveCompleted() has let it to do so
@@ -1444,7 +1455,7 @@ void SfxObjectShell::TemplateDisconnectionAfterLoad()
 
             ForgetMedium();
             if( !DoSaveCompleted( pTmpMedium ) )
-                SetError( ERRCODE_IO_GENERAL );
+                SetError( ERRCODE_IO_GENERAL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
             else
             {
                 SFX_ITEMSET_ARG( pMedium->GetItemSet(), pSalvageItem, SfxStringItem, SID_DOC_SALVAGE, sal_False );
@@ -2330,3 +2341,89 @@ void SfxObjectShell_Impl::showBrokenSignatureWarning( const uno::Reference< task
         const_cast< SfxObjectShell_Impl* >( this )->bSignatureErrorIsShown = sal_True;
     }
 }
+
+void SfxObjectShell::AddLog( const ::rtl::OUString& aMessage )
+{
+    if ( !pImp->m_xLogRing.is() )
+    {
+        try
+        {
+            ::comphelper::ComponentContext aContext( ::comphelper::getProcessServiceFactory() );
+            if ( aContext.is() )
+                pImp->m_xLogRing.set( aContext.getSingleton( "com.sun.star.logging.DocumentIOLogRing" ), UNO_QUERY_THROW );
+        }
+        catch( uno::Exception& )
+        {}
+    }
+
+    if ( pImp->m_xLogRing.is() )
+        pImp->m_xLogRing->logString( aMessage );
+}
+
+namespace {
+
+void WriteStringInStream( const uno::Reference< io::XOutputStream >& xOutStream, const ::rtl::OUString& aString )
+{
+    if ( xOutStream.is() )
+    {
+        ::rtl::OString aStrLog = ::rtl::OUStringToOString( aString, RTL_TEXTENCODING_UTF8 );
+        uno::Sequence< sal_Int8 > aLogData( (const sal_Int8*)aStrLog.getStr(), aStrLog.getLength() );
+        xOutStream->writeBytes( aLogData );
+
+        aLogData.realloc( 1 );
+        aLogData[0] = '\n';
+        xOutStream->writeBytes( aLogData );
+    }
+}
+
+}
+
+void SfxObjectShell::StoreLog()
+{
+    if ( !pImp->m_xLogRing.is() )
+    {
+        try
+        {
+            ::comphelper::ComponentContext aContext( ::comphelper::getProcessServiceFactory() );
+            if ( aContext.is() )
+                pImp->m_xLogRing.set( aContext.getSingleton( "com.sun.star.logging.DocumentIOLogRing" ), UNO_QUERY_THROW );
+        }
+        catch( uno::Exception& )
+        {}
+    }
+
+    if ( pImp->m_xLogRing.is() )
+    {
+        ::rtl::OUString aFileURL =
+            ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "${$BRAND_BASE_DIR/program/bootstrap.ini:UserInstallation}" ) );
+        ::rtl::Bootstrap::expandMacros( aFileURL );
+
+        ::rtl::OUString aBuildID = 
+            ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "${$BRAND_BASE_DIR/program/setup.ini:buildid}" ) );
+        ::rtl::Bootstrap::expandMacros( aBuildID );
+
+        if ( aFileURL.getLength() )
+        {
+            aFileURL += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/user/temp/document_io_logring.txt" ) );
+            try
+            {
+                uno::Reference< lang::XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory(), uno::UNO_SET_THROW );
+                uno::Reference< ucb::XSimpleFileAccess > xSimpleFileAccess( xFactory->createInstance( DEFINE_CONST_UNICODE( "com.sun.star.ucb.SimpleFileAccess" ) ), uno::UNO_QUERY_THROW );
+                uno::Reference< io::XStream > xStream( xSimpleFileAccess->openFileReadWrite( aFileURL ), uno::UNO_SET_THROW );
+                uno::Reference< io::XOutputStream > xOutStream( xStream->getOutputStream(), uno::UNO_SET_THROW );
+                uno::Reference< io::XTruncate > xTruncate( xOutStream, uno::UNO_QUERY_THROW );
+                xTruncate->truncate();
+
+                if ( aBuildID.getLength() )
+                    WriteStringInStream( xOutStream, aBuildID );
+
+                uno::Sequence< ::rtl::OUString > aLogSeq = pImp->m_xLogRing->getCollectedLog();
+                for ( sal_Int32 nInd = 0; nInd < aLogSeq.getLength(); nInd++ )
+                    WriteStringInStream( xOutStream, aLogSeq[nInd] );
+            }
+            catch( uno::Exception& )
+            {}
+        }
+    }
+}
+
diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx
index bc1cd79..d65dc99 100644
--- a/sfx2/source/doc/objserv.cxx
+++ b/sfx2/source/doc/objserv.cxx
@@ -639,11 +639,20 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
                 SfxStoringHelper aHelper( xEmptyFactory );
 
                 if ( QueryHiddenInformation( bIsPDFExport ? WhenCreatingPDF : WhenSaving, NULL ) == RET_YES )
+                {
                     bDialogUsed = aHelper.GUIStoreModel( GetModel(),
-                                                    ::rtl::OUString::createFromAscii( pSlot->GetUnoName() ),
-                                                    aDispatchArgs,
-                                                    bPreselectPassword,
-                                                    GetSharedFileURL() );
+                                                         ::rtl::OUString::createFromAscii( pSlot->GetUnoName() ),
+                                                         aDispatchArgs,
+                                                         bPreselectPassword,
+                                                         GetSharedFileURL() );
+                }
+                else
+                {
+                    // the user has decided not to store the document
+                    throw task::ErrorCodeIOException( ::rtl::OUString(),
+                                                      uno::Reference< uno::XInterface >(),
+                                                      ERRCODE_IO_ABORT );
+                }
 
                 // the scripting signature might be preserved
                 // pImp->nScriptingSignatureState = SIGNATURESTATE_NOSIGNATURES;
diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx
index 37259eb..6c5c543 100644
--- a/sfx2/source/doc/objstor.cxx
+++ b/sfx2/source/doc/objstor.cxx
@@ -282,7 +282,7 @@ sal_Bool SfxObjectShell::PutURLContentsToVersionStream_Impl(
     catch( uno::Exception& )
     {
         // TODO/LATER: handle the error depending on exception
-        SetError( ERRCODE_IO_GENERAL );
+        SetError( ERRCODE_IO_GENERAL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
     }
 
     return bResult;
@@ -314,7 +314,7 @@ sal_Bool SfxObjectShell::PutURLContentsToVersionStream_Impl(
             aTempURL = ::rtl::OUString();
 
             // TODO/LATER: may need error code setting based on exception
-            SetError( ERRCODE_IO_GENERAL );
+            SetError( ERRCODE_IO_GENERAL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
         }
     }
 
@@ -356,7 +356,7 @@ void SfxObjectShell::SetupStorage( const uno::Reference< embed::XStorage >& xSto
                 }
                 catch( uno::Exception& )
                 {
-                    const_cast<SfxObjectShell*>( this )->SetError( ERRCODE_IO_GENERAL );
+                    const_cast<SfxObjectShell*>( this )->SetError( ERRCODE_IO_GENERAL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
                 }
 
                 ::rtl::OUString aVersion;
@@ -412,7 +412,7 @@ sal_Bool SfxObjectShell::GeneralInit_Impl( const uno::Reference< embed::XStorage
             {
                 if ( bTypeMustBeSetAlready )
                 {
-                    SetError( ERRCODE_IO_BROKENPACKAGE );
+                    SetError( ERRCODE_IO_BROKENPACKAGE, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
                     return sal_False;
                 }
 
@@ -632,7 +632,7 @@ sal_Bool SfxObjectShell::DoLoad( SfxMedium *pMed )
     {
         sal_uInt32 nError = HandleFilter( pMedium, this );
         if ( nError != ERRCODE_NONE )
-            SetError( nError );
+            SetError( nError, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
     }
 
     EnableSetModified( sal_False );
@@ -666,12 +666,12 @@ sal_Bool SfxObjectShell::DoLoad( SfxMedium *pMed )
                 }
 
                 if ( bWarnMediaTypeFallback || !xStorage->getElementNames().getLength() )
-                    SetError( ERRCODE_IO_BROKENPACKAGE );
+                    SetError( ERRCODE_IO_BROKENPACKAGE, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
             }
             catch( uno::Exception& )
             {
                 // TODO/LATER: may need error code setting based on exception
-                SetError( ERRCODE_IO_GENERAL );
+                SetError( ERRCODE_IO_GENERAL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
             }
 
             // Load
@@ -691,11 +691,11 @@ sal_Bool SfxObjectShell::DoLoad( SfxMedium *pMed )
                         SetReadOnlyUI();
                 }
                 else
-                    SetError( ERRCODE_ABORT );
+                    SetError( ERRCODE_ABORT, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
             }
         }
         else
-            SetError( pMed->GetLastStorageCreationState() );
+            SetError( pMed->GetLastStorageCreationState(), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
     }
     else if ( GetError() == ERRCODE_NONE && InitNew(0) )
     {
@@ -1049,7 +1049,7 @@ sal_Bool SfxObjectShell::DoSave()
                 }
                 catch( uno::Exception& )
                 {
-                    SetError( ERRCODE_IO_GENERAL );
+                    SetError( ERRCODE_IO_GENERAL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
                 }
 
                 DBG_ASSERT( bOk, "The root storage must allow to set common password!\n" );
@@ -1089,7 +1089,7 @@ sal_Bool SfxObjectShell::DoSave()
                 }
                 catch( uno::Exception& )
                 {
-                    SetError( ERRCODE_IO_GENERAL );
+                    SetError( ERRCODE_IO_GENERAL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
                     bOk = sal_False;
                 }
             }
@@ -1140,6 +1140,8 @@ sal_Bool SfxObjectShell::SaveTo_Impl
 {
     RTL_LOGFILE_CONTEXT( aLog, "sfx2 (mv76033) SfxObjectShell::SaveTo_Impl" );
 
+    AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Begin" ) ) );
+
     ModifyBlocker_Impl aMod(this);
 
     const SfxFilter *pFilter = rMedium.GetFilter();
@@ -1161,7 +1163,7 @@ sal_Bool SfxObjectShell::SaveTo_Impl
     // protected libraries exceed the size we can handler
     if ( bOwnTarget && !QuerySaveSizeExceededModules_Impl( rMedium.GetInteractionHandler() ) )
     {
-        SetError( ERRCODE_IO_ABORT );
+        SetError( ERRCODE_IO_ABORT, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
         return sal_False;
     }
 
@@ -1178,6 +1180,8 @@ sal_Bool SfxObjectShell::SaveTo_Impl
         || pImp->nScriptingSignatureState == SIGNATURESTATE_SIGNATURES_NOTVALIDATED
         || pImp->nScriptingSignatureState == SIGNATURESTATE_SIGNATURES_INVALID ) )
     {
+        AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "MacroSignaturePreserving" ) ) );
+
         // the checking of the library modified state iterates over the libraries, should be done only when required
         bTryToPreservScriptSignature = !pImp->pBasicManager->isAnyContainerModified();
         if ( bTryToPreservScriptSignature )
@@ -1221,13 +1225,14 @@ sal_Bool SfxObjectShell::SaveTo_Impl
       && SfxMedium::EqualURLs( pMedium->GetName(), rMedium.GetName() ) )
     {
         bStoreToSameLocation = sal_True;
+        AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Save" ) ) );
 
         rMedium.CheckFileDate( pMedium->GetInitFileDate() );
 
         if ( bCopyTo && GetCreateMode() != SFX_CREATE_MODE_EMBEDDED )
         {
             // export to the same location is vorbidden
-            SetError( ERRCODE_IO_CANTWRITE );
+            SetError( ERRCODE_IO_CANTWRITE, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
         }
         else
         {
@@ -1236,10 +1241,11 @@ sal_Bool SfxObjectShell::SaveTo_Impl
             const sal_Bool bDoBackup = SvtSaveOptions().IsBackup();
             if ( bDoBackup )
             {
+                AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "DoBackup" ) ) );
                 rMedium.DoBackup_Impl();
                 if ( rMedium.GetError() )
                 {
-                    SetError( rMedium.GetErrorCode() );
+                    SetError( rMedium.GetErrorCode(), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
                     rMedium.ResetError();
                 }
             }
@@ -1262,6 +1268,9 @@ sal_Bool SfxObjectShell::SaveTo_Impl
                     // commit the wrapper stream ( the stream will connect the URL only on commit, after that it will hold it )
                     // if the last step is failed the stream should stay to be transacted and should be commited on any flush
                     // so we can forget the stream in any way and the next storage commit will flush it
+
+                AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Save: Own to Own" ) ) );
+
                 bNeedsDisconnectionOnFail = DisconnectStorage_Impl(
                     *pMedium, rMedium );
                 if ( bNeedsDisconnectionOnFail
@@ -1282,6 +1291,9 @@ sal_Bool SfxObjectShell::SaveTo_Impl
                 // the source and the target formats are alien
                 // just disconnect the stream from the source format
                 // so that the target medium can use it
+
+                AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Save: Alien to Alien" ) ) );
+
                 pMedium->CloseAndRelease();
                 rMedium.CloseAndRelease();
                 rMedium.CreateTempFileNoCopy();
@@ -1292,6 +1304,9 @@ sal_Bool SfxObjectShell::SaveTo_Impl
                 // the source format is an alien one but the target
                 // format is an own one so just disconnect the source
                 // medium
+
+                AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Save: Alien to Own" ) ) );
+
                 pMedium->CloseAndRelease();
                 rMedium.CloseAndRelease();
                 rMedium.GetOutputStorage();
@@ -1301,6 +1316,9 @@ sal_Bool SfxObjectShell::SaveTo_Impl
                 // the source format is an own one but the target is
                 // an alien format, just connect the source to temporary
                 // storage
+
+                AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Save: Own to Alien" ) ) );
+
                 bNeedsDisconnectionOnFail = DisconnectStorage_Impl(
                     *pMedium, rMedium );
                 if ( bNeedsDisconnectionOnFail
@@ -1320,6 +1338,9 @@ sal_Bool SfxObjectShell::SaveTo_Impl
         // the alien filters still might write directly to the file, that is of course a bug,
         // but for now the framework has to be ready for it
         // TODO/LATER: let the medium be prepared for alien formats as well
+
+        AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "SaveAs/Export" ) ) );
+
         rMedium.CloseAndRelease();
         if ( bStorageBasedTarget )
         {
@@ -1331,6 +1352,8 @@ sal_Bool SfxObjectShell::SaveTo_Impl
     if( rMedium.GetErrorCode() || pMedium->GetErrorCode() || GetErrorCode() )
         return sal_False;
 
+    AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Locking" ) ) );
+
     rMedium.LockOrigFileOnDemand( sal_False, sal_False );
 
     if ( bStorageBasedTarget )
@@ -1384,12 +1407,14 @@ sal_Bool SfxObjectShell::SaveTo_Impl
 
     if( bOwnTarget && !( pFilter->GetFilterFlags() & SFX_FILTER_STARONEFILTER ) )
     {
+        AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Storing in own format." ) ) );
         uno::Reference< embed::XStorage > xMedStorage = rMedium.GetStorage();
         if ( !xMedStorage.is() )
         {
             // no saving without storage, unlock UI and return
             Lock_Impl( this, sal_False );
             pImp->bForbidReload = bOldStat;
+            AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Storing failed, still no error set." ) ) );
             return sal_False;
         }
 
@@ -1406,7 +1431,7 @@ sal_Bool SfxObjectShell::SaveTo_Impl
             catch( uno::Exception& )
             {
                 DBG_ERROR( "Setting of common encryption key failed!" );
-                SetError( ERRCODE_IO_GENERAL );
+                SetError( ERRCODE_IO_GENERAL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
             }
         }
         else
@@ -1425,15 +1450,18 @@ sal_Bool SfxObjectShell::SaveTo_Impl
             if ( xMedStorage == GetStorage() )
             {
                 OSL_ENSURE( !pVersionItem, "This scenario is impossible currently!\n" );
+                AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Should be impossible." ) ) );
                 // usual save procedure
                 bOk = Save();
             }
             else
             {
                 // save to target
+                AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Save as own format." ) ) );
                 bOk = SaveAsOwnFormat( rMedium );
                 if ( bOk && pVersionItem )
                 {
+                    AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "pVersionItem != NULL" ) ) );
                     aTmpVersionURL = CreateTempCopyOfStorage_Impl( xMedStorage );
                     bOk = ( aTmpVersionURL.getLength() > 0 );
                 }
@@ -1444,7 +1472,7 @@ sal_Bool SfxObjectShell::SaveTo_Impl
         if ( bOk && GetCreateMode() != SFX_CREATE_MODE_EMBEDDED )
         {
             // store the thumbnail representation image
-            // TODO: handle the case when document is encrypted and/or signed
+            AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Thumbnail creation." ) ) );
             if ( !GenerateAndStoreThumbnail( bPasswdProvided,
                                             sal_False,
                                             pFilter->IsOwnTemplateFormat(),
@@ -1459,6 +1487,7 @@ sal_Bool SfxObjectShell::SaveTo_Impl
         {
             if ( pImp->bIsSaving || pImp->bPreserveVersions )
             {
+                AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Preserve versions." ) ) );
                 try
                 {
                     Sequence < util::RevisionTag > aVersions = rMedium.GetVersionList();
@@ -1488,6 +1517,7 @@ sal_Bool SfxObjectShell::SaveTo_Impl
                 }
                 catch( uno::Exception& )
                 {
+                    AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Preserve versions has failed." ) ) );
                     DBG_ERROR( "Couldn't copy versions!\n" );
                     bOk = sal_False;
                     // TODO/LATER: a specific error could be set
@@ -1540,6 +1570,7 @@ sal_Bool SfxObjectShell::SaveTo_Impl
     }
     else
     {
+        AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Storing in alien format." ) ) );
         // it's a "SaveAs" in an alien format
         if ( rMedium.GetFilter() && ( rMedium.GetFilter()->GetFilterFlags() & SFX_FILTER_STARONEFILTER ) )
             bOk = ExportTo( rMedium );
@@ -1617,6 +1648,8 @@ sal_Bool SfxObjectShell::SaveTo_Impl
 
     if ( bOk )
     {
+        AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Medium commit." ) ) );
+
         // transfer data to its destinated location
         // the medium commits the storage or the stream it is based on
         RegisterTransfer( rMedium );
@@ -1624,6 +1657,8 @@ sal_Bool SfxObjectShell::SaveTo_Impl
 
         if ( bOk && bScriptSignatureIsCopied )
         {
+            AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Script signature check." ) ) );
+
             // if the script signature was copied it should be checked now
             // usually it should be ok, so no additional actions will be done
             // but if for any reasong ( f.e. binshell change ) it is broken it should be removed here
@@ -1671,6 +1706,8 @@ sal_Bool SfxObjectShell::SaveTo_Impl
 
         if ( bOk )
         {
+            AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Storing is successful." ) ) );
+
             // if the target medium is an alien format and the "old" medium was an own format and the "old" medium
             // has a name, the object storage must be exchanged, because now we need a new temporary storage
             // as object storage
@@ -1689,12 +1726,17 @@ sal_Bool SfxObjectShell::SaveTo_Impl
                     OSL_ENSURE( pMedium->GetName().Len(), "Fallback is used, the medium without name should not dispose the storage!\n" );
                     // copy storage of old medium to new temporary storage and take this over
                     if( !ConnectTmpStorage_Impl( pMedium->GetStorage(), pMedium ) )
+                    {
+                        AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Process after storing has failed." ) ) );
                         bOk = sal_False;
+                    }
                 }
             }
         }
         else
         {
+            AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Storing has failed." ) ) );
+
             // in case the document storage was connected to backup temporarely it must be disconnected now
             if ( bNeedsDisconnectionOnFail )
                 ConnectTmpStorage_Impl( pImp->m_xDocStorage, NULL );
@@ -1848,7 +1890,7 @@ sal_Bool SfxObjectShell::ConnectTmpStorage_Impl(
         if ( !bResult )
         {
             // TODO/LATER: may need error code setting based on exception
-            SetError( ERRCODE_IO_GENERAL );
+            SetError( ERRCODE_IO_GENERAL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
         }
     }
 
@@ -1904,7 +1946,7 @@ sal_Bool SfxObjectShell::DoSaveAs( SfxMedium& rMedium )
 {
     // hier kommen nur Root-Storages rein, die via Temp-File gespeichert werden
     rMedium.CreateTempFileNoCopy();
-    SetError(rMedium.GetErrorCode());
+    SetError(rMedium.GetErrorCode(), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
     if ( GetError() )
         return sal_False;
 
@@ -1914,7 +1956,7 @@ sal_Bool SfxObjectShell::DoSaveAs( SfxMedium& rMedium )
 
     sal_Bool bRet = SaveTo_Impl( rMedium, NULL );
     if ( !bRet )
-        SetError(rMedium.GetErrorCode());
+        SetError(rMedium.GetErrorCode(), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
     return bRet;
 }
 
@@ -2478,7 +2520,7 @@ sal_Bool SfxObjectShell::DoSave_Impl( const SfxItemSet* pArgs )
 //    pMediumTmp->CreateTempFileNoCopy();
     if ( pMediumTmp->GetErrorCode() != ERRCODE_NONE )
     {
-        SetError( pMediumTmp->GetError() );
+        SetError( pMediumTmp->GetError(), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
         delete pMediumTmp;
         return sal_False;
     }
@@ -2487,7 +2529,7 @@ sal_Bool SfxObjectShell::DoSave_Impl( const SfxItemSet* pArgs )
     pMediumTmp->TransferVersionList_Impl( *pRetrMedium );
 /*
     if ( pFilter && ( pFilter->GetFilterFlags() & SFX_FILTER_PACKED ) )
-        SetError( GetMedium()->Unpack_Impl( pRetrMedium->GetPhysicalName() ) );
+        SetError( GetMedium()->Unpack_Impl( pRetrMedium->GetPhysicalName() ), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
 */
 
     // an interaction handler here can aquire only in case of GUI Saving
@@ -2508,7 +2550,7 @@ sal_Bool SfxObjectShell::DoSave_Impl( const SfxItemSet* pArgs )
             pMediumTmp->GetItemSet()->ClearItem( SID_PROGRESS_STATUSBAR_CONTROL );
         }
 
-        SetError(pMediumTmp->GetErrorCode());
+        SetError(pMediumTmp->GetErrorCode(), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
 
 //REMOVE	        if ( !IsHandsOff() )
 //REMOVE			pMediumTmp->Close();
@@ -2520,7 +2562,7 @@ sal_Bool SfxObjectShell::DoSave_Impl( const SfxItemSet* pArgs )
     else
     {
         // transfer error code from medium to objectshell
-        SetError( pMediumTmp->GetError() );
+        SetError( pMediumTmp->GetError(), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
 
         // reconnect to object storage
 //REMOVE	        if ( IsHandsOff() )
@@ -2550,7 +2592,7 @@ sal_Bool SfxObjectShell::Save_Impl( const SfxItemSet* pSet )
 {
     if ( IsReadOnly() )
     {
-        SetError( ERRCODE_SFX_DOCUMENTREADONLY );
+        SetError( ERRCODE_SFX_DOCUMENTREADONLY, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
         return sal_False;
     }
 
@@ -2596,7 +2638,7 @@ sal_Bool SfxObjectShell::CommonSaveAs_Impl
 {
     if( aURL.HasError() )
     {
-        SetError( ERRCODE_IO_INVALIDPARAMETER );
+        SetError( ERRCODE_IO_INVALIDPARAMETER, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
         return sal_False;
     }
 
@@ -2618,7 +2660,7 @@ sal_Bool SfxObjectShell::CommonSaveAs_Impl
         if ( pDoc )
         {
             // dann Fehlermeldeung: "schon offen"
-            SetError(ERRCODE_SFX_ALREADYOPEN);
+            SetError(ERRCODE_SFX_ALREADYOPEN, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ));
             return sal_False;
         }
     }
@@ -2634,7 +2676,7 @@ sal_Bool SfxObjectShell::CommonSaveAs_Impl
         || !pFilter->CanExport()
         || (!bSaveTo && !pFilter->CanImport()) )
     {
-        SetError( ERRCODE_IO_INVALIDPARAMETER );
+        SetError( ERRCODE_IO_INVALIDPARAMETER, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
         return sal_False;
     }
 
@@ -2656,7 +2698,7 @@ sal_Bool SfxObjectShell::CommonSaveAs_Impl
     if ( aURL == aActName && aURL != INetURLObject( OUString::createFromAscii( "private:stream" ) )
         && IsReadOnly() )
     {
-        SetError(ERRCODE_SFX_DOCUMENTREADONLY);
+        SetError(ERRCODE_SFX_DOCUMENTREADONLY, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ));
         return sal_False;
     }
 
@@ -2793,7 +2835,7 @@ sal_Bool SfxObjectShell::PreDoSaveAs_Impl
     if ( pNewFile->GetErrorCode() != ERRCODE_NONE )
     {
         // creating temporary file failed ( f.e. floppy disk not inserted! )
-        SetError( pNewFile->GetError() );
+        SetError( pNewFile->GetError(), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
         delete pNewFile;
         return sal_False;
     }
@@ -2813,7 +2855,7 @@ sal_Bool SfxObjectShell::PreDoSaveAs_Impl
     if ( GetMedium()->GetFilter() && ( GetMedium()->GetFilter()->GetFilterFlags() & SFX_FILTER_PACKED ) )
     {
         SfxMedium *pMed = bCopyTo ? pMedium : pNewFile;
-        pNewFile->SetError( GetMedium()->Unpack_Impl( pMed->GetPhysicalName() ) );
+        pNewFile->SetError( GetMedium()->Unpack_Impl( pMed->GetPhysicalName() ) , ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
     }
 */
     // Save the document ( first as temporary file, then transfer to the target URL by committing the medium )
@@ -2823,7 +2865,7 @@ sal_Bool SfxObjectShell::PreDoSaveAs_Impl
         bOk = sal_True;
 
         // transfer a possible error from the medium to the document
-        SetError( pNewFile->GetErrorCode() );
+        SetError( pNewFile->GetErrorCode(), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
 
         // notify the document that saving was done successfully
 //REMOVE	        if ( bCopyTo )
@@ -2854,7 +2896,7 @@ sal_Bool SfxObjectShell::PreDoSaveAs_Impl
             //		 and the DoSaveCompleted call should not be able to fail in general
 
             DBG_ASSERT( !bCopyTo, "Error while reconnecting to medium, can't be handled!");
-            SetError( pNewFile->GetErrorCode() );
+            SetError( pNewFile->GetErrorCode(), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
 
             if ( !bCopyTo )
             {
@@ -2888,7 +2930,7 @@ sal_Bool SfxObjectShell::PreDoSaveAs_Impl
     }
     else
     {
-        SetError( pNewFile->GetErrorCode() );
+        SetError( pNewFile->GetErrorCode(), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
 
 //REMOVE	        // reconnect to the old storage
 //REMOVE	        if ( IsHandsOff() )
diff --git a/sfx2/source/doc/plugin.cxx b/sfx2/source/doc/plugin.cxx
index 6c98c6d..4a8a7e3 100644
--- a/sfx2/source/doc/plugin.cxx
+++ b/sfx2/source/doc/plugin.cxx
@@ -168,7 +168,7 @@ throw( uno::RuntimeException )
         // we must destroy the plugin before the parent is destroyed
         xWindow->addEventListener( this );
         xFrame->setComponent( xWindow, uno::Reference < frame::XController >() );
-        return TRUE;
+        return mxPlugin.is() ? TRUE : FALSE;
     }
 
     return FALSE;
diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx
index 1fef834..a0aea4d 100644
--- a/sfx2/source/doc/sfxbasemodel.cxx
+++ b/sfx2/source/doc/sfxbasemodel.cxx
@@ -1485,6 +1485,7 @@ void SAL_CALL SfxBaseModel::storeSelf( const    uno::Sequence< beans::PropertyVa
 
     if ( m_pData->m_pObjectShell.Is() )
     {
+        m_pData->m_pObjectShell->AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "storeSelf" ) ) );
         SfxSaveGuard aSaveGuard(this, m_pData, sal_False);
 
         for ( sal_Int32 nInd = 0; nInd < aSeqArgs.getLength(); nInd++ )
@@ -1495,6 +1496,9 @@ void SAL_CALL SfxBaseModel::storeSelf( const    uno::Sequence< beans::PropertyVa
               && !aSeqArgs[nInd].Name.equals( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "InteractionHandler" ) ) )
               && !aSeqArgs[nInd].Name.equals( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "StatusIndicator" ) ) ) )
             {
+                m_pData->m_pObjectShell->AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "unexpected parameter for storeSelf, might be no problem if SaveAs is executed." ) ) );
+                m_pData->m_pObjectShell->StoreLog();
+
                 ::rtl::OUString aMessage( RTL_CONSTASCII_USTRINGPARAM( "Unexpected MediaDescriptor parameter: " ) );
                 aMessage += aSeqArgs[nInd].Name;
                 throw lang::IllegalArgumentException( aMessage, uno::Reference< uno::XInterface >(), 1 );
@@ -1539,12 +1543,17 @@ void SAL_CALL SfxBaseModel::storeSelf( const    uno::Sequence< beans::PropertyVa
 
         if ( bRet )
         {
+            m_pData->m_pObjectShell->AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "successful saving." ) ) );
             m_pData->m_aPreusedFilterName = GetMediumFilterName_Impl();
 
             SFX_APP()->NotifyEvent( SfxEventHint( SFX_EVENT_SAVEDOCDONE, m_pData->m_pObjectShell ) );
         }
         else
         {
+            m_pData->m_pObjectShell->AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Storing failed!" ) ) );
+            m_pData->m_pObjectShell->StoreLog();
+
+            // write the contents of the logger to the file
             SFX_APP()->NotifyEvent( SfxEventHint( SFX_EVENT_SAVEDOCFAILED, m_pData->m_pObjectShell ) );
 
             throw task::ErrorCodeIOException( ::rtl::OUString(), uno::Reference< uno::XInterface >(), nErrCode );
@@ -1579,6 +1588,7 @@ void SAL_CALL SfxBaseModel::storeAsURL( const   ::rtl::OUString&
 
     if ( m_pData->m_pObjectShell.Is() )
     {
+        m_pData->m_pObjectShell->AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "storeAsURL" ) ) );
         SfxSaveGuard aSaveGuard(this, m_pData, sal_False);
 
         impl_store( rURL, rArgs, sal_False );
@@ -1604,6 +1614,7 @@ void SAL_CALL SfxBaseModel::storeToURL( const   ::rtl::OUString&
 
     if ( m_pData->m_pObjectShell.Is() )
     {
+        m_pData->m_pObjectShell->AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "storeToURL" ) ) );
         SfxSaveGuard aSaveGuard(this, m_pData, sal_False);
         impl_store( rURL, rArgs, sal_True );
     }
@@ -2468,6 +2479,10 @@ void SfxBaseModel::changing()
     if ( impl_isDisposed() )
         return;
 
+    // the notification should not be sent if the document can not be modified
+    if ( !m_pData->m_pObjectShell.Is() || !m_pData->m_pObjectShell->IsEnableSetModified() )
+        return;
+
     ::cppu::OInterfaceContainerHelper* pIC = m_pData->m_aInterfaceContainer.getContainer( ::getCppuType((const uno::Reference< XMODIFYLISTENER >*)0) );
     if( pIC )
 
@@ -2589,19 +2604,48 @@ void SfxBaseModel::impl_store(  const   ::rtl::OUString&                   sURL
                     aArgHash.erase( aFilterString );
                     aArgHash.erase( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "URL" ) ) );
 
-                    try
+                    // if the password is changed SaveAs should be done
+                    // no password for encrypted document is also a change here
+                    sal_Bool bPassChanged = sal_False;
+
+                    ::comphelper::SequenceAsHashMap::iterator aNewPassIter
+                        = aArgHash.find( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Password" ) ) );
+                    SFX_ITEMSET_ARG( pMedium->GetItemSet(), pPasswordItem, SfxStringItem, SID_PASSWORD, sal_False );
+                    if ( pPasswordItem && aNewPassIter != aArgHash.end() )
                     {
-                        storeSelf( aArgHash.getAsConstPropertyValueList() );
-                        bSaved = sal_True;
+                        ::rtl::OUString aNewPass;
+                        aNewPassIter->second >>= aNewPass;
+                        bPassChanged = !aNewPass.equals( pPasswordItem->GetValue() );
+                    }
+                    else if ( pPasswordItem || aNewPassIter != aArgHash.end() )
+                        bPassChanged = sal_True;
+
+                    if ( !bPassChanged )
+                    {
+                        try
+                        {
+                            storeSelf( aArgHash.getAsConstPropertyValueList() );
+                            bSaved = sal_True;
+                        }
+                        catch( const lang::IllegalArgumentException& )
+                        {
+                            // some additional arguments do not allow to use saving, SaveAs should be done
+                            // but only for normal documents, the shared documents would be overwritten in this case
+                            // that would mean an information loss
+                            // TODO/LATER: need a new interaction for this case
+                            if ( m_pData->m_pObjectShell->IsDocShared() )
+                            {
+                                m_pData->m_pObjectShell->AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Can't store shared document!" ) ) );
+                                m_pData->m_pObjectShell->StoreLog();
+
+                                throw;
+                            }
+                        }
                     }
-                    catch( const lang::IllegalArgumentException& )
+                    else if ( m_pData->m_pObjectShell->IsDocShared() )
                     {
-                        // some additional arguments do not allow to use saving, SaveAs should be done
-                        // but only for normal documents, the shared documents would be overwritten in this case
-                        // that would mean an information loss
-                        // TODO/LATER: need a new interaction for this case
-                        if ( m_pData->m_pObjectShell->IsDocShared() )
-                            throw;
+                        // if the password is changed a special error should be used in case of shared document
+                        throw task::ErrorCodeIOException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Cant change password for shared document." ) ), uno::Reference< uno::XInterface >(), ERRCODE_SFX_SHARED_NOPASSWORDCHANGE );
                     }
                 }
             }
@@ -2623,9 +2667,14 @@ void SfxBaseModel::impl_store(  const   ::rtl::OUString&                   sURL
         SFX_ITEMSET_ARG( aParams, pCopyStreamItem, SfxBoolItem, SID_COPY_STREAM_IF_POSSIBLE, sal_False );
 
         if ( pCopyStreamItem && pCopyStreamItem->GetValue() && !bSaveTo )
+        {
+            m_pData->m_pObjectShell->AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Misuse of CopyStreamIfPossible!" ) ) );
+            m_pData->m_pObjectShell->StoreLog();
+
             throw frame::IllegalArgumentIOException(
                     ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("CopyStreamIfPossible parameter is not acceptable for storeAsURL() call!") ),
                     uno::Reference< uno::XInterface >() );
+        }
 
         // since saving a document modifies its DocumentInfo, the current
         // DocumentInfo must be saved on "SaveTo", so it can be restored 
@@ -2679,7 +2728,10 @@ void SfxBaseModel::impl_store(  const   ::rtl::OUString&                   sURL
 
         sal_uInt32 nErrCode = m_pData->m_pObjectShell->GetErrorCode();
         if ( !bRet && !nErrCode )
+        {
+            m_pData->m_pObjectShell->AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Storing has failed, no error is set!" ) ) );
             nErrCode = ERRCODE_IO_CANTWRITE;
+        }
         m_pData->m_pObjectShell->ResetError();
 
         if ( bRet )
@@ -2708,6 +2760,7 @@ void SfxBaseModel::impl_store(  const   ::rtl::OUString&                   sURL
                 }
             }
 
+            m_pData->m_pObjectShell->AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Storing succeeded!" ) ) );
             if ( !bSaveTo )
             {
                 m_pData->m_aPreusedFilterName = GetMediumFilterName_Impl();
@@ -2720,6 +2773,10 @@ void SfxBaseModel::impl_store(  const   ::rtl::OUString&                   sURL
         }
         else
         {
+            // let the logring be stored to the related file
+            m_pData->m_pObjectShell->AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Storing failed!" ) ) );
+            m_pData->m_pObjectShell->StoreLog();
+
             SFX_APP()->NotifyEvent( SfxEventHint( bSaveTo ? SFX_EVENT_SAVETODOCFAILED : SFX_EVENT_SAVEASDOCFAILED,
                                                     m_pData->m_pObjectShell ) );
 
diff --git a/sfx2/source/inc/objshimp.hxx b/sfx2/source/inc/objshimp.hxx
index e8e4fa5..cf8aedb 100644
--- a/sfx2/source/inc/objshimp.hxx
+++ b/sfx2/source/inc/objshimp.hxx
@@ -33,6 +33,7 @@
 //#include <hash_map>
 
 #include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/logging/XSimpleLogRing.hpp>
 #include <tools/datetime.hxx>
 
 #include <svtools/securityoptions.hxx>
@@ -168,6 +169,8 @@ struct SfxObjectShell_Impl : public ::sfx2::IMacroDocumentAccess
 
     ::rtl::OUString         m_aSharedFileURL;
 
+    ::com::sun::star::uno::Reference< ::com::sun::star::logging::XSimpleLogRing > m_xLogRing;
+
     SfxObjectShell_Impl( SfxObjectShell& _rDocShell );
     virtual ~SfxObjectShell_Impl();
 
diff --git a/svx/inc/svx/svdoole2.hxx b/svx/inc/svx/svdoole2.hxx
index fea3452..180b9fd 100644
--- a/svx/inc/svx/svdoole2.hxx
+++ b/svx/inc/svx/svdoole2.hxx
@@ -157,6 +157,8 @@ public:
     virtual void NbcSetLogicRect(const Rectangle& rRect);
     virtual void SetGeoData(const SdrObjGeoData& rGeo);
 
+    static sal_Bool CanUnloadRunningObj( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XEmbeddedObject >& xObj,
+                                         sal_Int64 nAspect );
     static sal_Bool Unload( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XEmbeddedObject >& xObj, sal_Int64 nAspect );
     BOOL Unload();
     void Connect();
diff --git a/svx/source/svdraw/svdetc.cxx b/svx/source/svdraw/svdetc.cxx
index 320eded..7c7aef9 100644
--- a/svx/source/svdraw/svdetc.cxx
+++ b/svx/source/svdraw/svdetc.cxx
@@ -146,10 +146,13 @@ void OLEObjCache::UnloadOnDemand()
             {
                 try
                 {
-                    sal_Bool bUnload = sal_True;
                     // it is important to get object without reinitialization to avoid reentrance
                     uno::Reference< embed::XEmbeddedObject > xUnloadObj = pUnloadObj->GetObjRef_NoInit();
-                    if ( xUnloadObj.is() )
+
+                    sal_Bool bUnload = SdrOle2Obj::CanUnloadRunningObj( xUnloadObj, pUnloadObj->GetAspect() );
+
+                    // check whether the object can be unloaded before looking for the parent objects
+                    if ( xUnloadObj.is() && bUnload )
                     {
                         uno::Reference< frame::XModel > xUnloadModel( xUnloadObj->getComponent(), uno::UNO_QUERY );
                         if ( xUnloadModel.is() )
@@ -193,11 +196,18 @@ void OLEObjCache::InsertObj(SdrOle2Obj* pObj)
             return;
     }
 
+    // get the old position of the object to know whether it is already in container
+    ULONG nOldPos = GetPos( pObj );
+
     // insert object into first position
-    Remove(pObj);
+    Remove( nOldPos );
     Insert(pObj, (ULONG) 0L);
 
-    UnloadOnDemand();
+    if ( nOldPos == CONTAINER_ENTRY_NOTFOUND )
+    {
+        // a new object was inserted, recalculate the cache
+        UnloadOnDemand();
+    }
 }
 
 void OLEObjCache::RemoveObj(SdrOle2Obj* pObj)
diff --git a/svx/source/svdraw/svdoole2.cxx b/svx/source/svdraw/svdoole2.cxx
index 9942aaf..dfd1ac2 100644
--- a/svx/source/svdraw/svdoole2.cxx
+++ b/svx/source/svdraw/svdoole2.cxx
@@ -1916,40 +1916,60 @@ void SdrOle2Obj::NbcMove(const Size& rSize)
 
 // -----------------------------------------------------------------------------
 
-sal_Bool SdrOle2Obj::Unload( const uno::Reference< embed::XEmbeddedObject >& xObj, sal_Int64 nAspect )
+sal_Bool SdrOle2Obj::CanUnloadRunningObj( const uno::Reference< embed::XEmbeddedObject >& xObj, sal_Int64 nAspect )
 {
     sal_Bool bResult = sal_False;
 
     sal_Int32 nState = xObj->getCurrentState();
     if ( nState == embed::EmbedStates::LOADED )
     {
+        // the object is already unloaded
         bResult = sal_True;
     }
     else
     {
-        sal_Int64 nMiscStatus = xObj->getStatus( nAspect );
         uno::Reference < util::XModifiable > xModifiable( xObj->getComponent(), uno::UNO_QUERY );
-
-        if ( embed::EmbedMisc::MS_EMBED_ALWAYSRUN != ( nMiscStatus & embed::EmbedMisc::MS_EMBED_ALWAYSRUN ) &&
-        embed::EmbedMisc::EMBED_ACTIVATEIMMEDIATELY != ( nMiscStatus & embed::EmbedMisc::EMBED_ACTIVATEIMMEDIATELY ) &&
-        !( xModifiable.is() && xModifiable->isModified() ) &&
-        !( nState == embed::EmbedStates::INPLACE_ACTIVE || nState == embed::EmbedStates::UI_ACTIVE || nState == embed::EmbedStates::ACTIVE ) )
+        if ( !xModifiable.is() )
+            bResult = sal_True;
+        else
         {
-            try
+            sal_Int64 nMiscStatus = xObj->getStatus( nAspect );
+
+            if ( embed::EmbedMisc::MS_EMBED_ALWAYSRUN != ( nMiscStatus & embed::EmbedMisc::MS_EMBED_ALWAYSRUN ) &&
+            embed::EmbedMisc::EMBED_ACTIVATEIMMEDIATELY != ( nMiscStatus & embed::EmbedMisc::EMBED_ACTIVATEIMMEDIATELY ) &&
+            !( xModifiable.is() && xModifiable->isModified() ) &&
+            !( nState == embed::EmbedStates::INPLACE_ACTIVE || nState == embed::EmbedStates::UI_ACTIVE || nState == embed::EmbedStates::ACTIVE ) )
             {
-                xObj->changeState( embed::EmbedStates::LOADED );
                 bResult = sal_True;
             }
-            catch( ::com::sun::star::uno::Exception& e )
-            {
-                (void)e;
-                DBG_ERROR(
-                    (OString("SdrOle2Obj::Unload=(), "
-                            "exception caught: ") +
-                    rtl::OUStringToOString(
-                        comphelper::anyToString( cppu::getCaughtException() ),
-                        RTL_TEXTENCODING_UTF8 )).getStr() );
-            }
+        }
+    }
+
+    return bResult;
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool SdrOle2Obj::Unload( const uno::Reference< embed::XEmbeddedObject >& xObj, sal_Int64 nAspect )
+{
+    sal_Bool bResult = sal_False;
+
+    if ( CanUnloadRunningObj( xObj, nAspect ) )
+    {
+        try
+        {
+            xObj->changeState( embed::EmbedStates::LOADED );
+            bResult = sal_True;
+        }
+        catch( ::com::sun::star::uno::Exception& e )
+        {
+            (void)e;
+            DBG_ERROR(
+                (OString("SdrOle2Obj::Unload=(), "
+                        "exception caught: ") +
+                rtl::OUStringToOString(
+                    comphelper::anyToString( cppu::getCaughtException() ),
+                    RTL_TEXTENCODING_UTF8 )).getStr() );
         }
     }
 
diff --git a/ucb/source/ucp/file/bc.cxx b/ucb/source/ucp/file/bc.cxx
index f25b4a2..ab27941 100644
--- a/ucb/source/ucp/file/bc.cxx
+++ b/ucb/source/ucp/file/bc.cxx
@@ -607,7 +607,7 @@ BaseContent::addProperty(
 {
     if( ( m_nState & JustInserted ) || ( m_nState & Deleted ) || Name == rtl::OUString() )
     {
-        throw lang::IllegalArgumentException();
+        throw lang::IllegalArgumentException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), 0 );
     }
 
     m_pMyShell->associate( m_aUncPath,Name,DefaultValue,Attributes );
@@ -623,7 +623,7 @@ BaseContent::removeProperty(
 {
 
     if( m_nState & Deleted )
-        throw beans::UnknownPropertyException();
+        throw beans::UnknownPropertyException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 
     m_pMyShell->deassociate( m_aUncPath, Name );
 }
@@ -792,7 +792,7 @@ BaseContent::setParent(
     throw( lang::NoSupportException,
            RuntimeException)
 {
-    throw lang::NoSupportException();
+    throw lang::NoSupportException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 }
 
 
@@ -973,12 +973,12 @@ BaseContent::setPropertyValues(
             rtl::OUString NewTitle;
             if( !( Values[i].Value >>= NewTitle ) )
             {
-                ret[i] <<= beans::IllegalTypeException();
+                ret[i] <<= beans::IllegalTypeException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
                 break;
             }
             else if( ! NewTitle.getLength() )
             {
-                ret[i] <<= lang::IllegalArgumentException();
+                ret[i] <<= lang::IllegalArgumentException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), 0 );
                 break;
             }
 
diff --git a/ucb/source/ucp/file/filcmd.cxx b/ucb/source/ucp/file/filcmd.cxx
index fdddd4f..c84cc69 100644
--- a/ucb/source/ucp/file/filcmd.cxx
+++ b/ucb/source/ucp/file/filcmd.cxx
@@ -100,7 +100,7 @@ XCommandInfo_impl::getCommandInfoByName(
         if( m_pMyShell->m_sCommandInfo[i].Name == aName )
             return m_pMyShell->m_sCommandInfo[i];
 
-    throw UnsupportedCommandException();
+    throw UnsupportedCommandException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 }
 
 
@@ -114,7 +114,7 @@ XCommandInfo_impl::getCommandInfoByHandle(
         if( m_pMyShell->m_sCommandInfo[i].Handle == Handle )
             return m_pMyShell->m_sCommandInfo[i];
 
-    throw UnsupportedCommandException();
+    throw UnsupportedCommandException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 }
 
 
diff --git a/ucb/source/ucp/file/filglob.cxx b/ucb/source/ucp/file/filglob.cxx
index 1b61504..2639242 100644
--- a/ucb/source/ucp/file/filglob.cxx
+++ b/ucb/source/ucp/file/filglob.cxx
@@ -66,6 +66,7 @@
 
 using namespace ucbhelper;
 using namespace osl;
+using namespace ::com::sun::star;
 using namespace com::sun::star::task;
 using namespace com::sun::star::beans;
 using namespace com::sun::star::lang;
@@ -277,7 +278,7 @@ namespace fileaccess {
 
         if( errorCode ==  TASKHANDLER_UNSUPPORTED_COMMAND )
         {
-            aAny <<= UnsupportedCommandException();
+            aAny <<= UnsupportedCommandException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
             cancelCommandExecution( aAny,xEnv );
         }
         else if( errorCode == TASKHANDLING_WRONG_SETPROPERTYVALUES_ARGUMENT ||
diff --git a/ucb/source/ucp/file/filinpstr.cxx b/ucb/source/ucp/file/filinpstr.cxx
index d04a95c..a8cd3d8 100644
--- a/ucb/source/ucp/file/filinpstr.cxx
+++ b/ucb/source/ucp/file/filinpstr.cxx
@@ -153,7 +153,7 @@ XInputStream_impl::readBytes(
            io::IOException,
            uno::RuntimeException)
 {
-    if( ! m_nIsOpen ) throw io::IOException();
+    if( ! m_nIsOpen ) throw io::IOException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 
     aData.realloc(nBytesToRead);
         //TODO! translate memory exhaustion (if it were detectable...) into
@@ -162,7 +162,7 @@ XInputStream_impl::readBytes(
     sal_uInt64 nrc(0);
     if(m_aFile.read( aData.getArray(),sal_uInt64(nBytesToRead),nrc )
        != osl::FileBase::E_None)
-        throw io::IOException();
+        throw io::IOException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 
     // Shrink aData in case we read less than nBytesToRead (XInputStream
     // documentation does not tell whether this is required, and I do not know
@@ -219,7 +219,7 @@ XInputStream_impl::closeInput(
     {
         osl::FileBase::RC err = m_aFile.close();
         if( err != osl::FileBase::E_None )
-            throw io::IOException();
+            throw io::IOException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
         m_nIsOpen = false;
     }
 }
@@ -233,9 +233,9 @@ XInputStream_impl::seek(
            uno::RuntimeException )
 {
     if( location < 0 )
-        throw lang::IllegalArgumentException();
+        throw lang::IllegalArgumentException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), 0 );
     if( osl::FileBase::E_None != m_aFile.setPos( Pos_Absolut, sal_uInt64( location ) ) )
-        throw io::IOException();
+        throw io::IOException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 }
 
 
@@ -247,7 +247,7 @@ XInputStream_impl::getPosition(
 {
     sal_uInt64 uPos;
     if( osl::FileBase::E_None != m_aFile.getPos( uPos ) )
-        throw io::IOException();
+        throw io::IOException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
     return sal_Int64( uPos );
 }
 
@@ -259,7 +259,7 @@ XInputStream_impl::getLength(
 {
     sal_uInt64 uEndPos;
     if ( m_aFile.getSize(uEndPos) != osl::FileBase::E_None )
-        throw io::IOException();
+        throw io::IOException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
     else
         return sal_Int64( uEndPos );
 }
diff --git a/ucb/source/ucp/file/filprp.cxx b/ucb/source/ucp/file/filprp.cxx
index 29a2197..3e24118 100644
--- a/ucb/source/ucp/file/filprp.cxx
+++ b/ucb/source/ucp/file/filprp.cxx
@@ -129,7 +129,7 @@ XPropertySetInfo_impl::getPropertyByName(
   for( sal_Int32 i = 0; i < m_seq.getLength(); ++i )
     if( m_seq[i].Name == aName ) return m_seq[i];
 
-  throw beans::UnknownPropertyException();
+  throw beans::UnknownPropertyException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 }
 
 
diff --git a/ucb/source/ucp/file/filrow.cxx b/ucb/source/ucp/file/filrow.cxx
index a69efae..e4ccde0 100644
--- a/ucb/source/ucp/file/filrow.cxx
+++ b/ucb/source/ucp/file/filrow.cxx
@@ -153,7 +153,7 @@ XRow_impl::getString(
      uno::RuntimeException)
 {
   if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-    throw sdbc::SQLException();
+    throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
   rtl::OUString  Value;
   osl::MutexGuard aGuard( m_aMutex );
   m_nWasNull = ::convert<rtl::OUString>( m_pMyShell,m_xTypeConverter,m_aValueMap[ --columnIndex ],Value );
@@ -167,7 +167,7 @@ XRow_impl::getBoolean(
            uno::RuntimeException)
 {
     if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-        throw sdbc::SQLException();
+        throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
     sal_Bool  Value( false );
     osl::MutexGuard aGuard( m_aMutex );
     m_nWasNull = ::convert<sal_Bool>( m_pMyShell,m_xTypeConverter,m_aValueMap[ --columnIndex ],Value );
@@ -182,7 +182,7 @@ XRow_impl::getByte(
            uno::RuntimeException)
 {
     if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-        throw sdbc::SQLException();
+        throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
     sal_Int8  Value( 0 );
     osl::MutexGuard aGuard( m_aMutex );
     m_nWasNull = ::convert<sal_Int8>( m_pMyShell,m_xTypeConverter,m_aValueMap[ --columnIndex ],Value );
@@ -196,7 +196,7 @@ XRow_impl::getShort(
            uno::RuntimeException)
 {
     if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-        throw sdbc::SQLException();
+        throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
     sal_Int16  Value( 0 );
     osl::MutexGuard aGuard( m_aMutex );
     m_nWasNull = ::convert<sal_Int16>( m_pMyShell,m_xTypeConverter,m_aValueMap[ --columnIndex ],Value );
@@ -211,7 +211,7 @@ XRow_impl::getInt(
            uno::RuntimeException)
 {
     if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-        throw sdbc::SQLException();
+        throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
     sal_Int32  Value( 0 );
     osl::MutexGuard aGuard( m_aMutex );
     m_nWasNull = ::convert<sal_Int32>( m_pMyShell,m_xTypeConverter,m_aValueMap[ --columnIndex ],Value );
@@ -225,7 +225,7 @@ XRow_impl::getLong(
      uno::RuntimeException)
 {
     if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-        throw sdbc::SQLException();
+        throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
     sal_Int64  Value( 0 );
     osl::MutexGuard aGuard( m_aMutex );
     m_nWasNull = ::convert<sal_Int64>( m_pMyShell,m_xTypeConverter,m_aValueMap[ --columnIndex ],Value );
@@ -239,7 +239,7 @@ XRow_impl::getFloat(
            uno::RuntimeException)
 {
     if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-        throw sdbc::SQLException();
+        throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
     float  Value( 0 );
     osl::MutexGuard aGuard( m_aMutex );
     m_nWasNull = ::convert<float>( m_pMyShell,m_xTypeConverter,m_aValueMap[ --columnIndex ],Value );
@@ -253,7 +253,7 @@ XRow_impl::getDouble(
            uno::RuntimeException)
 {
     if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-        throw sdbc::SQLException();
+        throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
     double  Value( 0 );
     osl::MutexGuard aGuard( m_aMutex );
     m_nWasNull = ::convert<double>( m_pMyShell,m_xTypeConverter,m_aValueMap[ --columnIndex ],Value );
@@ -267,7 +267,7 @@ XRow_impl::getBytes(
            uno::RuntimeException)
 {
     if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-        throw sdbc::SQLException();
+        throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
     uno::Sequence< sal_Int8 >  Value(0);
     osl::MutexGuard aGuard( m_aMutex );
     m_nWasNull = ::convert<uno::Sequence< sal_Int8 > >( m_pMyShell,m_xTypeConverter,m_aValueMap[ --columnIndex ],Value );
@@ -281,7 +281,7 @@ XRow_impl::getDate(
            uno::RuntimeException)
 {
     if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-        throw sdbc::SQLException();
+        throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
     util::Date  Value;
     osl::MutexGuard aGuard( m_aMutex );
     m_nWasNull = ::convert<util::Date>( m_pMyShell,m_xTypeConverter,m_aValueMap[ --columnIndex ],Value );
@@ -295,7 +295,7 @@ XRow_impl::getTime(
          uno::RuntimeException)
 {
     if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-        throw sdbc::SQLException();
+        throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
     util::Time  Value;
     osl::MutexGuard aGuard( m_aMutex );
     m_nWasNull = ::convert<util::Time>( m_pMyShell,m_xTypeConverter,m_aValueMap[ --columnIndex ],Value );
@@ -309,7 +309,7 @@ XRow_impl::getTimestamp(
      uno::RuntimeException)
 {
   if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-    throw sdbc::SQLException();
+    throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
   util::DateTime  Value;
   osl::MutexGuard aGuard( m_aMutex );
   m_nWasNull = ::convert<util::DateTime>( m_pMyShell,m_xTypeConverter,m_aValueMap[ --columnIndex ],Value );
@@ -324,7 +324,7 @@ XRow_impl::getBinaryStream(
      uno::RuntimeException)
 {
   if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-    throw sdbc::SQLException();
+    throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
   uno::Reference< io::XInputStream >  Value;
   osl::MutexGuard aGuard( m_aMutex );
   m_nWasNull = ::convert<uno::Reference< io::XInputStream > >( m_pMyShell,m_xTypeConverter,m_aValueMap[ --columnIndex ],Value );
@@ -339,7 +339,7 @@ XRow_impl::getCharacterStream(
            uno::RuntimeException)
 {
   if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-      throw sdbc::SQLException();
+      throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
   uno::Reference< io::XInputStream > Value;
   osl::MutexGuard aGuard( m_aMutex );
   m_nWasNull = ::convert< uno::Reference< io::XInputStream> >( m_pMyShell,m_xTypeConverter,m_aValueMap[ --columnIndex ],Value );
@@ -355,7 +355,7 @@ XRow_impl::getObject(
            uno::RuntimeException)
 {
     if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-        throw sdbc::SQLException();
+        throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
     uno::Any  Value;
     osl::MutexGuard aGuard( m_aMutex );
     m_nWasNull = ::convert<uno::Any>( m_pMyShell,m_xTypeConverter,m_aValueMap[ --columnIndex ],Value );
@@ -369,7 +369,7 @@ XRow_impl::getRef(
            uno::RuntimeException)
 {
     if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-        throw sdbc::SQLException();
+        throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
     uno::Reference< sdbc::XRef > Value;
     osl::MutexGuard aGuard( m_aMutex );
     m_nWasNull = ::convert<uno::Reference< sdbc::XRef> >( m_pMyShell,
@@ -386,7 +386,7 @@ XRow_impl::getBlob(
      uno::RuntimeException)
 {
     if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-        throw sdbc::SQLException();
+        throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
     uno::Reference< sdbc::XBlob > Value;
     osl::MutexGuard aGuard( m_aMutex );
     m_nWasNull = ::convert<uno::Reference< sdbc::XBlob> >( m_pMyShell,
@@ -403,7 +403,7 @@ XRow_impl::getClob(
      uno::RuntimeException)
 {
     if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-        throw sdbc::SQLException();
+        throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
     uno::Reference< sdbc::XClob > Value;
     osl::MutexGuard aGuard( m_aMutex );
     m_nWasNull = ::convert<uno::Reference< sdbc::XClob> >( m_pMyShell,
@@ -421,7 +421,7 @@ XRow_impl::getArray(
            uno::RuntimeException)
 {
     if( columnIndex < 1 || columnIndex > m_aValueMap.getLength() )
-        throw sdbc::SQLException();
+        throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
     uno::Reference< sdbc::XArray > Value;
     osl::MutexGuard aGuard( m_aMutex );
     m_nWasNull = ::convert<uno::Reference< sdbc::XArray> >( m_pMyShell,
diff --git a/ucb/source/ucp/file/filrset.cxx b/ucb/source/ucp/file/filrset.cxx
index 97eea94..134db87 100644
--- a/ucb/source/ucp/file/filrset.cxx
+++ b/ucb/source/ucp/file/filrset.cxx
@@ -355,7 +355,7 @@ XResultSet_impl::OneMore(
         }
         else  // error fetching anything
         {
-            throw sdbc::SQLException();
+            throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
         }
     }
 }
@@ -513,7 +513,7 @@ XResultSet_impl::relative(
            uno::RuntimeException)
 {
     if( isAfterLast() || isBeforeFirst() )
-        throw sdbc::SQLException();
+        throw sdbc::SQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), ::rtl::OUString(), 0, uno::Any() );
     if( row > 0 )
         while( row-- ) next();
     else if( row < 0 )
@@ -665,7 +665,7 @@ XResultSet_impl::getStaticResultSet()
     osl::MutexGuard aGuard( m_aMutex );
 
     if ( m_xListener.is() )
-        throw ucb::ListenerAlreadySetException();
+        throw ucb::ListenerAlreadySetException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 
     return uno::Reference< sdbc::XResultSet >( this );
 }
@@ -681,7 +681,7 @@ XResultSet_impl::setListener(
     osl::ClearableMutexGuard aGuard( m_aMutex );
 
     if ( m_xListener.is() )
-        throw ucb::ListenerAlreadySetException();
+        throw ucb::ListenerAlreadySetException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 
     m_xListener = Listener;
 
@@ -724,9 +724,9 @@ XResultSet_impl::connectToCache(
         = m_pMyShell->m_xMultiServiceFactory;
 
     if( m_xListener.is() )
-        throw ucb::ListenerAlreadySetException();
+        throw ucb::ListenerAlreadySetException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
     if( m_bStatic )
-        throw ucb::ListenerAlreadySetException();
+        throw ucb::ListenerAlreadySetException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 
     uno::Reference< ucb::XSourceInitialization > xTarget( 
         xCache, uno::UNO_QUERY );
@@ -753,7 +753,7 @@ XResultSet_impl::connectToCache(
             return;
         }
     }
-    throw ucb::ServiceNotFoundException();
+    throw ucb::ServiceNotFoundException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 }
 
 //=========================================================================
@@ -838,7 +838,7 @@ void SAL_CALL XResultSet_impl::setPropertyValue(
     if( aPropertyName == rtl::OUString::createFromAscii( "IsRowCountFinal" ) ||
         aPropertyName == rtl::OUString::createFromAscii( "RowCount" ) )
         return;
-    throw beans::UnknownPropertyException();
+    throw beans::UnknownPropertyException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 }
 
 
@@ -862,7 +862,7 @@ uno::Any SAL_CALL XResultSet_impl::getPropertyValue(
         return aAny;
     }
     else
-        throw beans::UnknownPropertyException();
+        throw beans::UnknownPropertyException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 }
 
 
@@ -891,7 +891,7 @@ void SAL_CALL XResultSet_impl::addPropertyChangeListener(
         m_pRowCountListeners->addInterface( xListener );
     }
     else
-        throw beans::UnknownPropertyException();
+        throw beans::UnknownPropertyException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 }
 
 
@@ -916,7 +916,7 @@ void SAL_CALL XResultSet_impl::removePropertyChangeListener(
         m_pRowCountListeners->removeInterface( aListener );
     }
     else
-        throw beans::UnknownPropertyException();
+        throw beans::UnknownPropertyException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 }
 
 void SAL_CALL XResultSet_impl::addVetoableChangeListener(
diff --git a/ucb/source/ucp/file/filstr.cxx b/ucb/source/ucp/file/filstr.cxx
index 1581ac5..d353f02 100644
--- a/ucb/source/ucp/file/filstr.cxx
+++ b/ucb/source/ucp/file/filstr.cxx
@@ -189,10 +189,10 @@ void SAL_CALL XStream_impl::truncate(void)
     throw( io::IOException, uno::RuntimeException )
 {
     if (osl::FileBase::E_None != m_aFile.setSize(0))
-        throw io::IOException();
+        throw io::IOException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 
     if (osl::FileBase::E_None != m_aFile.setPos(Pos_Absolut,sal_uInt64(0)))
-        throw io::IOException();
+        throw io::IOException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 }
 
 
@@ -211,7 +211,7 @@ XStream_impl::readBytes(
            uno::RuntimeException)
 {
     if( ! m_nIsOpen )
-        throw io::IOException();
+        throw io::IOException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 
     sal_Int8 * buffer;
     try
@@ -221,7 +221,7 @@ XStream_impl::readBytes(
     catch( std::bad_alloc )
     {
         if( m_nIsOpen ) m_aFile.close();
-        throw io::BufferSizeExceededException();
+        throw io::BufferSizeExceededException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
     }
     
     sal_uInt64 nrc(0);
@@ -229,7 +229,7 @@ XStream_impl::readBytes(
        != osl::FileBase::E_None)
     {
         delete[] buffer;
-        throw io::IOException();		
+        throw io::IOException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );		
     }
     aData = uno::Sequence< sal_Int8 > ( buffer, (sal_uInt32)nrc );
     delete[] buffer;
@@ -287,7 +287,7 @@ XStream_impl::writeBytes( const uno::Sequence< sal_Int8 >& aData )
         const sal_Int8* p = aData.getConstArray();
         if(osl::FileBase::E_None != m_aFile.write(((void*)(p)),sal_uInt64(length),nWrittenBytes) ||
            nWrittenBytes != length )
-            throw io::IOException();
+            throw io::IOException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
     }
 }
 
@@ -352,9 +352,9 @@ XStream_impl::seek(
            uno::RuntimeException )
 {
     if( location < 0 )
-        throw lang::IllegalArgumentException();
+        throw lang::IllegalArgumentException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >(), 0 );
     if( osl::FileBase::E_None != m_aFile.setPos( Pos_Absolut, sal_uInt64( location ) ) )
-        throw io::IOException();
+        throw io::IOException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 }
 
 
@@ -366,7 +366,7 @@ XStream_impl::getPosition(
 {
     sal_uInt64 uPos;
     if( osl::FileBase::E_None != m_aFile.getPos( uPos ) )
-        throw io::IOException();
+        throw io::IOException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
     return sal_Int64( uPos );
 }
 
@@ -378,7 +378,7 @@ XStream_impl::getLength(
 {
         sal_uInt64 uEndPos;
         if ( m_aFile.getSize(uEndPos) != osl::FileBase::E_None )
-                throw io::IOException();
+                throw io::IOException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
         else
                 return sal_Int64( uEndPos );
 }
diff --git a/ucb/source/ucp/file/filtask.cxx b/ucb/source/ucp/file/filtask.cxx
index 79360a4..d706bf9 100644
--- a/ucb/source/ucp/file/filtask.cxx
+++ b/ucb/source/ucp/file/filtask.cxx
@@ -70,7 +70,7 @@ TaskManager::startTask(
     TaskMap::iterator it = m_aTaskMap.find( CommandId );
     if( it != m_aTaskMap.end() )
     {
-        throw DuplicateCommandIdentifierException();
+        throw DuplicateCommandIdentifierException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
     }
     m_aTaskMap[ CommandId ] = TaskHandling( xCommandEnv );
 }
diff --git a/ucb/source/ucp/file/prov.cxx b/ucb/source/ucp/file/prov.cxx
index 6901006..17137c8 100644
--- a/ucb/source/ucp/file/prov.cxx
+++ b/ucb/source/ucp/file/prov.cxx
@@ -343,7 +343,7 @@ FileProvider::queryContent(
                                               aUnc );
 
     if(  err )
-        throw IllegalIdentifierException();
+        throw IllegalIdentifierException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 
     return Reference< XContent >( new BaseContent( m_pMyShell,xIdentifier,aUnc ) );
 }
@@ -534,7 +534,7 @@ XPropertySetInfoImpl2::getPropertyByName(
         if( m_seq[i].Name == aName )
             return m_seq[i];
 
-    throw UnknownPropertyException();
+    throw UnknownPropertyException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 }
 
 
@@ -616,7 +616,7 @@ FileProvider::setPropertyValue( const rtl::OUString& aPropertyName,
         aPropertyName.compareToAscii( "HostName" ) == 0 )
         return;
     else
-        throw UnknownPropertyException();
+        throw UnknownPropertyException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 }
 
 
@@ -648,7 +648,7 @@ FileProvider::getPropertyValue(
         return aAny;
     }
     else
-        throw UnknownPropertyException();
+        throw UnknownPropertyException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 }
 
 
diff --git a/ucb/source/ucp/file/shell.cxx b/ucb/source/ucp/file/shell.cxx
index e071eac..8e3ed6d 100644
--- a/ucb/source/ucp/file/shell.cxx
+++ b/ucb/source/ucp/file/shell.cxx
@@ -494,7 +494,7 @@ shell::associate( const rtl::OUString& aUnqPath,
 
     shell::PropertySet::iterator it1 = m_aDefaultProperties.find( newProperty );
     if( it1 != m_aDefaultProperties.end() )
-        throw beans::PropertyExistException();
+        throw beans::PropertyExistException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 
     {
         osl::MutexGuard aGuard( m_aMutex );
@@ -507,7 +507,7 @@ shell::associate( const rtl::OUString& aUnqPath,
         PropertySet& properties = *(it->second.properties);
         it1 = properties.find( newProperty );
         if( it1 != properties.end() )
-            throw beans::PropertyExistException();
+            throw beans::PropertyExistException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 
         // Property does not exist
         properties.insert( newProperty );
@@ -530,7 +530,7 @@ shell::deassociate( const rtl::OUString& aUnqPath,
 
     shell::PropertySet::iterator it1 = m_aDefaultProperties.find( oldProperty );
     if( it1 != m_aDefaultProperties.end() )
-        throw beans::NotRemoveableException();
+        throw beans::NotRemoveableException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 
     osl::MutexGuard aGuard( m_aMutex );
 
@@ -542,7 +542,7 @@ shell::deassociate( const rtl::OUString& aUnqPath,
 
     it1 = properties.find( oldProperty );
     if( it1 == properties.end() )
-        throw beans::UnknownPropertyException();
+        throw beans::UnknownPropertyException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
 
     properties.erase( it1 );
 
@@ -838,7 +838,7 @@ shell::setv( const rtl::OUString& aUnqPath,
         it1 = properties.find( toset );
         if( it1 == properties.end() )
         {
-            ret[i] <<= beans::UnknownPropertyException();
+            ret[i] <<= beans::UnknownPropertyException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
             continue;
         }
 
@@ -848,7 +848,7 @@ shell::setv( const rtl::OUString& aUnqPath,
 
         if( it1->getAttributes() & beans::PropertyAttribute::READONLY )
         {
-            ret[i] <<= lang::IllegalAccessException();
+            ret[i] <<= lang::IllegalAccessException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
             continue;
         }
 
@@ -919,7 +919,7 @@ shell::setv( const rtl::OUString& aUnqPath,
                     }
                 }
                 else
-                    ret[i] <<= beans::IllegalTypeException();
+                    ret[i] <<= beans::IllegalTypeException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
             }
             else if(values[i].Name == IsReadOnly ||
                     values[i].Name == IsHidden)
@@ -1027,7 +1027,7 @@ shell::setv( const rtl::OUString& aUnqPath,
                     }
                 }
                 else
-                    ret[i] <<= beans::IllegalTypeException();
+                    ret[i] <<= beans::IllegalTypeException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
             }
         }
     }   // end for
diff --git a/uui/source/passworddlg.src b/uui/source/passworddlg.src
index be21a82..ae259bf 100644
--- a/uui/source/passworddlg.src
+++ b/uui/source/passworddlg.src
@@ -44,46 +44,47 @@ ModalDialog DLG_UUI_PASSWORD
     Moveable = TRUE ;
     OutputSize = TRUE ;
     SVLook = TRUE ;
-    Size = MAP_APPFONT( 145, 75 );
-    Text [ en-US ] = "Enter password";
+    Size = MAP_APPFONT( 145, 75 );
+    Text [ en-US ] = "Enter password";
     FixedText FT_PASSWORD
     {
-        Pos = MAP_APPFONT( 3, 4 );
-        Size = MAP_APPFONT( 139, 28 );
-        Text [ en-US ] = "Enter password to open the file: \n";
-        WordBreak = TRUE;
+        Pos = MAP_APPFONT( 3, 4 );
+        Size = MAP_APPFONT( 139, 28 );
+        Text [ en-US ] = "Enter password to open the file: \n";
+        WordBreak = TRUE;
     };
-
+
     Edit ED_PASSWORD
     {
-        Pos = MAP_APPFONT( 3, 35 );
-        Size = MAP_APPFONT( 139, 13 );
+        Pos = MAP_APPFONT( 3, 35 );
+        Size = MAP_APPFONT( 139, 13 );
         Border = TRUE ;
         PassWord = TRUE ;
     };
 
     OKButton BTN_PASSWORD_OK
     {
-        Pos = MAP_APPFONT( 27, 56 );
-        Size = MAP_APPFONT( 37, 15 );
+        Pos = MAP_APPFONT( 27, 56 );
+        Size = MAP_APPFONT( 37, 15 );
+        DefButton = TRUE ;
     };
-
+
     CancelButton BTN_PASSWORD_CANCEL
     {
-        Pos = MAP_APPFONT( 66, 56 );
-        Size = MAP_APPFONT( 37, 15 );
+        Pos = MAP_APPFONT( 66, 56 );
+        Size = MAP_APPFONT( 37, 15 );
     };
-
+
     HelpButton BTN_PASSWORD_HELP
     {
-        Pos = MAP_APPFONT( 105, 56 );
-        Size = MAP_APPFONT( 37, 15 );
-    };
-
-    FixedLine FL_FIXED_LINE_1
-    {
-        Pos = MAP_APPFONT( 0, 50 );
-        Size = MAP_APPFONT( 145, 6 );
+        Pos = MAP_APPFONT( 105, 56 );
+        Size = MAP_APPFONT( 37, 15 );
+    };
+
+    FixedLine FL_FIXED_LINE_1
+    {
+        Pos = MAP_APPFONT( 0, 50 );
+        Size = MAP_APPFONT( 145, 6 );
     };
 };
 


More information about the ooo-build-commit mailing list