NewMenuController: Fix template manager icon

The current logic is swapped. MenuAttributes::aImageId can be
only handled by SvFileInformationManager, while the menu item
command is what might be (in case of .uno command) handled
by CommandInfoProvider.

This gone wrong in tdf#96059 which wrongly assumed that
GetImageFromURL is equivalent to what's provided by
CommandInfoProvider (so other places should be checked too).

Change-Id: Ia487c602753dde3fb0d0462ef4b3d63209398b36
This commit is contained in:
Maxim Monastirsky
2016-11-06 21:31:15 +02:00
parent 5bd6b61a7c
commit cea3b8762b

View File

@@ -72,7 +72,6 @@ DEFINE_INIT_SERVICE ( NewMenuController, {} )
void NewMenuController::setMenuImages( PopupMenu* pPopupMenu, bool bSetImages ) void NewMenuController::setMenuImages( PopupMenu* pPopupMenu, bool bSetImages )
{ {
sal_uInt16 nItemCount = pPopupMenu->GetItemCount(); sal_uInt16 nItemCount = pPopupMenu->GetItemCount();
Image aImage;
Reference< XFrame > xFrame( m_xFrame ); Reference< XFrame > xFrame( m_xFrame );
for ( sal_uInt16 i = 0; i < nItemCount; i++ ) for ( sal_uInt16 i = 0; i < nItemCount; i++ )
@@ -82,39 +81,23 @@ void NewMenuController::setMenuImages( PopupMenu* pPopupMenu, bool bSetImages )
{ {
if ( bSetImages ) if ( bSetImages )
{ {
bool bImageSet( false );
OUString aImageId; OUString aImageId;
OUString aCmd( pPopupMenu->GetItemCommand( nItemId ) );
sal_uLong nAttributePtr = pPopupMenu->GetUserValue(sal::static_int_cast<sal_uInt16>(i)); sal_uLong nAttributePtr = pPopupMenu->GetUserValue(sal::static_int_cast<sal_uInt16>(i));
MenuAttributes* pAttributes = reinterpret_cast<MenuAttributes *>(nAttributePtr); MenuAttributes* pAttributes = reinterpret_cast<MenuAttributes *>(nAttributePtr);
if (pAttributes) if (pAttributes)
aImageId = pAttributes->aImageId; aImageId = pAttributes->aImageId;
if ( !aImageId.isEmpty() ) INetURLObject aURLObj( aImageId.isEmpty() ? aCmd : aImageId );
{ Image aImage = SvFileInformationManager::GetImageNoDefault( aURLObj );
aImage = vcl::CommandInfoProvider::Instance().GetImageForCommand(aImageId, xFrame); if ( !aImage )
if ( !!aImage ) aImage = vcl::CommandInfoProvider::Instance().GetImageForCommand(aCmd, xFrame);
{
bImageSet = true;
pPopupMenu->SetItemImage( nItemId, aImage );
}
}
if ( !bImageSet ) if ( !!aImage )
{ pPopupMenu->SetItemImage( nItemId, aImage );
OUString aCmd( pPopupMenu->GetItemCommand( nItemId ) );
if ( !aCmd.isEmpty() )
{
INetURLObject aURLObj( aCmd );
aImage = SvFileInformationManager::GetImageNoDefault( aURLObj );
}
if ( !!aImage )
pPopupMenu->SetItemImage( nItemId, aImage );
}
} }
else else
pPopupMenu->SetItemImage( nItemId, aImage ); pPopupMenu->SetItemImage( nItemId, Image() );
} }
} }
} }