[ooo-build-commit] Branch 'ooo/master' - unotools/inc vcl/aqua vcl/inc vcl/os2 vcl/source vcl/unx vcl/win
Jan Holesovsky
kendy at kemper.freedesktop.org
Fri Oct 9 11:24:37 PDT 2009
unotools/inc/unotools/idhelper.hxx | 13 -----
vcl/aqua/inc/salinst.h | 1
vcl/aqua/source/app/salinst.cxx | 86 ++++++++++++++++++++++++++++++++++++
vcl/inc/vcl/salinst.hxx | 1
vcl/inc/vcl/svapp.hxx | 14 +++++
vcl/os2/inc/salinst.h | 1
vcl/os2/source/app/salinst.cxx | 4 +
vcl/source/app/svapp.cxx | 6 ++
vcl/unx/gtk/app/gtkinst.cxx | 28 +++++++++++
vcl/unx/headless/svpinst.cxx | 4 +
vcl/unx/headless/svpinst.hxx | 2
vcl/unx/inc/plugins/gtk/gtkinst.hxx | 1
vcl/unx/inc/salinst.h | 2
vcl/unx/source/app/salinst.cxx | 19 +++++++
vcl/win/inc/salinst.h | 1
vcl/win/source/app/salinst.cxx | 34 +++++++++++---
16 files changed, 198 insertions(+), 19 deletions(-)
New commits:
commit 6b8d097ecb105437e2b06ed0d6615e0b6571e7e9
Author: Vladimir Glazounov <vg at openoffice.org>
Date: Thu Oct 1 09:16:17 2009 +0000
CWS-TOOLING: integrate CWS cmcfixes62
2009-09-22 21:19:24 +0200 cmc r276365 : #i100000# that's the most plausible explanation, -D$(CVER) is needed by scp2 under windows
2009-09-19 16:10:36 +0200 cmc r276303 : #i100000# revert this for no partically good reason
2009-09-18 14:16:47 +0200 cmc r276279 : remove extra build depend
2009-09-18 08:56:15 +0200 cmc r276265 : #i100000# rerun autoconf
2009-09-17 14:59:38 +0200 cmc r276245 : CWS-TOOLING: rebase CWS cmcfixes62 to trunk at 276192 (milestone: DEV300:m59)
2009-09-10 16:40:49 +0200 pl r276041 : fix warning
2009-09-10 11:34:55 +0200 pl r276026 : disable warning from system header
2009-09-09 19:30:45 +0200 pl r276013 : use osl_getAsciiFunctionSymbol instead of strange cast
2009-09-09 19:25:32 +0200 pl r276012 : add some casting hacks to make compile on solaris cc
2009-09-09 19:10:48 +0200 pl r276009 : add missing Configure option for solaris sparce 32bit
2009-09-09 18:37:05 +0200 pl r276008 : merge fix for #i104525# into moved code
2009-09-07 13:28:08 +0200 cmc r275894 : CWS-TOOLING: rebase CWS cmcfixes62 to trunk at 275801 (milestone: DEV300:m57)
2009-08-28 12:36:27 +0200 cmc r275523 : CWS-TOOLING: rebase CWS cmcfixes62 to trunk at 275331 (milestone: DEV300:m56)
2009-08-26 12:56:18 +0200 cmc r275413 : #i104088# use the right headers in the right place
2009-08-25 17:07:50 +0200 cmc r275372 : #i104500# make openssl build on linux that isn't x86 or x86_64
2009-08-25 13:08:48 +0200 cmc r275347 : #i89237# pretty picswitch up
2009-08-25 10:58:09 +0200 cmc r275342 : #i104489# remove last unused code in starmath
2009-08-25 10:23:33 +0200 cmc r275338 : #i104088# clean up the define post-move
2009-08-24 13:46:57 +0200 cmc r275310 : #i104088# 64bit odbc api changes
2009-08-24 13:42:52 +0200 cmc r275309 : #i89237# unify linux platform mks under a generic parent
2009-08-24 13:19:52 +0200 cmc r275307 : #i104455# remove unused code
2009-08-24 13:10:56 +0200 cmc r275306 : #i104088# 64bit odbc api changes
2009-08-24 10:07:50 +0200 cmc r275293 : #i104306# move recent-used to vcl
2009-08-24 09:32:08 +0200 cmc r275291 : #i104306# move recent-used to vcl
2009-08-23 22:01:07 +0200 cmc r275286 : #i104306# move recently-used to vcl
2009-08-22 15:25:25 +0200 cmc r275285 : #i104088# 64bit odbc api changes
2009-08-21 17:52:40 +0200 cmc r275268 : #i104306# move recently-used to vcl
2009-08-21 14:38:26 +0200 cmc r275257 : #i104408 make these headers ready for c++0x
2009-08-21 14:20:19 +0200 cmc r275251 : #i104406# avoid overlapping strcpy to avoid bustage on recent toolchains
2009-08-21 14:14:25 +0200 cmc r275250 : #i104385# silence 64bit warnings
diff --git a/unotools/inc/unotools/idhelper.hxx b/unotools/inc/unotools/idhelper.hxx
index bb347e7..d3ca214 100644
--- a/unotools/inc/unotools/idhelper.hxx
+++ b/unotools/inc/unotools/idhelper.hxx
@@ -125,9 +125,6 @@ public: \
static void release(); \
\
static ::com::sun::star::uno::Sequence< sal_Int8 > getImplementationId( \
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XTypeProvider >& _rxProvider); \
- \
- static ::com::sun::star::uno::Sequence< sal_Int8 > getImplementationId( \
const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >& _rTypes); \
\
private: \
@@ -182,16 +179,6 @@ void classname::release() \
\
/*-----------------------------------------------------------------------*/ \
::com::sun::star::uno::Sequence< sal_Int8 > classname::getImplementationId( \
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XTypeProvider >& _rxProvider) \
-{ \
- ::osl::MutexGuard aGuard(s_aMutex); \
- if (_rxProvider.is()) \
- return getImplementationId(_rxProvider->getTypes()); \
- return ::com::sun::star::uno::Sequence< sal_Int8 >(); \
-} \
- \
-/*-----------------------------------------------------------------------*/ \
-::com::sun::star::uno::Sequence< sal_Int8 > classname::getImplementationId( \
const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >& _rTypes) \
{ \
::osl::MutexGuard aGuard(s_aMutex); \
diff --git a/vcl/aqua/inc/salinst.h b/vcl/aqua/inc/salinst.h
index 27a88d9..827456c 100644
--- a/vcl/aqua/inc/salinst.h
+++ b/vcl/aqua/inc/salinst.h
@@ -143,6 +143,7 @@ public:
virtual void DestroyMenuItem( SalMenuItem* );
virtual SalSession* CreateSalSession();
virtual void* GetConnectionIdentifier( ConnectionIdentifierType& rReturnedType, int& rReturnedBytes );
+ virtual void AddToRecentDocumentList(const rtl::OUString& rFileUrl, const rtl::OUString& rMimeType);
virtual void SetEventCallback( void* pInstance, bool(*pCallback)(void*,void*,int) );
virtual void SetErrorEventCallback( void* pInstance, bool(*pCallback)(void*,void*,int) );
diff --git a/vcl/aqua/source/app/salinst.cxx b/vcl/aqua/source/app/salinst.cxx
index 82fb005..851dabb 100644
--- a/vcl/aqua/source/app/salinst.cxx
+++ b/vcl/aqua/source/app/salinst.cxx
@@ -55,6 +55,14 @@
#include "saltimer.h"
#include "vclnsapp.h"
+#include <comphelper/processfactory.hxx>
+
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/uri/XExternalUriReferenceTranslator.hpp>
+#include <com/sun/star/uri/ExternalUriReferenceTranslator.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+
#include "premac.h"
#include <Foundation/Foundation.h>
#include <ApplicationServices/ApplicationServices.h>
@@ -64,6 +72,7 @@
using namespace std;
+using namespace ::com::sun::star;
extern BOOL ImplSVMain();
@@ -1029,6 +1038,83 @@ void* AquaSalInstance::GetConnectionIdentifier( ConnectionIdentifierType& rRetur
return (void*)"";
}
+// We need to re-encode file urls because osl_getFileURLFromSystemPath converts
+// to UTF-8 before encoding non ascii characters, which is not what other apps expect.
+static rtl::OUString translateToExternalUrl(const rtl::OUString& internalUrl)
+{
+ rtl::OUString extUrl;
+
+ uno::Reference< lang::XMultiServiceFactory > sm = comphelper::getProcessServiceFactory();
+ if (sm.is())
+ {
+ uno::Reference< beans::XPropertySet > pset;
+ sm->queryInterface( getCppuType( &pset )) >>= pset;
+ if (pset.is())
+ {
+ uno::Reference< uno::XComponentContext > context;
+ static const rtl::OUString DEFAULT_CONTEXT( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ) );
+ pset->getPropertyValue(DEFAULT_CONTEXT) >>= context;
+ if (context.is())
+ extUrl = uri::ExternalUriReferenceTranslator::create(context)->translateToExternal(internalUrl);
+ }
+ }
+ return extUrl;
+}
+
+// #i104525# many versions of OSX have problems with some URLs:
+// when an app requests OSX to add one of these URLs to the "Recent Items" list
+// then this app gets killed (TextEdit, Preview, etc. and also OOo)
+static bool isDangerousUrl( const rtl::OUString& rUrl )
+{
+ // use a heuristic that detects all known cases since there is no official comment
+ // on the exact impact and root cause of the OSX bug
+ const int nLen = rUrl.getLength();
+ const sal_Unicode* p = rUrl.getStr();
+ for( int i = 0; i < nLen-3; ++i, ++p ) {
+ if( p[0] != '%' )
+ continue;
+ // escaped percent?
+ if( (p[1] == '2') && (p[2] == '5') )
+ return true;
+ // escapes are considered to be UTF-8 encoded
+ // => check for invalid UTF-8 leading byte
+ if( (p[1] != 'f') && (p[1] != 'F') )
+ continue;
+ int cLowNibble = p[2];
+ if( (cLowNibble >= '0' ) && (cLowNibble <= '9'))
+ return false;
+ if( cLowNibble >= 'a' )
+ cLowNibble -= 'a' - 'A';
+ if( (cLowNibble < 'A') || (cLowNibble >= 'C'))
+ return true;
+ }
+
+ return false;
+}
+
+void AquaSalInstance::AddToRecentDocumentList(const rtl::OUString& rFileUrl, const rtl::OUString& /*rMimeType*/)
+{
+ // Convert file URL for external use (see above)
+ rtl::OUString externalUrl = translateToExternalUrl(rFileUrl);
+ if( 0 == externalUrl.getLength() )
+ externalUrl = rFileUrl;
+
+ if( externalUrl.getLength() && !isDangerousUrl( externalUrl ) )
+ {
+ NSString* pString = CreateNSString( externalUrl );
+ NSURL* pURL = [NSURL URLWithString: pString];
+
+ if( pURL )
+ {
+ NSDocumentController* pCtrl = [NSDocumentController sharedDocumentController];
+ [pCtrl noteNewRecentDocumentURL: pURL];
+ }
+ if( pString )
+ [pString release];
+ }
+}
+
+
// -----------------------------------------------------------------------
SalTimer* AquaSalInstance::CreateSalTimer()
diff --git a/vcl/inc/vcl/salinst.hxx b/vcl/inc/vcl/salinst.hxx
index c7dbd81..04e29e0 100644
--- a/vcl/inc/vcl/salinst.hxx
+++ b/vcl/inc/vcl/salinst.hxx
@@ -184,6 +184,7 @@ public:
CreateClipboard( const com::sun::star::uno::Sequence< com::sun::star::uno::Any >& i_rArguments );
virtual com::sun::star::uno::Reference< com::sun::star::uno::XInterface > CreateDragSource();
virtual com::sun::star::uno::Reference< com::sun::star::uno::XInterface > CreateDropTarget();
+ virtual void AddToRecentDocumentList(const rtl::OUString& rFileUrl, const rtl::OUString& rMimeType) = 0;
};
// called from SVMain
diff --git a/vcl/inc/vcl/svapp.hxx b/vcl/inc/vcl/svapp.hxx
index 061b2d9..f97a3c4 100644
--- a/vcl/inc/vcl/svapp.hxx
+++ b/vcl/inc/vcl/svapp.hxx
@@ -479,6 +479,20 @@ public:
*/
static const ::rtl::OUString& GetDesktopEnvironment();
+ /** Add a file to the system shells recent document list if there is any.
+ This function may have no effect under Unix because there is no
+ standard API among the different desktop managers.
+
+ @param rFileUrl
+ The file url of the document.
+
+ @param rMimeType
+ The mime content type of the document specified by aFileUrl.
+ If an empty string will be provided "application/octet-stream"
+ will be used.
+ */
+ static void AddToRecentDocumentList(const rtl::OUString& rFileUrl, const rtl::OUString& rMimeType);
+
private:
DECL_STATIC_LINK( Application, PostEventHandler, void* );
diff --git a/vcl/os2/inc/salinst.h b/vcl/os2/inc/salinst.h
index da4070e..5a7cbac 100644
--- a/vcl/os2/inc/salinst.h
+++ b/vcl/os2/inc/salinst.h
@@ -96,6 +96,7 @@ public:
virtual void DestroyMenuItem( SalMenuItem* );
virtual SalSession* CreateSalSession();
virtual void* GetConnectionIdentifier( ConnectionIdentifierType& rReturnedType, int& rReturnedBytes );
+ virtual void AddToRecentDocumentList(const rtl::OUString& rFileUrl, const rtl::OUString& rMimeType);
};
SalFrame* ImplSalCreateFrame( Os2SalInstance* pInst, HWND hWndParent, ULONG nSalFrameStyle );
diff --git a/vcl/os2/source/app/salinst.cxx b/vcl/os2/source/app/salinst.cxx
index a32976f..5c95e09 100644
--- a/vcl/os2/source/app/salinst.cxx
+++ b/vcl/os2/source/app/salinst.cxx
@@ -811,6 +811,10 @@ void* Os2SalInstance::GetConnectionIdentifier( ConnectionIdentifierType& rReturn
return (void*) "";
}
+void Os2SalInstance::AddToRecentDocumentList(const rtl::OUString& /*rFileUrl*/, const rtl::OUString& /*rMimeType*/)
+{
+}
+
// -----------------------------------------------------------------------
SalTimer* Os2SalInstance::CreateSalTimer()
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx
index 6d0869d..e40611f 100644
--- a/vcl/source/app/svapp.cxx
+++ b/vcl/source/app/svapp.cxx
@@ -1989,6 +1989,12 @@ const ::rtl::OUString& Application::GetDesktopEnvironment()
return SalGetDesktopEnvironment();
}
+void Application::AddToRecentDocumentList(const rtl::OUString& rFileUrl, const rtl::OUString& rMimeType)
+{
+ ImplSVData* pSVData = ImplGetSVData();
+ pSVData->mpDefInst->AddToRecentDocumentList(rFileUrl, rMimeType);
+}
+
BOOL Application::IsAccessibilityEnabled()
{
return FALSE;
diff --git a/vcl/unx/gtk/app/gtkinst.cxx b/vcl/unx/gtk/app/gtkinst.cxx
index 4fbd9e3..7bee576 100644
--- a/vcl/unx/gtk/app/gtkinst.cxx
+++ b/vcl/unx/gtk/app/gtkinst.cxx
@@ -216,6 +216,34 @@ SalObject* GtkInstance::CreateObject( SalFrame* pParent, SystemWindowData* pWind
return new GtkSalObject( static_cast<GtkSalFrame*>(pParent), bShow );
}
+extern "C"
+{
+ typedef void*(* getDefaultFnc)();
+ typedef void(* addItemFnc)(void *, const char *);
+}
+
+void GtkInstance::AddToRecentDocumentList(const rtl::OUString& rFileUrl, const rtl::OUString& rMimeType)
+{
+#if GTK_CHECK_VERSION(2,10,0)
+ GtkRecentManager *manager = gtk_recent_manager_get_default ();
+ gtk_recent_manager_add_item (manager, rtl::OUStringToOString(rFileUrl, RTL_TEXTENCODING_UTF8).getStr());
+ (void)rMimeType;
+#else
+ static getDefaultFnc sym_gtk_recent_manager_get_default =
+ (getDefaultFnc)osl_getAsciiFunctionSymbol( GetSalData()->m_pPlugin, "gtk_recent_manager_get_default" );
+
+ static addItemFnc sym_gtk_recent_manager_add_item =
+ (addItemFnc)osl_getAsciiFunctionSymbol( GetSalData()->m_pPlugin, "gtk_recent_manager_add_item");
+ if (sym_gtk_recent_manager_get_default && sym_gtk_recent_manager_add_item)
+ {
+ sym_gtk_recent_manager_add_item(sym_gtk_recent_manager_get_default(),
+ rtl::OUStringToOString(rFileUrl, RTL_TEXTENCODING_UTF8).getStr());
+ }
+ else
+ X11SalInstance::AddToRecentDocumentList(rFileUrl, rMimeType);
+#endif
+}
+
GtkYieldMutex::GtkYieldMutex()
{
}
diff --git a/vcl/unx/headless/svpinst.cxx b/vcl/unx/headless/svpinst.cxx
index 6398217..2f370ad 100644
--- a/vcl/unx/headless/svpinst.cxx
+++ b/vcl/unx/headless/svpinst.cxx
@@ -504,6 +504,10 @@ void SvpSalInstance::StartTimer( ULONG nMS )
}
}
+void SvpSalInstance::AddToRecentDocumentList(const rtl::OUString&, const rtl::OUString&)
+{
+}
+
SvpSalTimer::~SvpSalTimer()
{
}
diff --git a/vcl/unx/headless/svpinst.hxx b/vcl/unx/headless/svpinst.hxx
index 853a6ac..c4c97cd 100644
--- a/vcl/unx/headless/svpinst.hxx
+++ b/vcl/unx/headless/svpinst.hxx
@@ -193,6 +193,8 @@ public:
virtual SalSession* CreateSalSession();
virtual void* GetConnectionIdentifier( ConnectionIdentifierType& rReturnedType, int& rReturnedBytes );
+
+ virtual void AddToRecentDocumentList(const rtl::OUString& rFileUrl, const rtl::OUString& rMimeType);
};
#endif // _SV_SALINST_HXX
diff --git a/vcl/unx/inc/plugins/gtk/gtkinst.hxx b/vcl/unx/inc/plugins/gtk/gtkinst.hxx
index 7468f45..4be7769 100644
--- a/vcl/unx/inc/plugins/gtk/gtkinst.hxx
+++ b/vcl/unx/inc/plugins/gtk/gtkinst.hxx
@@ -91,6 +91,7 @@ public:
virtual SalFrame* CreateChildFrame( SystemParentData* pParent, ULONG nStyle );
virtual SalObject* CreateObject( SalFrame* pParent, SystemWindowData* pWindowData, BOOL bShow = TRUE );
virtual SalSystem* CreateSalSystem();
+ virtual void AddToRecentDocumentList(const rtl::OUString& rFileUrl, const rtl::OUString& rMimeType);
};
class GtkSalSystem : public X11SalSystem
diff --git a/vcl/unx/inc/salinst.h b/vcl/unx/inc/salinst.h
index 912a267..7a995eb 100644
--- a/vcl/unx/inc/salinst.h
+++ b/vcl/unx/inc/salinst.h
@@ -121,6 +121,8 @@ public:
CreateClipboard( const com::sun::star::uno::Sequence< com::sun::star::uno::Any >& i_rArguments );
virtual com::sun::star::uno::Reference< com::sun::star::uno::XInterface > CreateDragSource();
virtual com::sun::star::uno::Reference< com::sun::star::uno::XInterface > CreateDropTarget();
+ virtual void AddToRecentDocumentList(const rtl::OUString& rFileUrl, const rtl::OUString& rMimeType);
+
bool isPrinterInit() const
{
diff --git a/vcl/unx/source/app/salinst.cxx b/vcl/unx/source/app/salinst.cxx
index d3ff31c..6c1549d 100644
--- a/vcl/unx/source/app/salinst.cxx
+++ b/vcl/unx/source/app/salinst.cxx
@@ -35,6 +35,8 @@
#include <stdio.h>
#include <stdlib.h>
+#include <osl/module.hxx>
+
#include "salunx.h"
#include "saldata.hxx"
@@ -413,3 +415,20 @@ void X11SalInstance::FillFontPathList( std::list< rtl::OString >& o_rFontPaths )
#endif /* SOLARIS */
}
+extern "C" { static void SAL_CALL thisModule() {} }
+
+void X11SalInstance::AddToRecentDocumentList(const rtl::OUString& rFileUrl, const rtl::OUString& rMimeType)
+{
+ const rtl::OUString SYM_ADD_TO_RECENTLY_USED_FILE_LIST(RTL_CONSTASCII_USTRINGPARAM("add_to_recently_used_file_list"));
+ const rtl::OUString LIB_RECENT_FILE(RTL_CONSTASCII_USTRINGPARAM("librecentfile.so"));
+ typedef void (*PFUNC_ADD_TO_RECENTLY_USED_LIST)(const rtl::OUString&, const rtl::OUString&);
+
+ PFUNC_ADD_TO_RECENTLY_USED_LIST add_to_recently_used_file_list = 0;
+
+ osl::Module module;
+ module.loadRelative( &thisModule, LIB_RECENT_FILE );
+ if (module.is())
+ add_to_recently_used_file_list = (PFUNC_ADD_TO_RECENTLY_USED_LIST)module.getFunctionSymbol(SYM_ADD_TO_RECENTLY_USED_FILE_LIST);
+ if (add_to_recently_used_file_list)
+ add_to_recently_used_file_list(rFileUrl, rMimeType);
+}
diff --git a/vcl/win/inc/salinst.h b/vcl/win/inc/salinst.h
index b1376a1..cb12c36 100644
--- a/vcl/win/inc/salinst.h
+++ b/vcl/win/inc/salinst.h
@@ -88,6 +88,7 @@ public:
virtual void DestroyMenuItem( SalMenuItem* );
virtual SalSession* CreateSalSession();
virtual void* GetConnectionIdentifier( ConnectionIdentifierType& rReturnedType, int& rReturnedBytes );
+ virtual void AddToRecentDocumentList(const rtl::OUString& rFileUrl, const rtl::OUString& rMimeType);
static int WorkaroundExceptionHandlingInUSER32Lib(int nExcept, LPEXCEPTION_POINTERS pExceptionInfo);
};
diff --git a/vcl/win/source/app/salinst.cxx b/vcl/win/source/app/salinst.cxx
index 14a15e0..ea19c5c 100644
--- a/vcl/win/source/app/salinst.cxx
+++ b/vcl/win/source/app/salinst.cxx
@@ -39,7 +39,7 @@
#ifdef __MINGW32__
#include <excpt.h>
#endif
-
+#include <osl/file.hxx>
#include <vos/mutex.hxx>
#include <tools/debug.hxx>
#include <wincomp.hxx>
@@ -65,11 +65,13 @@
#if defined _MSC_VER
#pragma warning(push, 1)
+#pragma warning( disable: 4917 )
#endif
#include <GdiPlus.h>
#include <GdiPlusEnums.h>
#include <GdiPlusColor.h>
+#include <Shlobj.h>
#if defined _MSC_VER
#pragma warning(pop)
@@ -456,10 +458,10 @@ void InitSalData()
{
SalData* pSalData = new SalData;
CoInitialize(0);
-
- // init GDIPlus
- static Gdiplus::GdiplusStartupInput gdiplusStartupInput;
- Gdiplus::GdiplusStartup(&pSalData->gdiplusToken, &gdiplusStartupInput, NULL);
+
+ // init GDIPlus
+ static Gdiplus::GdiplusStartupInput gdiplusStartupInput;
+ Gdiplus::GdiplusStartup(&pSalData->gdiplusToken, &gdiplusStartupInput, NULL);
}
@@ -471,7 +473,7 @@ void DeInitSalData()
// deinit GDIPlus
if(pSalData)
{
- Gdiplus::GdiplusShutdown(pSalData->gdiplusToken);
+ Gdiplus::GdiplusShutdown(pSalData->gdiplusToken);
}
delete pSalData;
@@ -1089,6 +1091,26 @@ void* WinSalInstance::GetConnectionIdentifier( ConnectionIdentifierType& rReturn
// -----------------------------------------------------------------------
+/** Add a file to the system shells recent document list if there is any.
+ This function may have no effect under Unix because there is no
+ standard API among the different desktop managers.
+
+ @param aFileUrl
+ The file url of the document.
+*/
+void WinSalInstance::AddToRecentDocumentList(const rtl::OUString& rFileUrl, const rtl::OUString& /*rMimeType*/)
+{
+ rtl::OUString system_path;
+ osl::FileBase::RC rc = osl::FileBase::getSystemPathFromFileURL(rFileUrl, system_path);
+
+ OSL_ENSURE(osl::FileBase::E_None == rc, "Invalid file url");
+
+ if (osl::FileBase::E_None == rc)
+ SHAddToRecentDocs(SHARD_PATHW, system_path.getStr());
+}
+
+// -----------------------------------------------------------------------
+
SalTimer* WinSalInstance::CreateSalTimer()
{
return new WinSalTimer();
More information about the ooo-build-commit
mailing list