Fix css.awt.XSystemDependentMenuPeer.getMenuHandle

...to return an ANY containing a 64-bit HYPER instead of a 32-bit LONG for
SYSTEM_WIN32 (which covers both 32-bit and 64-bit versions of Windows), so that
the HMENU value (which is effectively a void*) is not truncated for the 64-bit
build.

This should effectively be URE ABI compatible for the 32-bit build, as there the
HYPER value will fit into 32 bits, so extracting a LONG from the ANY should
still work.

Change-Id: Ief3de5924f672e8f6bbe6df08c15439456ca036f
Reviewed-on: https://gerrit.libreoffice.org/20045
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
This commit is contained in:
Stephan Bergmann
2015-11-18 17:01:13 +01:00
parent f1132fd50a
commit f08d0142af
2 changed files with 3 additions and 2 deletions

View File

@@ -377,7 +377,7 @@ HRESULT DocumentHolder::InPlaceActivate(
uno::UNO_QUERY);
aAny = xSDMP->getMenuHandle(
aProcessIdent,lang::SystemDependent::SYSTEM_WIN32);
sal_Int32 tmp;
sal_Int64 tmp;
if( aAny >>= tmp )
m_nMenuHandle = HMENU(tmp);
m_xLayoutManager->hideElement(

View File

@@ -210,7 +210,8 @@ Any SAL_CALL MenuBarManager::getMenuHandle( const Sequence< sal_Int8 >& /*Proces
#ifdef _WIN32
if( SystemType == SystemDependent::SYSTEM_WIN32 )
{
a <<= (long) aSystemMenuData.hMenu;
a <<= sal_Int64(
reinterpret_cast<sal_IntPtr>(aSystemMenuData.hMenu));
}
#else
(void) SystemType;