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:
@@ -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() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user