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@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@275801 (milestone: DEV300:m57) 2009-08-28 12:36:27 +0200 cmc r275523 : CWS-TOOLING: rebase CWS cmcfixes62 to trunk@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
This commit is contained in:
@@ -124,9 +124,6 @@ public: \
|
||||
static void acquire(); \
|
||||
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); \
|
||||
\
|
||||
@@ -181,16 +178,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) \
|
||||
{ \
|
||||
|
@@ -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) );
|
||||
|
||||
|
@@ -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()
|
||||
|
@@ -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
|
||||
|
@@ -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* );
|
||||
|
@@ -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 );
|
||||
|
@@ -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()
|
||||
|
@@ -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;
|
||||
|
@@ -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()
|
||||
{
|
||||
}
|
||||
|
@@ -504,6 +504,10 @@ void SvpSalInstance::StartTimer( ULONG nMS )
|
||||
}
|
||||
}
|
||||
|
||||
void SvpSalInstance::AddToRecentDocumentList(const rtl::OUString&, const rtl::OUString&)
|
||||
{
|
||||
}
|
||||
|
||||
SvpSalTimer::~SvpSalTimer()
|
||||
{
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
{
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
};
|
||||
|
@@ -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();
|
||||
|
Reference in New Issue
Block a user