summaryrefslogtreecommitdiff
path: root/dtrans
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2017-09-26 11:28:57 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2017-09-30 11:23:41 +0200
commit362a21d3a129b90149f6ef645c127f5e86e0ba61 (patch)
tree8583cb29b33de56e4489cb8950d2714a1fb2957e /dtrans
parent81ce629c9e8a4fc26ded9d49157e3f3263991e03 (diff)
Use explicit function names for fooA/fooW WinAPI; prefer fooW
We should only use generic foo function name when it takes params that are also dependent on UNICODE define, like LoadCursor( nullptr, IDC_ARROW ) where IDC_ARROW is defined in MSVC headers synchronised with LoadCursor definition. We should always use Unicode API for any file paths operations, because otherwise we will get "?" for any character in path that is not in current non-unicode codepage, which will result in failed file operations. Change-Id: I3a7f453ca0f893002d8a9764318919709fd8b633 Reviewed-on: https://gerrit.libreoffice.org/42935 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'dtrans')
-rw-r--r--dtrans/source/win32/dnd/source.cxx2
-rw-r--r--dtrans/source/win32/dnd/target.cxx12
-rw-r--r--dtrans/source/win32/dtobj/DTransHelper.cxx2
-rw-r--r--dtrans/source/win32/dtobj/DataFmtTransl.cxx8
-rw-r--r--dtrans/source/win32/misc/ImplHelper.cxx22
5 files changed, 21 insertions, 25 deletions
diff --git a/dtrans/source/win32/dnd/source.cxx b/dtrans/source/win32/dnd/source.cxx
index b6d1d9a628bd..06c8e4977def 100644
--- a/dtrans/source/win32/dnd/source.cxx
+++ b/dtrans/source/win32/dnd/source.cxx
@@ -314,7 +314,7 @@ unsigned __stdcall DndOleSTAFunc(LPVOID pParams)
// We force the creation of a thread message queue. This is necessary
// for a later call to AttachThreadInput
MSG msgtemp;
- PeekMessage( &msgtemp, nullptr, WM_USER, WM_USER, PM_NOREMOVE);
+ PeekMessageW( &msgtemp, nullptr, WM_USER, WM_USER, PM_NOREMOVE);
DWORD threadId= GetCurrentThreadId();
diff --git a/dtrans/source/win32/dnd/target.cxx b/dtrans/source/win32/dnd/target.cxx
index b797d4e769d8..ab3c554ea5bc 100644
--- a/dtrans/source/win32/dnd/target.cxx
+++ b/dtrans/source/win32/dnd/target.cxx
@@ -76,7 +76,7 @@ void SAL_CALL DropTarget::disposing()
if( m_threadIdTarget)
{
// Call RevokeDragDrop and wait for the OLE thread to die;
- PostThreadMessage( m_threadIdTarget, WM_REVOKEDRAGDROP, reinterpret_cast<WPARAM>(this), 0);
+ PostThreadMessageW( m_threadIdTarget, WM_REVOKEDRAGDROP, reinterpret_cast<WPARAM>(this), 0);
WaitForSingleObject( m_hOleThread, INFINITE);
CloseHandle( m_hOleThread);
//OSL_ENSURE( SUCCEEDED( hr), "HWND not valid!" );
@@ -142,13 +142,13 @@ void SAL_CALL DropTarget::initialize( const Sequence< Any >& aArguments )
m_threadIdWindow= GetWindowThreadProcessId( m_hWnd, nullptr);
// The event is set by the thread that we will create momentarily.
// It indicates that the thread is ready to receive messages.
- HANDLE m_evtThreadReady= CreateEvent( nullptr, FALSE, FALSE, nullptr);
+ HANDLE m_evtThreadReady= CreateEventW( nullptr, FALSE, FALSE, nullptr);
m_hOleThread= CreateThread( nullptr, 0, DndTargetOleSTAFunc,
&m_evtThreadReady, 0, &m_threadIdTarget);
WaitForSingleObject( m_evtThreadReady, INFINITE);
CloseHandle( m_evtThreadReady);
- PostThreadMessage( m_threadIdTarget, WM_REGISTERDRAGDROP, reinterpret_cast<WPARAM>(this), 0);
+ PostThreadMessageW( m_threadIdTarget, WM_REGISTERDRAGDROP, reinterpret_cast<WPARAM>(this), 0);
}
else if( hr == S_OK || hr == S_FALSE)
{
@@ -197,7 +197,7 @@ DWORD WINAPI DndTargetOleSTAFunc(LPVOID pParams)
{
MSG msg;
// force the creation of a message queue
- PeekMessage( &msg, nullptr, 0, 0, PM_NOREMOVE);
+ PeekMessageW( &msg, nullptr, 0, 0, PM_NOREMOVE);
// Signal the creator ( DropTarget::initialize) that the thread is
// ready to receive messages.
SetEvent( *static_cast<HANDLE*>(pParams));
@@ -206,7 +206,7 @@ DWORD WINAPI DndTargetOleSTAFunc(LPVOID pParams)
DWORD threadId= GetCurrentThreadId();
// We force the creation of a thread message queue. This is necessary
// for a later call to AttachThreadInput
- while( GetMessage(&msg, nullptr, 0, 0) )
+ while( GetMessageW(&msg, nullptr, 0, 0) )
{
if( msg.message == WM_REGISTERDRAGDROP)
{
@@ -238,7 +238,7 @@ DWORD WINAPI DndTargetOleSTAFunc(LPVOID pParams)
break;
}
TranslateMessage( &msg);
- DispatchMessage( &msg);
+ DispatchMessageW( &msg);
}
OleUninitialize();
}
diff --git a/dtrans/source/win32/dtobj/DTransHelper.cxx b/dtrans/source/win32/dtobj/DTransHelper.cxx
index 49151f4d4fd1..552ec1368f1a 100644
--- a/dtrans/source/win32/dtobj/DTransHelper.cxx
+++ b/dtrans/source/win32/dtobj/DTransHelper.cxx
@@ -177,7 +177,7 @@ sal_uInt32 SAL_CALL CStgTransferHelper::memSize( CLIPFORMAT cf ) const
HGLOBAL hGlob;
GetHGlobalFromStream( m_lpStream, &hGlob );
- if ( CF_TEXT == cf || RegisterClipboardFormat( "HTML Format" ) == cf )
+ if ( CF_TEXT == cf || RegisterClipboardFormatW( L"HTML Format" ) == cf )
{
sal_Char* pText = static_cast< sal_Char* >( GlobalLock( hGlob ) );
if ( pText )
diff --git a/dtrans/source/win32/dtobj/DataFmtTransl.cxx b/dtrans/source/win32/dtobj/DataFmtTransl.cxx
index 9c6f40047967..c72f2646563b 100644
--- a/dtrans/source/win32/dtobj/DataFmtTransl.cxx
+++ b/dtrans/source/win32/dtobj/DataFmtTransl.cxx
@@ -87,7 +87,7 @@ CFormatEtc CDataFormatTranslator::getFormatEtcFromDataFlavor( const DataFlavor&
aFormat >>= aClipFmtName;
OSL_ASSERT( aClipFmtName.getLength( ) );
- cf = RegisterClipboardFormatW( reinterpret_cast<LPCWSTR>(aClipFmtName.getStr( )) );
+ cf = RegisterClipboardFormatW( SAL_W(aClipFmtName.getStr( )) );
OSL_ENSURE( CF_INVALID != cf, "RegisterClipboardFormat failed" );
}
@@ -163,7 +163,7 @@ CFormatEtc SAL_CALL CDataFormatTranslator::getFormatEtcForClipformatName( const
if ( !aClipFmtName.getLength( ) )
return CFormatEtc( CF_INVALID );
- CLIPFORMAT cf = sal::static_int_cast<CLIPFORMAT>(RegisterClipboardFormatW( reinterpret_cast<LPCWSTR>(aClipFmtName.getStr( )) ));
+ CLIPFORMAT cf = sal::static_int_cast<CLIPFORMAT>(RegisterClipboardFormatW( SAL_W(aClipFmtName.getStr( )) ));
return getFormatEtcForClipformat( cf );
}
@@ -172,7 +172,7 @@ OUString CDataFormatTranslator::getClipboardFormatName( CLIPFORMAT aClipformat )
OSL_PRECOND( CF_INVALID != aClipformat, "Invalid clipboard format" );
sal_Unicode wBuff[ MAX_CLIPFORMAT_NAME + 1 ]; // Null terminator isn't counted, apparently.
- sal_Int32 nLen = GetClipboardFormatNameW( aClipformat, reinterpret_cast<LPWSTR>(wBuff), MAX_CLIPFORMAT_NAME );
+ sal_Int32 nLen = GetClipboardFormatNameW( aClipformat, SAL_W(wBuff), MAX_CLIPFORMAT_NAME );
return OUString( wBuff, nLen );
}
@@ -204,7 +204,7 @@ CFormatEtc SAL_CALL CDataFormatTranslator::getFormatEtcForClipformat( CLIPFORMAT
of which FileContents it wants to paste
see MSDN: "Handling Shell Data Transfer Scenarios"
*/
- if ( cf == RegisterClipboardFormatA( CFSTR_FILECONTENTS ) )
+ if ( cf == RegisterClipboardFormat( CFSTR_FILECONTENTS ) )
fetc.setLindex( 0 );
return fetc;
diff --git a/dtrans/source/win32/misc/ImplHelper.cxx b/dtrans/source/win32/misc/ImplHelper.cxx
index 8047ffc9a424..f9d5a07a7f28 100644
--- a/dtrans/source/win32/misc/ImplHelper.cxx
+++ b/dtrans/source/win32/misc/ImplHelper.cxx
@@ -92,27 +92,23 @@ OUString SAL_CALL getWinCPFromLocaleId( LCID lcid, LCTYPE lctype )
else
OSL_ASSERT( false );
- // we use the GetLocaleInfoA because don't want to provide
- // a unicode wrapper function for Win9x in sal/systools
- char buff[6];
- sal_Int32 nResult = GetLocaleInfoA(
- lcid, lctype | LOCALE_USE_CP_ACP, buff, sizeof( buff ) );
+ // First, get required buffer size, in characters
+ int nResult = GetLocaleInfoW(
+ lcid, lctype, nullptr, 0 );
OSL_ASSERT( nResult );
if ( nResult )
{
- sal_Int32 len = MultiByteToWideChar(
- CP_ACP, 0, buff, -1, nullptr, 0 );
+ std::unique_ptr<wchar_t> buff( new wchar_t[nResult] );
+ // Now get the actual data
+ nResult = GetLocaleInfoW( lcid, lctype, buff.get(), nResult );
- OSL_ASSERT( len > 0 );
+ OSL_ASSERT(nResult);
- std::vector< sal_Unicode > lpwchBuff(len);
+ if (nResult)
+ winCP = SAL_U( buff.get() );
- len = MultiByteToWideChar(
- CP_ACP, 0, buff, -1, reinterpret_cast<LPWSTR>(&lpwchBuff[0]), len );
-
- winCP = OUString( &lpwchBuff[0], (len - 1) );
}
return winCP;