diff options
Diffstat (limited to 'framework')
-rw-r--r-- | framework/source/uielement/toolbarmanager.cxx | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx index fbb13018278f..ac021706db35 100644 --- a/framework/source/uielement/toolbarmanager.cxx +++ b/framework/source/uielement/toolbarmanager.cxx @@ -331,13 +331,27 @@ void ToolBarManager::RefreshImages() if ( nId > 0 ) { - OUString aCommandURL = m_pToolBar->GetItemCommand( nId ); - Image aImage = GetImageFromURL( m_xFrame, aCommandURL, bBigImages ); - // Try also to query for add-on images before giving up and use an - // empty image. - if ( !aImage ) - aImage = QueryAddonsImage( aCommandURL, bBigImages ); - m_pToolBar->SetItemImage( nId, aImage ); + ToolBarControllerMap::const_iterator pIter = m_aControllerMap.find( nId ); + if ( pIter != m_aControllerMap.end() ) + { + Reference< XSubToolbarController > xController( pIter->second, UNO_QUERY ); + if ( xController.is() && xController->opensSubToolbar() ) + { + // The button should show the last function that was selected from the + // dropdown. The controller should know better than us what it was. + xController->updateImage(); + } + else + { + OUString aCommandURL = m_pToolBar->GetItemCommand( nId ); + Image aImage = GetImageFromURL( m_xFrame, aCommandURL, bBigImages ); + // Try also to query for add-on images before giving up and use an + // empty image. + if ( !aImage ) + aImage = QueryAddonsImage( aCommandURL, bBigImages ); + m_pToolBar->SetItemImage( nId, aImage ); + } + } } } |