diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-04-07 20:32:26 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-04-08 11:01:31 +0200 |
commit | ff25a4a6f4b9763b09abbbd6a711fa4d18f40ade (patch) | |
tree | ded29238e8fb782c20b429f6d5df6c40a3bb2604 /framework/source | |
parent | 32343bcbb786168df62f85a57e30c620c3d3bdb4 (diff) |
loplugin:flatten in framework
Change-Id: I2a74a7543b5edd853396efa31a3e2568e6607778
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91848
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'framework/source')
63 files changed, 4915 insertions, 4921 deletions
diff --git a/framework/source/dispatch/popupmenudispatcher.cxx b/framework/source/dispatch/popupmenudispatcher.cxx index caa3170c53bd..24ce67dc70d2 100644 --- a/framework/source/dispatch/popupmenudispatcher.cxx +++ b/framework/source/dispatch/popupmenudispatcher.cxx @@ -250,58 +250,58 @@ void SAL_CALL PopupMenuDispatcher::disposing( const EventObject& ) // Safe impossible cases SAL_WARN_IF( m_bAlreadyDisposed, "fwk", "MenuDispatcher::disposing(): Object already disposed .. don't call it again!" ); - if( !m_bAlreadyDisposed ) - { - m_bAlreadyDisposed = true; + if( m_bAlreadyDisposed ) + return; + + m_bAlreadyDisposed = true; - if ( m_bActivateListener ) + if ( m_bActivateListener ) + { + uno::Reference< XFrame > xFrame( m_xWeakFrame.get(), UNO_QUERY ); + if ( xFrame.is() ) { - uno::Reference< XFrame > xFrame( m_xWeakFrame.get(), UNO_QUERY ); - if ( xFrame.is() ) - { - xFrame->removeFrameActionListener( uno::Reference< XFrameActionListener >( static_cast<OWeakObject *>(this), UNO_QUERY )); - m_bActivateListener = false; - } + xFrame->removeFrameActionListener( uno::Reference< XFrameActionListener >( static_cast<OWeakObject *>(this), UNO_QUERY )); + m_bActivateListener = false; } - - // Forget our factory. - m_xContext.clear(); } + + // Forget our factory. + m_xContext.clear(); } void PopupMenuDispatcher::impl_RetrievePopupControllerQuery() { - if ( !m_xPopupCtrlQuery.is() ) + if ( m_xPopupCtrlQuery.is() ) + return; + + css::uno::Reference< css::frame::XLayoutManager2 > xLayoutManager; + css::uno::Reference< css::frame::XFrame > xFrame( m_xWeakFrame ); + + if ( !xFrame.is() ) + return; + + css::uno::Reference< css::beans::XPropertySet > xPropSet( xFrame, css::uno::UNO_QUERY ); + if ( !xPropSet.is() ) + return; + + try { - css::uno::Reference< css::frame::XLayoutManager2 > xLayoutManager; - css::uno::Reference< css::frame::XFrame > xFrame( m_xWeakFrame ); + xPropSet->getPropertyValue( FRAME_PROPNAME_ASCII_LAYOUTMANAGER ) >>= xLayoutManager; - if ( xFrame.is() ) + if ( xLayoutManager.is() ) { - css::uno::Reference< css::beans::XPropertySet > xPropSet( xFrame, css::uno::UNO_QUERY ); - if ( xPropSet.is() ) - { - try - { - xPropSet->getPropertyValue( FRAME_PROPNAME_ASCII_LAYOUTMANAGER ) >>= xLayoutManager; + css::uno::Reference< css::ui::XUIElement > xMenuBar = xLayoutManager->getElement( "private:resource/menubar/menubar" ); - if ( xLayoutManager.is() ) - { - css::uno::Reference< css::ui::XUIElement > xMenuBar = xLayoutManager->getElement( "private:resource/menubar/menubar" ); - - m_xPopupCtrlQuery.set( xMenuBar, css::uno::UNO_QUERY ); - } - } - catch ( const css::uno::RuntimeException& ) - { - throw; - } - catch ( const css::uno::Exception& ) - { - } - } + m_xPopupCtrlQuery.set( xMenuBar, css::uno::UNO_QUERY ); } } + catch ( const css::uno::RuntimeException& ) + { + throw; + } + catch ( const css::uno::Exception& ) + { + } } } // namespace framework diff --git a/framework/source/fwe/classes/addonmenu.cxx b/framework/source/fwe/classes/addonmenu.cxx index 5a7ab9f5c544..0ce25ceca88f 100644 --- a/framework/source/fwe/classes/addonmenu.cxx +++ b/framework/source/fwe/classes/addonmenu.cxx @@ -89,44 +89,44 @@ static sal_uInt16 FindMenuId( Menu const * pMenu, const OUString& aCommand ) void AddonMenuManager::MergeAddonHelpMenu( const Reference< XFrame >& rFrame, MenuBar const * pMergeMenuBar ) { - if ( pMergeMenuBar ) - { - PopupMenu* pHelpMenu(nullptr); - sal_uInt16 nId = FindMenuId(pMergeMenuBar, ".uno:HelpMenu"); - if ( nId != USHRT_MAX ) - pHelpMenu = pMergeMenuBar->GetPopupMenu( nId ); + if ( !pMergeMenuBar ) + return; - if ( pHelpMenu ) - { - // Add-Ons help menu items should be inserted after the "registration" menu item - sal_uInt16 nItemCount = pHelpMenu->GetItemCount(); - sal_uInt16 nInsSepAfterPos = MENU_APPEND; - sal_uInt16 nUniqueMenuId = ADDONMENU_ITEMID_START; - AddonsOptions aOptions; + PopupMenu* pHelpMenu(nullptr); + sal_uInt16 nId = FindMenuId(pMergeMenuBar, ".uno:HelpMenu"); + if ( nId != USHRT_MAX ) + pHelpMenu = pMergeMenuBar->GetPopupMenu( nId ); - // try to detect the about menu item with the command URL - nId = FindMenuId(pHelpMenu, ".uno:About"); - sal_uInt16 nInsPos = pHelpMenu->GetItemPos( nId ); + if ( !pHelpMenu ) + return; - const Sequence< Sequence< PropertyValue > >& rAddonHelpMenuEntries = aOptions.GetAddonsHelpMenu(); + // Add-Ons help menu items should be inserted after the "registration" menu item + sal_uInt16 nItemCount = pHelpMenu->GetItemCount(); + sal_uInt16 nInsSepAfterPos = MENU_APPEND; + sal_uInt16 nUniqueMenuId = ADDONMENU_ITEMID_START; + AddonsOptions aOptions; - if ( nInsPos < nItemCount && pHelpMenu->GetItemType( nInsPos ) != MenuItemType::SEPARATOR ) - nInsSepAfterPos = nInsPos; + // try to detect the about menu item with the command URL + nId = FindMenuId(pHelpMenu, ".uno:About"); + sal_uInt16 nInsPos = pHelpMenu->GetItemPos( nId ); - OUString aModuleIdentifier = vcl::CommandInfoProvider::GetModuleIdentifier(rFrame); - AddonMenuManager::BuildMenu( pHelpMenu, nInsPos, nUniqueMenuId, rAddonHelpMenuEntries, rFrame, aModuleIdentifier ); + const Sequence< Sequence< PropertyValue > >& rAddonHelpMenuEntries = aOptions.GetAddonsHelpMenu(); - if ( pHelpMenu->GetItemCount() > nItemCount ) - { - if ( nInsSepAfterPos < MENU_APPEND ) - { - nInsSepAfterPos += ( pHelpMenu->GetItemCount() - nItemCount ); - if ( pHelpMenu->GetItemType( nInsSepAfterPos ) != MenuItemType::SEPARATOR ) - pHelpMenu->InsertSeparator(OString(), nInsSepAfterPos); - } - pHelpMenu->InsertSeparator(OString(), nItemCount); - } + if ( nInsPos < nItemCount && pHelpMenu->GetItemType( nInsPos ) != MenuItemType::SEPARATOR ) + nInsSepAfterPos = nInsPos; + + OUString aModuleIdentifier = vcl::CommandInfoProvider::GetModuleIdentifier(rFrame); + AddonMenuManager::BuildMenu( pHelpMenu, nInsPos, nUniqueMenuId, rAddonHelpMenuEntries, rFrame, aModuleIdentifier ); + + if ( pHelpMenu->GetItemCount() > nItemCount ) + { + if ( nInsSepAfterPos < MENU_APPEND ) + { + nInsSepAfterPos += ( pHelpMenu->GetItemCount() - nItemCount ); + if ( pHelpMenu->GetItemType( nInsSepAfterPos ) != MenuItemType::SEPARATOR ) + pHelpMenu->InsertSeparator(OString(), nInsSepAfterPos); } + pHelpMenu->InsertSeparator(OString(), nItemCount); } } @@ -135,52 +135,52 @@ void AddonMenuManager::MergeAddonPopupMenus( const Reference< XFrame >& rFrame, sal_uInt16 nMergeAtPos, MenuBar* pMergeMenuBar ) { - if ( pMergeMenuBar ) - { - AddonsOptions aAddonsOptions; - sal_uInt16 nInsertPos = nMergeAtPos; + if ( !pMergeMenuBar ) + return; - OUString aTitle; - OUString aURL; - OUString aTarget; - OUString aImageId; - OUString aContext; - Sequence< Sequence< PropertyValue > > aAddonSubMenu; - sal_uInt16 nUniqueMenuId = ADDONMENU_ITEMID_START; + AddonsOptions aAddonsOptions; + sal_uInt16 nInsertPos = nMergeAtPos; - OUString aModuleIdentifier = vcl::CommandInfoProvider::GetModuleIdentifier(rFrame); + OUString aTitle; + OUString aURL; + OUString aTarget; + OUString aImageId; + OUString aContext; + Sequence< Sequence< PropertyValue > > aAddonSubMenu; + sal_uInt16 nUniqueMenuId = ADDONMENU_ITEMID_START; - const Sequence< Sequence< PropertyValue > >& rAddonMenuEntries = aAddonsOptions.GetAddonsMenuBarPart(); - for ( sal_Int32 i = 0; i < rAddonMenuEntries.getLength(); i++ ) + OUString aModuleIdentifier = vcl::CommandInfoProvider::GetModuleIdentifier(rFrame); + + const Sequence< Sequence< PropertyValue > >& rAddonMenuEntries = aAddonsOptions.GetAddonsMenuBarPart(); + for ( sal_Int32 i = 0; i < rAddonMenuEntries.getLength(); i++ ) + { + AddonMenuManager::GetMenuEntry( rAddonMenuEntries[i], + aTitle, + aURL, + aTarget, + aImageId, + aContext, + aAddonSubMenu ); + if ( !aTitle.isEmpty() && + !aURL.isEmpty() && + aAddonSubMenu.hasElements() && + AddonMenuManager::IsCorrectContext( aModuleIdentifier, aContext )) { - AddonMenuManager::GetMenuEntry( rAddonMenuEntries[i], - aTitle, - aURL, - aTarget, - aImageId, - aContext, - aAddonSubMenu ); - if ( !aTitle.isEmpty() && - !aURL.isEmpty() && - aAddonSubMenu.hasElements() && - AddonMenuManager::IsCorrectContext( aModuleIdentifier, aContext )) - { - sal_uInt16 nId = nUniqueMenuId++; - VclPtrInstance<PopupMenu> pAddonPopupMenu; + sal_uInt16 nId = nUniqueMenuId++; + VclPtrInstance<PopupMenu> pAddonPopupMenu; - AddonMenuManager::BuildMenu( pAddonPopupMenu, MENU_APPEND, nUniqueMenuId, aAddonSubMenu, rFrame, aModuleIdentifier ); + AddonMenuManager::BuildMenu( pAddonPopupMenu, MENU_APPEND, nUniqueMenuId, aAddonSubMenu, rFrame, aModuleIdentifier ); - if ( pAddonPopupMenu->GetItemCount() > 0 ) - { - pMergeMenuBar->InsertItem( nId, aTitle, MenuItemBits::NONE, OString(), nInsertPos++ ); - pMergeMenuBar->SetPopupMenu( nId, pAddonPopupMenu ); + if ( pAddonPopupMenu->GetItemCount() > 0 ) + { + pMergeMenuBar->InsertItem( nId, aTitle, MenuItemBits::NONE, OString(), nInsertPos++ ); + pMergeMenuBar->SetPopupMenu( nId, pAddonPopupMenu ); - // Store the command URL into the VCL menu bar for later identification - pMergeMenuBar->SetItemCommand( nId, aURL ); - } - else - pAddonPopupMenu.disposeAndClear(); + // Store the command URL into the VCL menu bar for later identification + pMergeMenuBar->SetItemCommand( nId, aURL ); } + else + pAddonPopupMenu.disposeAndClear(); } } } diff --git a/framework/source/fwe/helper/actiontriggerhelper.cxx b/framework/source/fwe/helper/actiontriggerhelper.cxx index ed700fdced20..deb14f0e1e2e 100644 --- a/framework/source/fwe/helper/actiontriggerhelper.cxx +++ b/framework/source/fwe/helper/actiontriggerhelper.cxx @@ -96,139 +96,139 @@ static void GetMenuItemAttributes( const Reference< XPropertySet >& xActionTrigg static void InsertSubMenuItems( Menu* pSubMenu, sal_uInt16& nItemId, const Reference< XIndexContainer >& xActionTriggerContainer ) { - if ( xActionTriggerContainer.is() ) - { - AddonsOptions aAddonOptions; - OUString aSlotURL( "slot:" ); + if ( !xActionTriggerContainer.is() ) + return; + + AddonsOptions aAddonOptions; + OUString aSlotURL( "slot:" ); - for ( sal_Int32 i = 0; i < xActionTriggerContainer->getCount(); i++ ) + for ( sal_Int32 i = 0; i < xActionTriggerContainer->getCount(); i++ ) + { + try { - try + Reference< XPropertySet > xPropSet; + if (( xActionTriggerContainer->getByIndex( i ) >>= xPropSet ) && ( xPropSet.is() )) { - Reference< XPropertySet > xPropSet; - if (( xActionTriggerContainer->getByIndex( i ) >>= xPropSet ) && ( xPropSet.is() )) + if ( IsSeparator( xPropSet )) { - if ( IsSeparator( xPropSet )) - { - // Separator - SolarMutexGuard aGuard; - pSubMenu->InsertSeparator(); - } - else - { - // Menu item - OUString aLabel; - OUString aCommandURL; - OUString aHelpURL; - Reference< XBitmap > xBitmap; - Reference< XIndexContainer > xSubContainer; + // Separator + SolarMutexGuard aGuard; + pSubMenu->InsertSeparator(); + } + else + { + // Menu item + OUString aLabel; + OUString aCommandURL; + OUString aHelpURL; + Reference< XBitmap > xBitmap; + Reference< XIndexContainer > xSubContainer; + + sal_uInt16 nNewItemId = nItemId++; + GetMenuItemAttributes( xPropSet, aLabel, aCommandURL, aHelpURL, xBitmap, xSubContainer ); - sal_uInt16 nNewItemId = nItemId++; - GetMenuItemAttributes( xPropSet, aLabel, aCommandURL, aHelpURL, xBitmap, xSubContainer ); + SolarMutexGuard aGuard; + { + // insert new menu item + sal_Int32 nIndex = aCommandURL.indexOf( aSlotURL ); + if ( nIndex >= 0 ) + { + // Special code for our menu implementation: some menu items don't have a + // command url but uses the item id as a unique identifier. These entries + // got a special url during conversion from menu=>actiontriggercontainer. + // Now we have to extract this special url and set the correct item id!!! + nNewItemId = static_cast<sal_uInt16>(aCommandURL.copy( nIndex+aSlotURL.getLength() ).toInt32()); + pSubMenu->InsertItem( nNewItemId, aLabel ); + } + else + { + pSubMenu->InsertItem( nNewItemId, aLabel ); + pSubMenu->SetItemCommand( nNewItemId, aCommandURL ); + } - SolarMutexGuard aGuard; + // handle bitmap + if ( xBitmap.is() ) { - // insert new menu item - sal_Int32 nIndex = aCommandURL.indexOf( aSlotURL ); - if ( nIndex >= 0 ) - { - // Special code for our menu implementation: some menu items don't have a - // command url but uses the item id as a unique identifier. These entries - // got a special url during conversion from menu=>actiontriggercontainer. - // Now we have to extract this special url and set the correct item id!!! - nNewItemId = static_cast<sal_uInt16>(aCommandURL.copy( nIndex+aSlotURL.getLength() ).toInt32()); - pSubMenu->InsertItem( nNewItemId, aLabel ); - } - else + bool bImageSet = false; + + Reference< XUnoTunnel > xUnoTunnel( xBitmap, UNO_QUERY ); + if ( xUnoTunnel.is() ) { - pSubMenu->InsertItem( nNewItemId, aLabel ); - pSubMenu->SetItemCommand( nNewItemId, aCommandURL ); + // Try to get implementation pointer through XUnoTunnel + sal_Int64 nPointer = xUnoTunnel->getSomething( ImageWrapper::GetUnoTunnelId() ); + if ( nPointer ) + { + // This is our own optimized implementation of menu images! + ImageWrapper* pImageWrapper = reinterpret_cast< ImageWrapper * >( nPointer ); + const Image& aMenuImage = pImageWrapper->GetImage(); + + if ( !!aMenuImage ) + pSubMenu->SetItemImage( nNewItemId, aMenuImage ); + + bImageSet = true; + } } - // handle bitmap - if ( xBitmap.is() ) + if ( !bImageSet ) { - bool bImageSet = false; + // This is an unknown implementation of a XBitmap interface. We have to + // use a more time consuming way to build an Image! + Image aImage; + BitmapEx aBitmap; - Reference< XUnoTunnel > xUnoTunnel( xBitmap, UNO_QUERY ); - if ( xUnoTunnel.is() ) + Sequence< sal_Int8 > aDIBSeq; { - // Try to get implementation pointer through XUnoTunnel - sal_Int64 nPointer = xUnoTunnel->getSomething( ImageWrapper::GetUnoTunnelId() ); - if ( nPointer ) - { - // This is our own optimized implementation of menu images! - ImageWrapper* pImageWrapper = reinterpret_cast< ImageWrapper * >( nPointer ); - const Image& aMenuImage = pImageWrapper->GetImage(); - - if ( !!aMenuImage ) - pSubMenu->SetItemImage( nNewItemId, aMenuImage ); - - bImageSet = true; - } + aDIBSeq = xBitmap->getDIB(); + SvMemoryStream aMem( const_cast<sal_Int8 *>(aDIBSeq.getConstArray()), aDIBSeq.getLength(), StreamMode::READ ); + ReadDIBBitmapEx(aBitmap, aMem); } - if ( !bImageSet ) + aDIBSeq = xBitmap->getMaskDIB(); + if ( aDIBSeq.hasElements() ) { - // This is an unknown implementation of a XBitmap interface. We have to - // use a more time consuming way to build an Image! - Image aImage; - BitmapEx aBitmap; - - Sequence< sal_Int8 > aDIBSeq; - { - aDIBSeq = xBitmap->getDIB(); - SvMemoryStream aMem( const_cast<sal_Int8 *>(aDIBSeq.getConstArray()), aDIBSeq.getLength(), StreamMode::READ ); - ReadDIBBitmapEx(aBitmap, aMem); - } - - aDIBSeq = xBitmap->getMaskDIB(); - if ( aDIBSeq.hasElements() ) - { - Bitmap aMaskBitmap; - SvMemoryStream aMem( const_cast<sal_Int8 *>(aDIBSeq.getConstArray()), aDIBSeq.getLength(), StreamMode::READ ); - ReadDIB(aMaskBitmap, aMem, true); - aImage = Image(BitmapEx(aBitmap.GetBitmap(), aMaskBitmap)); - } - else - aImage = Image( aBitmap ); - - if ( !!aImage ) - pSubMenu->SetItemImage( nNewItemId, aImage ); + Bitmap aMaskBitmap; + SvMemoryStream aMem( const_cast<sal_Int8 *>(aDIBSeq.getConstArray()), aDIBSeq.getLength(), StreamMode::READ ); + ReadDIB(aMaskBitmap, aMem, true); + aImage = Image(BitmapEx(aBitmap.GetBitmap(), aMaskBitmap)); } - } - else - { - // Support add-on images for context menu interceptors - Image aImage = aAddonOptions.GetImageFromURL( aCommandURL, false, true ); + else + aImage = Image( aBitmap ); + if ( !!aImage ) pSubMenu->SetItemImage( nNewItemId, aImage ); } + } + else + { + // Support add-on images for context menu interceptors + Image aImage = aAddonOptions.GetImageFromURL( aCommandURL, false, true ); + if ( !!aImage ) + pSubMenu->SetItemImage( nNewItemId, aImage ); + } - if ( xSubContainer.is() ) - { - VclPtr<PopupMenu> pNewSubMenu = VclPtr<PopupMenu>::Create(); + if ( xSubContainer.is() ) + { + VclPtr<PopupMenu> pNewSubMenu = VclPtr<PopupMenu>::Create(); - // Sub menu (recursive call CreateSubMenu ) - InsertSubMenuItems( pNewSubMenu, nItemId, xSubContainer ); - pSubMenu->SetPopupMenu( nNewItemId, pNewSubMenu ); - } + // Sub menu (recursive call CreateSubMenu ) + InsertSubMenuItems( pNewSubMenu, nItemId, xSubContainer ); + pSubMenu->SetPopupMenu( nNewItemId, pNewSubMenu ); } } } } - catch (const IndexOutOfBoundsException&) - { - return; - } - catch (const WrappedTargetException&) - { - return; - } - catch (const RuntimeException&) - { - return; - } + } + catch (const IndexOutOfBoundsException&) + { + return; + } + catch (const WrappedTargetException&) + { + return; + } + catch (const RuntimeException&) + { + return; } } } diff --git a/framework/source/fwe/xml/menudocumenthandler.cxx b/framework/source/fwe/xml/menudocumenthandler.cxx index 144c6c600d22..a9bc60525af1 100644 --- a/framework/source/fwe/xml/menudocumenthandler.cxx +++ b/framework/source/fwe/xml/menudocumenthandler.cxx @@ -270,29 +270,29 @@ void SAL_CALL OReadMenuDocumentHandler::characters(const OUString&) void SAL_CALL OReadMenuDocumentHandler::endElement( const OUString& aName ) { - if ( m_eReaderMode != ReaderMode::None ) + if ( m_eReaderMode == ReaderMode::None ) + return; + + --m_nElementDepth; + m_xReader->endElement( aName ); + if ( 0 != m_nElementDepth ) + return; + + m_xReader->endDocument(); + m_xReader.clear(); + if ( m_eReaderMode == ReaderMode::MenuBar && aName != ELEMENT_MENUBAR ) { - --m_nElementDepth; - m_xReader->endElement( aName ); - if ( 0 == m_nElementDepth ) - { - m_xReader->endDocument(); - m_xReader.clear(); - if ( m_eReaderMode == ReaderMode::MenuBar && aName != ELEMENT_MENUBAR ) - { - OUString aErrorMessage = getErrorLineString() + - "closing element menubar expected!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - else if ( m_eReaderMode == ReaderMode::MenuPopup && aName != ELEMENT_MENUPOPUP ) - { - OUString aErrorMessage = getErrorLineString() + - "closing element menupopup expected!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - m_eReaderMode = ReaderMode::None; - } + OUString aErrorMessage = getErrorLineString() + + "closing element menubar expected!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } + else if ( m_eReaderMode == ReaderMode::MenuPopup && aName != ELEMENT_MENUPOPUP ) + { + OUString aErrorMessage = getErrorLineString() + + "closing element menupopup expected!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); + } + m_eReaderMode = ReaderMode::None; } OReadMenuBarHandler::OReadMenuBarHandler( @@ -410,24 +410,24 @@ void SAL_CALL OReadMenuBarHandler::characters(const OUString&) void OReadMenuBarHandler::endElement( const OUString& aName ) { - if ( m_bMenuMode ) + if ( !m_bMenuMode ) + return; + + --m_nElementDepth; + if ( 0 == m_nElementDepth ) { - --m_nElementDepth; - if ( 0 == m_nElementDepth ) + m_xReader->endDocument(); + m_xReader.clear(); + m_bMenuMode = false; + if ( aName != ELEMENT_MENU ) { - m_xReader->endDocument(); - m_xReader.clear(); - m_bMenuMode = false; - if ( aName != ELEMENT_MENU ) - { - OUString aErrorMessage = getErrorLineString() + - "closing element menu expected!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + OUString aErrorMessage = getErrorLineString() + + "closing element menu expected!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - else - m_xReader->endElement( aName ); } + else + m_xReader->endElement( aName ); } OReadMenuHandler::OReadMenuHandler( @@ -481,24 +481,24 @@ void SAL_CALL OReadMenuHandler::characters(const OUString&) void SAL_CALL OReadMenuHandler::endElement( const OUString& aName ) { - if ( m_bMenuPopupMode ) + if ( !m_bMenuPopupMode ) + return; + + --m_nElementDepth; + if ( 0 == m_nElementDepth ) { - --m_nElementDepth; - if ( 0 == m_nElementDepth ) + m_xReader->endDocument(); + m_xReader.clear(); + m_bMenuPopupMode = false; + if ( aName != ELEMENT_MENUPOPUP ) { - m_xReader->endDocument(); - m_xReader.clear(); - m_bMenuPopupMode = false; - if ( aName != ELEMENT_MENUPOPUP ) - { - OUString aErrorMessage = getErrorLineString() + - "closing element menupopup expected!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + OUString aErrorMessage = getErrorLineString() + + "closing element menupopup expected!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - else - m_xReader->endElement( aName ); } + else + m_xReader->endElement( aName ); } OReadMenuPopupHandler::OReadMenuPopupHandler( diff --git a/framework/source/fwe/xml/statusbardocumenthandler.cxx b/framework/source/fwe/xml/statusbardocumenthandler.cxx index 43d6cc12e811..e9e6d0038ea1 100644 --- a/framework/source/fwe/xml/statusbardocumenthandler.cxx +++ b/framework/source/fwe/xml/statusbardocumenthandler.cxx @@ -202,202 +202,202 @@ void SAL_CALL OReadStatusBarDocumentHandler::startElement( SolarMutexGuard g; StatusBarHashMap::const_iterator pStatusBarEntry = m_aStatusBarMap.find( aName ); - if ( pStatusBarEntry != m_aStatusBarMap.end() ) + if ( pStatusBarEntry == m_aStatusBarMap.end() ) + return; + + switch ( pStatusBarEntry->second ) { - switch ( pStatusBarEntry->second ) + case SB_ELEMENT_STATUSBAR: { - case SB_ELEMENT_STATUSBAR: + if ( m_bStatusBarStartFound ) { - if ( m_bStatusBarStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "Element 'statusbar:statusbar' cannot be embedded into 'statusbar:statusbar'!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - - m_bStatusBarStartFound = true; + OUString aErrorMessage = getErrorLineString() + "Element 'statusbar:statusbar' cannot be embedded into 'statusbar:statusbar'!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; - case SB_ELEMENT_STATUSBARITEM: + m_bStatusBarStartFound = true; + } + break; + + case SB_ELEMENT_STATUSBARITEM: + { + if ( !m_bStatusBarStartFound ) { - if ( !m_bStatusBarStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "Element 'statusbar:statusbaritem' must be embedded into element 'statusbar:statusbar'!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + OUString aErrorMessage = getErrorLineString() + "Element 'statusbar:statusbaritem' must be embedded into element 'statusbar:statusbar'!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); + } - if ( m_bStatusBarItemStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "Element statusbar:statusbaritem is not a container!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + if ( m_bStatusBarItemStartFound ) + { + OUString aErrorMessage = getErrorLineString() + "Element statusbar:statusbaritem is not a container!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); + } - OUString aCommandURL; - OUString aHelpURL; - sal_Int16 nItemBits( ItemStyle::ALIGN_CENTER|ItemStyle::DRAW_IN3D|ItemStyle::MANDATORY ); - sal_Int16 nWidth( 0 ); - sal_Int16 nOffset( STATUSBAR_OFFSET ); - bool bCommandURL( false ); + OUString aCommandURL; + OUString aHelpURL; + sal_Int16 nItemBits( ItemStyle::ALIGN_CENTER|ItemStyle::DRAW_IN3D|ItemStyle::MANDATORY ); + sal_Int16 nWidth( 0 ); + sal_Int16 nOffset( STATUSBAR_OFFSET ); + bool bCommandURL( false ); - m_bStatusBarItemStartFound = true; - for ( sal_Int16 n = 0; n < xAttribs->getLength(); n++ ) + m_bStatusBarItemStartFound = true; + for ( sal_Int16 n = 0; n < xAttribs->getLength(); n++ ) + { + pStatusBarEntry = m_aStatusBarMap.find( xAttribs->getNameByIndex( n ) ); + if ( pStatusBarEntry != m_aStatusBarMap.end() ) { - pStatusBarEntry = m_aStatusBarMap.find( xAttribs->getNameByIndex( n ) ); - if ( pStatusBarEntry != m_aStatusBarMap.end() ) + switch ( pStatusBarEntry->second ) { - switch ( pStatusBarEntry->second ) + case SB_ATTRIBUTE_URL: { - case SB_ATTRIBUTE_URL: + bCommandURL = true; + aCommandURL = xAttribs->getValueByIndex( n ); + } + break; + + case SB_ATTRIBUTE_ALIGN: + { + if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_ALIGN_LEFT ) { - bCommandURL = true; - aCommandURL = xAttribs->getValueByIndex( n ); + nItemBits |= ItemStyle::ALIGN_LEFT; + nItemBits &= ~ItemStyle::ALIGN_CENTER; } - break; - - case SB_ATTRIBUTE_ALIGN: + else if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_ALIGN_CENTER ) { - if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_ALIGN_LEFT ) - { - nItemBits |= ItemStyle::ALIGN_LEFT; - nItemBits &= ~ItemStyle::ALIGN_CENTER; - } - else if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_ALIGN_CENTER ) - { - nItemBits |= ItemStyle::ALIGN_CENTER; - nItemBits &= ~ItemStyle::ALIGN_LEFT; - } - else if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_ALIGN_RIGHT ) - { - nItemBits |= ItemStyle::ALIGN_RIGHT; - } - else - { - OUString aErrorMessage = getErrorLineString() + "Attribute statusbar:align must have one value of 'left','right' or 'center'!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + nItemBits |= ItemStyle::ALIGN_CENTER; + nItemBits &= ~ItemStyle::ALIGN_LEFT; } - break; - - case SB_ATTRIBUTE_STYLE: + else if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_ALIGN_RIGHT ) { - if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_STYLE_IN ) - { - nItemBits |= ItemStyle::DRAW_IN3D; - nItemBits &= ~ItemStyle::DRAW_OUT3D; - } - else if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_STYLE_OUT ) - { - nItemBits |= ItemStyle::DRAW_OUT3D; - nItemBits &= ~ItemStyle::DRAW_IN3D; - } - else if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_STYLE_FLAT ) - { - nItemBits |= ItemStyle::DRAW_FLAT; - } - else - { - OUString aErrorMessage = getErrorLineString() + "Attribute statusbar:autosize must have value 'true' or 'false'!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + nItemBits |= ItemStyle::ALIGN_RIGHT; } - break; - - case SB_ATTRIBUTE_AUTOSIZE: + else { - if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_BOOLEAN_TRUE ) - nItemBits |= ItemStyle::AUTO_SIZE; - else if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_BOOLEAN_FALSE ) - nItemBits &= ~ItemStyle::AUTO_SIZE; - else - { - OUString aErrorMessage = getErrorLineString() + "Attribute statusbar:autosize must have value 'true' or 'false'!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + OUString aErrorMessage = getErrorLineString() + "Attribute statusbar:align must have one value of 'left','right' or 'center'!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; + } + break; - case SB_ATTRIBUTE_OWNERDRAW: + case SB_ATTRIBUTE_STYLE: + { + if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_STYLE_IN ) { - if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_BOOLEAN_TRUE ) - nItemBits |= ItemStyle::OWNER_DRAW; - else if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_BOOLEAN_FALSE ) - nItemBits &= ~ItemStyle::OWNER_DRAW; - else - { - OUString aErrorMessage = getErrorLineString() + "Attribute statusbar:ownerdraw must have value 'true' or 'false'!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + nItemBits |= ItemStyle::DRAW_IN3D; + nItemBits &= ~ItemStyle::DRAW_OUT3D; } - break; - - case SB_ATTRIBUTE_WIDTH: + else if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_STYLE_OUT ) { - nWidth = static_cast<sal_Int16>(xAttribs->getValueByIndex( n ).toInt32()); + nItemBits |= ItemStyle::DRAW_OUT3D; + nItemBits &= ~ItemStyle::DRAW_IN3D; } - break; - - case SB_ATTRIBUTE_OFFSET: + else if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_STYLE_FLAT ) { - nOffset = static_cast<sal_Int16>(xAttribs->getValueByIndex( n ).toInt32()); + nItemBits |= ItemStyle::DRAW_FLAT; } - break; + else + { + OUString aErrorMessage = getErrorLineString() + "Attribute statusbar:autosize must have value 'true' or 'false'!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); + } + } + break; - case SB_ATTRIBUTE_HELPURL: + case SB_ATTRIBUTE_AUTOSIZE: + { + if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_BOOLEAN_TRUE ) + nItemBits |= ItemStyle::AUTO_SIZE; + else if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_BOOLEAN_FALSE ) + nItemBits &= ~ItemStyle::AUTO_SIZE; + else { - aHelpURL = xAttribs->getValueByIndex( n ); + OUString aErrorMessage = getErrorLineString() + "Attribute statusbar:autosize must have value 'true' or 'false'!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; + } + break; - case SB_ATTRIBUTE_MANDATORY: + case SB_ATTRIBUTE_OWNERDRAW: + { + if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_BOOLEAN_TRUE ) + nItemBits |= ItemStyle::OWNER_DRAW; + else if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_BOOLEAN_FALSE ) + nItemBits &= ~ItemStyle::OWNER_DRAW; + else { - if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_BOOLEAN_TRUE ) - nItemBits |= ItemStyle::MANDATORY; - else if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_BOOLEAN_FALSE ) - nItemBits &= ~ItemStyle::MANDATORY; - else - { - OUString aErrorMessage = getErrorLineString() + "Attribute statusbar:mandatory must have value 'true' or 'false'!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + OUString aErrorMessage = getErrorLineString() + "Attribute statusbar:ownerdraw must have value 'true' or 'false'!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; + } + break; - default: - break; + case SB_ATTRIBUTE_WIDTH: + { + nWidth = static_cast<sal_Int16>(xAttribs->getValueByIndex( n ).toInt32()); } - } - } // for + break; - if ( !bCommandURL ) - { - OUString aErrorMessage = getErrorLineString() + "Required attribute statusbar:url must have a value!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); + case SB_ATTRIBUTE_OFFSET: + { + nOffset = static_cast<sal_Int16>(xAttribs->getValueByIndex( n ).toInt32()); + } + break; + + case SB_ATTRIBUTE_HELPURL: + { + aHelpURL = xAttribs->getValueByIndex( n ); + } + break; + + case SB_ATTRIBUTE_MANDATORY: + { + if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_BOOLEAN_TRUE ) + nItemBits |= ItemStyle::MANDATORY; + else if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_BOOLEAN_FALSE ) + nItemBits &= ~ItemStyle::MANDATORY; + else + { + OUString aErrorMessage = getErrorLineString() + "Attribute statusbar:mandatory must have value 'true' or 'false'!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); + } + } + break; + + default: + break; + } } - else - { - Sequence< PropertyValue > aStatusbarItemProp( 6 ); - aStatusbarItemProp[0].Name = ITEM_DESCRIPTOR_COMMANDURL; - aStatusbarItemProp[1].Name = ITEM_DESCRIPTOR_HELPURL; - aStatusbarItemProp[2].Name = ITEM_DESCRIPTOR_OFFSET; - aStatusbarItemProp[3].Name = ITEM_DESCRIPTOR_STYLE; - aStatusbarItemProp[4].Name = ITEM_DESCRIPTOR_WIDTH; - aStatusbarItemProp[5].Name = ITEM_DESCRIPTOR_TYPE; - - aStatusbarItemProp[0].Value <<= aCommandURL; - aStatusbarItemProp[1].Value <<= aHelpURL; - aStatusbarItemProp[2].Value <<= nOffset; - aStatusbarItemProp[3].Value <<= nItemBits; - aStatusbarItemProp[4].Value <<= nWidth; - aStatusbarItemProp[5].Value <<= css::ui::ItemType::DEFAULT; - - m_aStatusBarItems->insertByIndex( m_aStatusBarItems->getCount(), makeAny( aStatusbarItemProp ) ); - } - } - break; + } // for - default: - break; + if ( !bCommandURL ) + { + OUString aErrorMessage = getErrorLineString() + "Required attribute statusbar:url must have a value!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); + } + else + { + Sequence< PropertyValue > aStatusbarItemProp( 6 ); + aStatusbarItemProp[0].Name = ITEM_DESCRIPTOR_COMMANDURL; + aStatusbarItemProp[1].Name = ITEM_DESCRIPTOR_HELPURL; + aStatusbarItemProp[2].Name = ITEM_DESCRIPTOR_OFFSET; + aStatusbarItemProp[3].Name = ITEM_DESCRIPTOR_STYLE; + aStatusbarItemProp[4].Name = ITEM_DESCRIPTOR_WIDTH; + aStatusbarItemProp[5].Name = ITEM_DESCRIPTOR_TYPE; + + aStatusbarItemProp[0].Value <<= aCommandURL; + aStatusbarItemProp[1].Value <<= aHelpURL; + aStatusbarItemProp[2].Value <<= nOffset; + aStatusbarItemProp[3].Value <<= nItemBits; + aStatusbarItemProp[4].Value <<= nWidth; + aStatusbarItemProp[5].Value <<= css::ui::ItemType::DEFAULT; + + m_aStatusBarItems->insertByIndex( m_aStatusBarItems->getCount(), makeAny( aStatusbarItemProp ) ); + } } + break; + + default: + break; } } @@ -406,37 +406,36 @@ void SAL_CALL OReadStatusBarDocumentHandler::endElement(const OUString& aName) SolarMutexGuard g; StatusBarHashMap::const_iterator pStatusBarEntry = m_aStatusBarMap.find( aName ); - if ( pStatusBarEntry != m_aStatusBarMap.end() ) + if ( pStatusBarEntry == m_aStatusBarMap.end() ) + return; + + switch ( pStatusBarEntry->second ) { - switch ( pStatusBarEntry->second ) + case SB_ELEMENT_STATUSBAR: { - case SB_ELEMENT_STATUSBAR: + if ( !m_bStatusBarStartFound ) { - if ( !m_bStatusBarStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "End element 'statusbar' found, but no start element 'statusbar'"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - - m_bStatusBarStartFound = false; + OUString aErrorMessage = getErrorLineString() + "End element 'statusbar' found, but no start element 'statusbar'"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; - case SB_ELEMENT_STATUSBARITEM: - { - if ( !m_bStatusBarItemStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "End element 'statusbar:statusbaritem' found, but no start element 'statusbar:statusbaritem'"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + m_bStatusBarStartFound = false; + } + break; - m_bStatusBarItemStartFound = false; + case SB_ELEMENT_STATUSBARITEM: + { + if ( !m_bStatusBarItemStartFound ) + { + OUString aErrorMessage = getErrorLineString() + "End element 'statusbar:statusbaritem' found, but no start element 'statusbar:statusbaritem'"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; - default: - break; + m_bStatusBarItemStartFound = false; } + break; + + default: break; } } diff --git a/framework/source/fwe/xml/toolboxdocumenthandler.cxx b/framework/source/fwe/xml/toolboxdocumenthandler.cxx index a01e0fc649cf..1027d18af4b8 100644 --- a/framework/source/fwe/xml/toolboxdocumenthandler.cxx +++ b/framework/source/fwe/xml/toolboxdocumenthandler.cxx @@ -196,273 +196,273 @@ void SAL_CALL OReadToolBoxDocumentHandler::startElement( SolarMutexGuard g; ToolBoxHashMap::const_iterator pToolBoxEntry = m_aToolBoxMap.find( aName ); - if ( pToolBoxEntry != m_aToolBoxMap.end() ) + if ( pToolBoxEntry == m_aToolBoxMap.end() ) + return; + + switch ( pToolBoxEntry->second ) { - switch ( pToolBoxEntry->second ) + case TB_ELEMENT_TOOLBAR: { - case TB_ELEMENT_TOOLBAR: + if ( m_bToolBarStartFound ) { - if ( m_bToolBarStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "Element 'toolbar:toolbar' cannot be embedded into 'toolbar:toolbar'!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - else + OUString aErrorMessage = getErrorLineString() + "Element 'toolbar:toolbar' cannot be embedded into 'toolbar:toolbar'!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); + } + else + { + // Check if we have a UI name set in our XML file + OUString aUIName; + for ( sal_Int16 n = 0; n < xAttribs->getLength(); n++ ) { - // Check if we have a UI name set in our XML file - OUString aUIName; - for ( sal_Int16 n = 0; n < xAttribs->getLength(); n++ ) + pToolBoxEntry = m_aToolBoxMap.find( xAttribs->getNameByIndex( n ) ); + if ( pToolBoxEntry != m_aToolBoxMap.end() ) { - pToolBoxEntry = m_aToolBoxMap.find( xAttribs->getNameByIndex( n ) ); - if ( pToolBoxEntry != m_aToolBoxMap.end() ) + switch ( pToolBoxEntry->second ) { - switch ( pToolBoxEntry->second ) - { - case TB_ATTRIBUTE_UINAME: - aUIName = xAttribs->getValueByIndex( n ); - break; - default: - break; - } + case TB_ATTRIBUTE_UINAME: + aUIName = xAttribs->getValueByIndex( n ); + break; + default: + break; } } - if ( !aUIName.isEmpty() ) + } + if ( !aUIName.isEmpty() ) + { + // Try to set UI name as a container property + Reference< XPropertySet > xPropSet( m_rItemContainer, UNO_QUERY ); + if ( xPropSet.is() ) { - // Try to set UI name as a container property - Reference< XPropertySet > xPropSet( m_rItemContainer, UNO_QUERY ); - if ( xPropSet.is() ) + try + { + xPropSet->setPropertyValue("UIName", makeAny( aUIName ) ); + } + catch ( const UnknownPropertyException& ) { - try - { - xPropSet->setPropertyValue("UIName", makeAny( aUIName ) ); - } - catch ( const UnknownPropertyException& ) - { - } } - } + } - m_bToolBarStartFound = true; } - break; + m_bToolBarStartFound = true; + } + break; - case TB_ELEMENT_TOOLBARITEM: + case TB_ELEMENT_TOOLBARITEM: + { + if ( !m_bToolBarStartFound ) { - if ( !m_bToolBarStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "Element 'toolbar:toolbaritem' must be embedded into element 'toolbar:toolbar'!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + OUString aErrorMessage = getErrorLineString() + "Element 'toolbar:toolbaritem' must be embedded into element 'toolbar:toolbar'!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); + } - if ( m_bToolBarSeparatorStartFound || - m_bToolBarBreakStartFound || - m_bToolBarSpaceStartFound || - m_bToolBarItemStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "Element toolbar:toolbaritem is not a container!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + if ( m_bToolBarSeparatorStartFound || + m_bToolBarBreakStartFound || + m_bToolBarSpaceStartFound || + m_bToolBarItemStartFound ) + { + OUString aErrorMessage = getErrorLineString() + "Element toolbar:toolbaritem is not a container!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); + } - bool bAttributeURL = false; + bool bAttributeURL = false; - m_bToolBarItemStartFound = true; - OUString aLabel; - OUString aCommandURL; - sal_uInt16 nItemBits( 0 ); - bool bVisible( true ); + m_bToolBarItemStartFound = true; + OUString aLabel; + OUString aCommandURL; + sal_uInt16 nItemBits( 0 ); + bool bVisible( true ); - for ( sal_Int16 n = 0; n < xAttribs->getLength(); n++ ) + for ( sal_Int16 n = 0; n < xAttribs->getLength(); n++ ) + { + pToolBoxEntry = m_aToolBoxMap.find( xAttribs->getNameByIndex( n ) ); + if ( pToolBoxEntry != m_aToolBoxMap.end() ) { - pToolBoxEntry = m_aToolBoxMap.find( xAttribs->getNameByIndex( n ) ); - if ( pToolBoxEntry != m_aToolBoxMap.end() ) + switch ( pToolBoxEntry->second ) { - switch ( pToolBoxEntry->second ) + case TB_ATTRIBUTE_TEXT: { - case TB_ATTRIBUTE_TEXT: - { - aLabel = xAttribs->getValueByIndex( n ); - } - break; + aLabel = xAttribs->getValueByIndex( n ); + } + break; - case TB_ATTRIBUTE_URL: - { - bAttributeURL = true; - aCommandURL = xAttribs->getValueByIndex( n ).intern(); - } - break; + case TB_ATTRIBUTE_URL: + { + bAttributeURL = true; + aCommandURL = xAttribs->getValueByIndex( n ).intern(); + } + break; - case TB_ATTRIBUTE_VISIBLE: + case TB_ATTRIBUTE_VISIBLE: + { + if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_BOOLEAN_TRUE ) + bVisible = true; + else if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_BOOLEAN_FALSE ) + bVisible = false; + else { - if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_BOOLEAN_TRUE ) - bVisible = true; - else if ( xAttribs->getValueByIndex( n ) == ATTRIBUTE_BOOLEAN_FALSE ) - bVisible = false; - else - { - OUString aErrorMessage = getErrorLineString() + "Attribute toolbar:visible must have value 'true' or 'false'!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + OUString aErrorMessage = getErrorLineString() + "Attribute toolbar:visible must have value 'true' or 'false'!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; + } + break; - case TB_ATTRIBUTE_STYLE: - { - // read space separated item style list - OUString aTemp = xAttribs->getValueByIndex( n ); - sal_Int32 nIndex = 0; + case TB_ATTRIBUTE_STYLE: + { + // read space separated item style list + OUString aTemp = xAttribs->getValueByIndex( n ); + sal_Int32 nIndex = 0; - do + do + { + OUString aToken = aTemp.getToken( 0, ' ', nIndex ); + if ( !aToken.isEmpty() ) { - OUString aToken = aTemp.getToken( 0, ' ', nIndex ); - if ( !aToken.isEmpty() ) - { - sal_Int32 nHashCode = aToken.hashCode(); - if ( nHashCode == m_nHashCode_Style_Radio ) - nItemBits |= css::ui::ItemStyle::RADIO_CHECK; - else if ( nHashCode == m_nHashCode_Style_Left ) - nItemBits |= css::ui::ItemStyle::ALIGN_LEFT; - else if ( nHashCode == m_nHashCode_Style_AutoSize ) - nItemBits |= css::ui::ItemStyle::AUTO_SIZE; - else if ( nHashCode == m_nHashCode_Style_Repeat ) - nItemBits |= css::ui::ItemStyle::REPEAT; - else if ( nHashCode == m_nHashCode_Style_DropDownOnly ) - nItemBits |= css::ui::ItemStyle::DROPDOWN_ONLY; - else if ( nHashCode == m_nHashCode_Style_DropDown ) - nItemBits |= css::ui::ItemStyle::DROP_DOWN; - else if ( nHashCode == m_nHashCode_Style_Text ) - nItemBits |= css::ui::ItemStyle::TEXT; - else if ( nHashCode == m_nHashCode_Style_Image ) - nItemBits |= css::ui::ItemStyle::ICON; - } + sal_Int32 nHashCode = aToken.hashCode(); + if ( nHashCode == m_nHashCode_Style_Radio ) + nItemBits |= css::ui::ItemStyle::RADIO_CHECK; + else if ( nHashCode == m_nHashCode_Style_Left ) + nItemBits |= css::ui::ItemStyle::ALIGN_LEFT; + else if ( nHashCode == m_nHashCode_Style_AutoSize ) + nItemBits |= css::ui::ItemStyle::AUTO_SIZE; + else if ( nHashCode == m_nHashCode_Style_Repeat ) + nItemBits |= css::ui::ItemStyle::REPEAT; + else if ( nHashCode == m_nHashCode_Style_DropDownOnly ) + nItemBits |= css::ui::ItemStyle::DROPDOWN_ONLY; + else if ( nHashCode == m_nHashCode_Style_DropDown ) + nItemBits |= css::ui::ItemStyle::DROP_DOWN; + else if ( nHashCode == m_nHashCode_Style_Text ) + nItemBits |= css::ui::ItemStyle::TEXT; + else if ( nHashCode == m_nHashCode_Style_Image ) + nItemBits |= css::ui::ItemStyle::ICON; } - while ( nIndex >= 0 ); } - break; - - default: - break; + while ( nIndex >= 0 ); } - } - } // for + break; - if ( !bAttributeURL ) - { - OUString aErrorMessage = getErrorLineString() + "Required attribute toolbar:url must have a value!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - - if ( !aCommandURL.isEmpty() ) - { - //fix for fdo#39370 - /// check whether RTL interface or not - if(AllSettings::GetLayoutRTL()){ - if (aCommandURL == ".uno:ParaLeftToRight") - aCommandURL = ".uno:ParaRightToLeft"; - else if (aCommandURL == ".uno:ParaRightToLeft") - aCommandURL = ".uno:ParaLeftToRight"; - else if (aCommandURL == ".uno:LeftPara") - aCommandURL = ".uno:RightPara"; - else if (aCommandURL == ".uno:RightPara") - aCommandURL = ".uno:LeftPara"; - else if (aCommandURL == ".uno:AlignLeft") - aCommandURL = ".uno:AlignRight"; - else if (aCommandURL == ".uno:AlignRight") - aCommandURL = ".uno:AlignLeft"; - else if (aCommandURL == ".uno:WrapLeft") - aCommandURL = ".uno:WrapRight"; - else if (aCommandURL == ".uno:WrapRight") - aCommandURL = ".uno:WrapLeft"; + default: + break; } - - auto aToolbarItemProp( comphelper::InitPropertySequence( { - { m_aCommandURL, css::uno::makeAny( aCommandURL ) }, - { m_aLabel, css::uno::makeAny( aLabel ) }, - { m_aType, css::uno::makeAny( css::ui::ItemType::DEFAULT ) }, - { m_aStyle, css::uno::makeAny( nItemBits ) }, - { m_aIsVisible, css::uno::makeAny( bVisible ) }, - } ) ); - - m_rItemContainer->insertByIndex( m_rItemContainer->getCount(), makeAny( aToolbarItemProp ) ); } + } // for + + if ( !bAttributeURL ) + { + OUString aErrorMessage = getErrorLineString() + "Required attribute toolbar:url must have a value!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; - case TB_ELEMENT_TOOLBARSPACE: + if ( !aCommandURL.isEmpty() ) { - if ( m_bToolBarSeparatorStartFound || - m_bToolBarBreakStartFound || - m_bToolBarSpaceStartFound || - m_bToolBarItemStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "Element toolbar:toolbarspace is not a container!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); + //fix for fdo#39370 + /// check whether RTL interface or not + if(AllSettings::GetLayoutRTL()){ + if (aCommandURL == ".uno:ParaLeftToRight") + aCommandURL = ".uno:ParaRightToLeft"; + else if (aCommandURL == ".uno:ParaRightToLeft") + aCommandURL = ".uno:ParaLeftToRight"; + else if (aCommandURL == ".uno:LeftPara") + aCommandURL = ".uno:RightPara"; + else if (aCommandURL == ".uno:RightPara") + aCommandURL = ".uno:LeftPara"; + else if (aCommandURL == ".uno:AlignLeft") + aCommandURL = ".uno:AlignRight"; + else if (aCommandURL == ".uno:AlignRight") + aCommandURL = ".uno:AlignLeft"; + else if (aCommandURL == ".uno:WrapLeft") + aCommandURL = ".uno:WrapRight"; + else if (aCommandURL == ".uno:WrapRight") + aCommandURL = ".uno:WrapLeft"; } - m_bToolBarSpaceStartFound = true; - - Sequence< PropertyValue > aToolbarItemProp( 2 ); - aToolbarItemProp[0].Name = m_aCommandURL; - aToolbarItemProp[1].Name = m_aType; - - aToolbarItemProp[0].Value <<= OUString(); - aToolbarItemProp[1].Value <<= css::ui::ItemType::SEPARATOR_SPACE; + auto aToolbarItemProp( comphelper::InitPropertySequence( { + { m_aCommandURL, css::uno::makeAny( aCommandURL ) }, + { m_aLabel, css::uno::makeAny( aLabel ) }, + { m_aType, css::uno::makeAny( css::ui::ItemType::DEFAULT ) }, + { m_aStyle, css::uno::makeAny( nItemBits ) }, + { m_aIsVisible, css::uno::makeAny( bVisible ) }, + } ) ); m_rItemContainer->insertByIndex( m_rItemContainer->getCount(), makeAny( aToolbarItemProp ) ); } - break; + } + break; - case TB_ELEMENT_TOOLBARBREAK: + case TB_ELEMENT_TOOLBARSPACE: + { + if ( m_bToolBarSeparatorStartFound || + m_bToolBarBreakStartFound || + m_bToolBarSpaceStartFound || + m_bToolBarItemStartFound ) { - if ( m_bToolBarSeparatorStartFound || - m_bToolBarBreakStartFound || - m_bToolBarSpaceStartFound || - m_bToolBarItemStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "Element toolbar:toolbarbreak is not a container!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + OUString aErrorMessage = getErrorLineString() + "Element toolbar:toolbarspace is not a container!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); + } - m_bToolBarBreakStartFound = true; + m_bToolBarSpaceStartFound = true; - Sequence< PropertyValue > aToolbarItemProp( 2 ); - aToolbarItemProp[0].Name = m_aCommandURL; - aToolbarItemProp[1].Name = m_aType; + Sequence< PropertyValue > aToolbarItemProp( 2 ); + aToolbarItemProp[0].Name = m_aCommandURL; + aToolbarItemProp[1].Name = m_aType; - aToolbarItemProp[0].Value <<= OUString(); - aToolbarItemProp[1].Value <<= css::ui::ItemType::SEPARATOR_LINEBREAK; + aToolbarItemProp[0].Value <<= OUString(); + aToolbarItemProp[1].Value <<= css::ui::ItemType::SEPARATOR_SPACE; - m_rItemContainer->insertByIndex( m_rItemContainer->getCount(), makeAny( aToolbarItemProp ) ); - } - break; + m_rItemContainer->insertByIndex( m_rItemContainer->getCount(), makeAny( aToolbarItemProp ) ); + } + break; - case TB_ELEMENT_TOOLBARSEPARATOR: + case TB_ELEMENT_TOOLBARBREAK: + { + if ( m_bToolBarSeparatorStartFound || + m_bToolBarBreakStartFound || + m_bToolBarSpaceStartFound || + m_bToolBarItemStartFound ) { - if ( m_bToolBarSeparatorStartFound || - m_bToolBarBreakStartFound || - m_bToolBarSpaceStartFound || - m_bToolBarItemStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "Element toolbar:toolbarseparator is not a container!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + OUString aErrorMessage = getErrorLineString() + "Element toolbar:toolbarbreak is not a container!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); + } - m_bToolBarSeparatorStartFound = true; + m_bToolBarBreakStartFound = true; - Sequence< PropertyValue > aToolbarItemProp( 2 ); - aToolbarItemProp[0].Name = m_aCommandURL; - aToolbarItemProp[1].Name = m_aType; + Sequence< PropertyValue > aToolbarItemProp( 2 ); + aToolbarItemProp[0].Name = m_aCommandURL; + aToolbarItemProp[1].Name = m_aType; - aToolbarItemProp[0].Value <<= OUString(); - aToolbarItemProp[1].Value <<= css::ui::ItemType::SEPARATOR_LINE; + aToolbarItemProp[0].Value <<= OUString(); + aToolbarItemProp[1].Value <<= css::ui::ItemType::SEPARATOR_LINEBREAK; - m_rItemContainer->insertByIndex( m_rItemContainer->getCount(), makeAny( aToolbarItemProp ) ); + m_rItemContainer->insertByIndex( m_rItemContainer->getCount(), makeAny( aToolbarItemProp ) ); + } + break; + + case TB_ELEMENT_TOOLBARSEPARATOR: + { + if ( m_bToolBarSeparatorStartFound || + m_bToolBarBreakStartFound || + m_bToolBarSpaceStartFound || + m_bToolBarItemStartFound ) + { + OUString aErrorMessage = getErrorLineString() + "Element toolbar:toolbarseparator is not a container!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; - default: - break; + m_bToolBarSeparatorStartFound = true; + + Sequence< PropertyValue > aToolbarItemProp( 2 ); + aToolbarItemProp[0].Name = m_aCommandURL; + aToolbarItemProp[1].Name = m_aType; + + aToolbarItemProp[0].Value <<= OUString(); + aToolbarItemProp[1].Value <<= css::ui::ItemType::SEPARATOR_LINE; + + m_rItemContainer->insertByIndex( m_rItemContainer->getCount(), makeAny( aToolbarItemProp ) ); } + break; + + default: + break; } } @@ -471,73 +471,72 @@ void SAL_CALL OReadToolBoxDocumentHandler::endElement(const OUString& aName) SolarMutexGuard g; ToolBoxHashMap::const_iterator pToolBoxEntry = m_aToolBoxMap.find( aName ); - if ( pToolBoxEntry != m_aToolBoxMap.end() ) + if ( pToolBoxEntry == m_aToolBoxMap.end() ) + return; + + switch ( pToolBoxEntry->second ) { - switch ( pToolBoxEntry->second ) + case TB_ELEMENT_TOOLBAR: { - case TB_ELEMENT_TOOLBAR: + if ( !m_bToolBarStartFound ) { - if ( !m_bToolBarStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "End element 'toolbar' found, but no start element 'toolbar'"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - - m_bToolBarStartFound = false; + OUString aErrorMessage = getErrorLineString() + "End element 'toolbar' found, but no start element 'toolbar'"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; - case TB_ELEMENT_TOOLBARITEM: - { - if ( !m_bToolBarItemStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "End element 'toolbar:toolbaritem' found, but no start element 'toolbar:toolbaritem'"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + m_bToolBarStartFound = false; + } + break; - m_bToolBarItemStartFound = false; + case TB_ELEMENT_TOOLBARITEM: + { + if ( !m_bToolBarItemStartFound ) + { + OUString aErrorMessage = getErrorLineString() + "End element 'toolbar:toolbaritem' found, but no start element 'toolbar:toolbaritem'"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; - case TB_ELEMENT_TOOLBARBREAK: - { - if ( !m_bToolBarBreakStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "End element 'toolbar:toolbarbreak' found, but no start element 'toolbar:toolbarbreak'"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + m_bToolBarItemStartFound = false; + } + break; - m_bToolBarBreakStartFound = false; + case TB_ELEMENT_TOOLBARBREAK: + { + if ( !m_bToolBarBreakStartFound ) + { + OUString aErrorMessage = getErrorLineString() + "End element 'toolbar:toolbarbreak' found, but no start element 'toolbar:toolbarbreak'"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; - case TB_ELEMENT_TOOLBARSPACE: - { - if ( !m_bToolBarSpaceStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "End element 'toolbar:toolbarspace' found, but no start element 'toolbar:toolbarspace'"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + m_bToolBarBreakStartFound = false; + } + break; - m_bToolBarSpaceStartFound = false; + case TB_ELEMENT_TOOLBARSPACE: + { + if ( !m_bToolBarSpaceStartFound ) + { + OUString aErrorMessage = getErrorLineString() + "End element 'toolbar:toolbarspace' found, but no start element 'toolbar:toolbarspace'"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; - case TB_ELEMENT_TOOLBARSEPARATOR: - { - if ( !m_bToolBarSeparatorStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "End element 'toolbar:toolbarseparator' found, but no start element 'toolbar:toolbarseparator'"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + m_bToolBarSpaceStartFound = false; + } + break; - m_bToolBarSeparatorStartFound = false; + case TB_ELEMENT_TOOLBARSEPARATOR: + { + if ( !m_bToolBarSeparatorStartFound ) + { + OUString aErrorMessage = getErrorLineString() + "End element 'toolbar:toolbarseparator' found, but no start element 'toolbar:toolbarseparator'"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; - default: - break; + m_bToolBarSeparatorStartFound = false; } + break; + + default: break; } } diff --git a/framework/source/fwi/helper/mischelper.cxx b/framework/source/fwi/helper/mischelper.cxx index a8a841295767..75e560e7a975 100644 --- a/framework/source/fwi/helper/mischelper.cxx +++ b/framework/source/fwi/helper/mischelper.cxx @@ -119,19 +119,19 @@ void FillLangItems( std::set< OUString > &rLangItems, COMPLEX: 0x004 */ const sal_Int16 nMaxCount = 7; - if ( xDocumentLanguages.is() ) + if ( !xDocumentLanguages.is() ) + return; + + Sequence< Locale > rLocales( xDocumentLanguages->getDocumentLanguages( static_cast<sal_Int16>(nScriptType), nMaxCount )); + if ( rLocales.hasElements() ) { - Sequence< Locale > rLocales( xDocumentLanguages->getDocumentLanguages( static_cast<sal_Int16>(nScriptType), nMaxCount )); - if ( rLocales.hasElements() ) + for ( sal_Int32 i = 0; i < rLocales.getLength(); ++i ) { - for ( sal_Int32 i = 0; i < rLocales.getLength(); ++i ) - { - if ( rLangItems.size() == static_cast< size_t >(nMaxCount) ) - break; - const Locale& rLocale=rLocales[i]; - if( IsScriptTypeMatchingToLanguage( nScriptType, SvtLanguageTable::GetLanguageType( rLocale.Language ))) - rLangItems.insert( rLocale.Language ); - } + if ( rLangItems.size() == static_cast< size_t >(nMaxCount) ) + break; + const Locale& rLocale=rLocales[i]; + if( IsScriptTypeMatchingToLanguage( nScriptType, SvtLanguageTable::GetLanguageType( rLocale.Language ))) + rLangItems.insert( rLocale.Language ); } } } diff --git a/framework/source/fwi/jobs/configaccess.cxx b/framework/source/fwi/jobs/configaccess.cxx index 2cb736d4bb65..bcb739c09cdb 100644 --- a/framework/source/fwi/jobs/configaccess.cxx +++ b/framework/source/fwi/jobs/configaccess.cxx @@ -91,45 +91,42 @@ void ConfigAccess::open( /*IN*/ EOpenMode eMode ) // check if configuration is already open in the right mode. // By the way: Don't allow closing by using this method! - if ( - (eMode !=E_CLOSED) && - (m_eMode!=eMode ) - ) + if ( eMode == E_CLOSED || m_eMode == eMode ) + return; + + // We have to close the old access point without any question here. + // It will be open again using the new mode. + // can be called without checks! It does the checks by itself ... + // e.g. for already closed or not opened configuration. + // Flushing of all made changes will be done here too. + close(); + + // create the configuration provider, which provides sub access points + css::uno::Reference< css::lang::XMultiServiceFactory > xConfigProvider = css::configuration::theDefaultProvider::get(m_xContext); + css::beans::PropertyValue aParam; + aParam.Name = "nodepath"; + aParam.Value <<= m_sRoot; + + css::uno::Sequence< css::uno::Any > lParams(1); + lParams[0] <<= aParam; + + // open it + try { - // We have to close the old access point without any question here. - // It will be open again using the new mode. - // can be called without checks! It does the checks by itself ... - // e.g. for already closed or not opened configuration. - // Flushing of all made changes will be done here too. - close(); - - // create the configuration provider, which provides sub access points - css::uno::Reference< css::lang::XMultiServiceFactory > xConfigProvider = css::configuration::theDefaultProvider::get(m_xContext); - css::beans::PropertyValue aParam; - aParam.Name = "nodepath"; - aParam.Value <<= m_sRoot; - - css::uno::Sequence< css::uno::Any > lParams(1); - lParams[0] <<= aParam; - - // open it - try - { - if (eMode==E_READONLY) - m_xConfig = xConfigProvider->createInstanceWithArguments(SERVICENAME_CFGREADACCESS , lParams); - else - if (eMode==E_READWRITE) - m_xConfig = xConfigProvider->createInstanceWithArguments(SERVICENAME_CFGUPDATEACCESS, lParams); - } - catch(const css::uno::Exception&) - { - TOOLS_INFO_EXCEPTION("fwk", "open config"); - } - - m_eMode = E_CLOSED; - if (m_xConfig.is()) - m_eMode = eMode; + if (eMode==E_READONLY) + m_xConfig = xConfigProvider->createInstanceWithArguments(SERVICENAME_CFGREADACCESS , lParams); + else + if (eMode==E_READWRITE) + m_xConfig = xConfigProvider->createInstanceWithArguments(SERVICENAME_CFGUPDATEACCESS, lParams); } + catch(const css::uno::Exception&) + { + TOOLS_INFO_EXCEPTION("fwk", "open config"); + } + + m_eMode = E_CLOSED; + if (m_xConfig.is()) + m_eMode = eMode; } /** diff --git a/framework/source/fwi/uielement/constitemcontainer.cxx b/framework/source/fwi/uielement/constitemcontainer.cxx index bb901da9226b..d0a621babcd5 100644 --- a/framework/source/fwi/uielement/constitemcontainer.cxx +++ b/framework/source/fwi/uielement/constitemcontainer.cxx @@ -63,51 +63,51 @@ ConstItemContainer::ConstItemContainer( const Reference< XIndexAccess >& rSource { } - if ( rSourceContainer.is() ) + if ( !rSourceContainer.is() ) + return; + + try { - try + sal_Int32 nCount = rSourceContainer->getCount(); + m_aItemVector.reserve(nCount); + if ( bFastCopy ) { - sal_Int32 nCount = rSourceContainer->getCount(); - m_aItemVector.reserve(nCount); - if ( bFastCopy ) + for ( sal_Int32 i = 0; i < nCount; i++ ) { - for ( sal_Int32 i = 0; i < nCount; i++ ) - { - Sequence< PropertyValue > aPropSeq; - if ( rSourceContainer->getByIndex( i ) >>= aPropSeq ) - m_aItemVector.push_back( aPropSeq ); - } + Sequence< PropertyValue > aPropSeq; + if ( rSourceContainer->getByIndex( i ) >>= aPropSeq ) + m_aItemVector.push_back( aPropSeq ); } - else + } + else + { + for ( sal_Int32 i = 0; i < nCount; i++ ) { - for ( sal_Int32 i = 0; i < nCount; i++ ) + Sequence< PropertyValue > aPropSeq; + if ( rSourceContainer->getByIndex( i ) >>= aPropSeq ) { - Sequence< PropertyValue > aPropSeq; - if ( rSourceContainer->getByIndex( i ) >>= aPropSeq ) + sal_Int32 nContainerIndex = -1; + Reference< XIndexAccess > xIndexAccess; + for ( sal_Int32 j = 0; j < aPropSeq.getLength(); j++ ) { - sal_Int32 nContainerIndex = -1; - Reference< XIndexAccess > xIndexAccess; - for ( sal_Int32 j = 0; j < aPropSeq.getLength(); j++ ) + if ( aPropSeq[j].Name == "ItemDescriptorContainer" ) { - if ( aPropSeq[j].Name == "ItemDescriptorContainer" ) - { - aPropSeq[j].Value >>= xIndexAccess; - nContainerIndex = j; - break; - } + aPropSeq[j].Value >>= xIndexAccess; + nContainerIndex = j; + break; } + } - if ( xIndexAccess.is() && nContainerIndex >= 0 ) - aPropSeq[nContainerIndex].Value <<= deepCopyContainer( xIndexAccess ); + if ( xIndexAccess.is() && nContainerIndex >= 0 ) + aPropSeq[nContainerIndex].Value <<= deepCopyContainer( xIndexAccess ); - m_aItemVector.push_back( aPropSeq ); - } + m_aItemVector.push_back( aPropSeq ); } } } - catch ( const IndexOutOfBoundsException& ) - { - } + } + catch ( const IndexOutOfBoundsException& ) + { } } diff --git a/framework/source/fwi/uielement/itemcontainer.cxx b/framework/source/fwi/uielement/itemcontainer.cxx index 8401274534af..79e5104e933f 100644 --- a/framework/source/fwi/uielement/itemcontainer.cxx +++ b/framework/source/fwi/uielement/itemcontainer.cxx @@ -50,38 +50,38 @@ ItemContainer::ItemContainer( const ConstItemContainer& rConstItemContainer, con ItemContainer::ItemContainer( const Reference< XIndexAccess >& rSourceContainer, const ShareableMutex& rMutex ) : m_aShareMutex( rMutex ) { - if ( rSourceContainer.is() ) + if ( !rSourceContainer.is() ) + return; + + sal_Int32 nCount = rSourceContainer->getCount(); + try { - sal_Int32 nCount = rSourceContainer->getCount(); - try + for ( sal_Int32 i = 0; i < nCount; i++ ) { - for ( sal_Int32 i = 0; i < nCount; i++ ) + Sequence< PropertyValue > aPropSeq; + if ( rSourceContainer->getByIndex( i ) >>= aPropSeq ) { - Sequence< PropertyValue > aPropSeq; - if ( rSourceContainer->getByIndex( i ) >>= aPropSeq ) + sal_Int32 nContainerIndex = -1; + Reference< XIndexAccess > xIndexAccess; + for ( sal_Int32 j = 0; j < aPropSeq.getLength(); j++ ) { - sal_Int32 nContainerIndex = -1; - Reference< XIndexAccess > xIndexAccess; - for ( sal_Int32 j = 0; j < aPropSeq.getLength(); j++ ) + if ( aPropSeq[j].Name == "ItemDescriptorContainer" ) { - if ( aPropSeq[j].Name == "ItemDescriptorContainer" ) - { - aPropSeq[j].Value >>= xIndexAccess; - nContainerIndex = j; - break; - } + aPropSeq[j].Value >>= xIndexAccess; + nContainerIndex = j; + break; } + } - if ( xIndexAccess.is() && nContainerIndex >= 0 ) - aPropSeq[nContainerIndex].Value <<= deepCopyContainer( xIndexAccess, rMutex ); + if ( xIndexAccess.is() && nContainerIndex >= 0 ) + aPropSeq[nContainerIndex].Value <<= deepCopyContainer( xIndexAccess, rMutex ); - m_aItemVector.push_back( aPropSeq ); - } + m_aItemVector.push_back( aPropSeq ); } } - catch ( const IndexOutOfBoundsException& ) - { - } + } + catch ( const IndexOutOfBoundsException& ) + { } } diff --git a/framework/source/fwi/uielement/rootitemcontainer.cxx b/framework/source/fwi/uielement/rootitemcontainer.cxx index 14a199891313..edf695135d1d 100644 --- a/framework/source/fwi/uielement/rootitemcontainer.cxx +++ b/framework/source/fwi/uielement/rootitemcontainer.cxx @@ -64,38 +64,38 @@ RootItemContainer::RootItemContainer( const Reference< XIndexAccess >& rSourceCo { } - if ( rSourceContainer.is() ) + if ( !rSourceContainer.is() ) + return; + + sal_Int32 nCount = rSourceContainer->getCount(); + try { - sal_Int32 nCount = rSourceContainer->getCount(); - try + for ( sal_Int32 i = 0; i < nCount; i++ ) { - for ( sal_Int32 i = 0; i < nCount; i++ ) + Sequence< PropertyValue > aPropSeq; + if ( rSourceContainer->getByIndex( i ) >>= aPropSeq ) { - Sequence< PropertyValue > aPropSeq; - if ( rSourceContainer->getByIndex( i ) >>= aPropSeq ) + sal_Int32 nContainerIndex = -1; + Reference< XIndexAccess > xIndexAccess; + for ( sal_Int32 j = 0; j < aPropSeq.getLength(); j++ ) { - sal_Int32 nContainerIndex = -1; - Reference< XIndexAccess > xIndexAccess; - for ( sal_Int32 j = 0; j < aPropSeq.getLength(); j++ ) + if ( aPropSeq[j].Name == "ItemDescriptorContainer" ) { - if ( aPropSeq[j].Name == "ItemDescriptorContainer" ) - { - aPropSeq[j].Value >>= xIndexAccess; - nContainerIndex = j; - break; - } + aPropSeq[j].Value >>= xIndexAccess; + nContainerIndex = j; + break; } + } - if ( xIndexAccess.is() && nContainerIndex >= 0 ) - aPropSeq[nContainerIndex].Value <<= deepCopyContainer( xIndexAccess ); + if ( xIndexAccess.is() && nContainerIndex >= 0 ) + aPropSeq[nContainerIndex].Value <<= deepCopyContainer( xIndexAccess ); - m_aItemVector.push_back( aPropSeq ); - } + m_aItemVector.push_back( aPropSeq ); } } - catch ( const IndexOutOfBoundsException& ) - { - } + } + catch ( const IndexOutOfBoundsException& ) + { } } diff --git a/framework/source/helper/dockingareadefaultacceptor.cxx b/framework/source/helper/dockingareadefaultacceptor.cxx index 27d75723012a..9d51d2052516 100644 --- a/framework/source/helper/dockingareadefaultacceptor.cxx +++ b/framework/source/helper/dockingareadefaultacceptor.cxx @@ -98,31 +98,31 @@ void SAL_CALL DockingAreaDefaultAcceptor::setDockingAreaSpace( const css::awt::R // Try to "lock" the frame for access to taskscontainer. css::uno::Reference< XFrame > xFrame( m_xOwner ); - if ( xFrame.is() ) - { - css::uno::Reference< css::awt::XWindow > xContainerWindow( xFrame->getContainerWindow() ); - css::uno::Reference< css::awt::XWindow > xComponentWindow( xFrame->getComponentWindow() ); + if ( !xFrame.is() ) + return; - if ( xContainerWindow.is() && xComponentWindow.is() ) - { - css::uno::Reference< css::awt::XDevice > xDevice( xContainerWindow, css::uno::UNO_QUERY ); - // Convert relative size to output size. - css::awt::Rectangle aRectangle = xContainerWindow->getPosSize(); - css::awt::DeviceInfo aInfo = xDevice->getInfo(); - css::awt::Size aSize ( aRectangle.Width - aInfo.LeftInset - aInfo.RightInset , - aRectangle.Height - aInfo.TopInset - aInfo.BottomInset ); - css::awt::Size aMinSize( 0, 0 );// = xLayoutContrains->getMinimumSize(); + css::uno::Reference< css::awt::XWindow > xContainerWindow( xFrame->getContainerWindow() ); + css::uno::Reference< css::awt::XWindow > xComponentWindow( xFrame->getComponentWindow() ); - // Check if request border space would decrease component window size below minimum size - sal_Int32 nWidth = aSize.Width - BorderSpace.X - BorderSpace.Width; - sal_Int32 nHeight = aSize.Height - BorderSpace.Y - BorderSpace.Height; - - if (( nWidth > aMinSize.Width ) && ( nHeight > aMinSize.Height )) - { - // Resize our component window. - xComponentWindow->setPosSize( BorderSpace.X, BorderSpace.Y, nWidth, nHeight, css::awt::PosSize::POSSIZE ); - } - } + if ( !(xContainerWindow.is() && xComponentWindow.is()) ) + return; + + css::uno::Reference< css::awt::XDevice > xDevice( xContainerWindow, css::uno::UNO_QUERY ); + // Convert relative size to output size. + css::awt::Rectangle aRectangle = xContainerWindow->getPosSize(); + css::awt::DeviceInfo aInfo = xDevice->getInfo(); + css::awt::Size aSize ( aRectangle.Width - aInfo.LeftInset - aInfo.RightInset , + aRectangle.Height - aInfo.TopInset - aInfo.BottomInset ); + css::awt::Size aMinSize( 0, 0 );// = xLayoutContrains->getMinimumSize(); + + // Check if request border space would decrease component window size below minimum size + sal_Int32 nWidth = aSize.Width - BorderSpace.X - BorderSpace.Width; + sal_Int32 nHeight = aSize.Height - BorderSpace.Y - BorderSpace.Height; + + if (( nWidth > aMinSize.Width ) && ( nHeight > aMinSize.Height )) + { + // Resize our component window. + xComponentWindow->setPosSize( BorderSpace.X, BorderSpace.Y, nWidth, nHeight, css::awt::PosSize::POSSIZE ); } } diff --git a/framework/source/helper/ocomponentaccess.cxx b/framework/source/helper/ocomponentaccess.cxx index b170ae5258a0..b814fc49b83a 100644 --- a/framework/source/helper/ocomponentaccess.cxx +++ b/framework/source/helper/ocomponentaccess.cxx @@ -109,24 +109,24 @@ void OComponentAccess::impl_collectAllChildComponents( const css::uno::Referenc std::vector< css::uno::Reference< XComponent > >& seqComponents ) { // If valid node was given ... - if( xNode.is() ) - { - // ... continue collection at these. + if( !xNode.is() ) + return; + + // ... continue collection at these. - // Get the container of current node, collect the components of existing child frames - // and go down to next level in tree (recursive!). + // Get the container of current node, collect the components of existing child frames + // and go down to next level in tree (recursive!). - const css::uno::Reference< XFrames > xContainer = xNode->getFrames(); - const Sequence< css::uno::Reference< XFrame > > seqFrames = xContainer->queryFrames( FrameSearchFlag::CHILDREN ); + const css::uno::Reference< XFrames > xContainer = xNode->getFrames(); + const Sequence< css::uno::Reference< XFrame > > seqFrames = xContainer->queryFrames( FrameSearchFlag::CHILDREN ); - const sal_Int32 nFrameCount = seqFrames.getLength(); - for( sal_Int32 nFrame=0; nFrame<nFrameCount; ++nFrame ) + const sal_Int32 nFrameCount = seqFrames.getLength(); + for( sal_Int32 nFrame=0; nFrame<nFrameCount; ++nFrame ) + { + css::uno::Reference< XComponent > xComponent = impl_getFrameComponent( seqFrames[nFrame] ); + if( xComponent.is() ) { - css::uno::Reference< XComponent > xComponent = impl_getFrameComponent( seqFrames[nFrame] ); - if( xComponent.is() ) - { - seqComponents.push_back( xComponent ); - } + seqComponents.push_back( xComponent ); } } // ... otherwise break a recursive path and go back at current stack! diff --git a/framework/source/helper/statusindicatorfactory.cxx b/framework/source/helper/statusindicatorfactory.cxx index f00ce08eb043..f525a1d2c1dd 100644 --- a/framework/source/helper/statusindicatorfactory.cxx +++ b/framework/source/helper/statusindicatorfactory.cxx @@ -433,32 +433,32 @@ void StatusIndicatorFactory::impl_showProgress() css::uno::Reference< css::task::XStatusIndicator > xProgress; - if (xFrame.is()) + if (!xFrame.is()) + return; + + // use frame layouted progress implementation + css::uno::Reference< css::beans::XPropertySet > xPropSet(xFrame, css::uno::UNO_QUERY); + if (xPropSet.is()) { - // use frame layouted progress implementation - css::uno::Reference< css::beans::XPropertySet > xPropSet(xFrame, css::uno::UNO_QUERY); - if (xPropSet.is()) + css::uno::Reference< css::frame::XLayoutManager2 > xLayoutManager; + xPropSet->getPropertyValue(FRAME_PROPNAME_ASCII_LAYOUTMANAGER) >>= xLayoutManager; + if (xLayoutManager.is()) { - css::uno::Reference< css::frame::XLayoutManager2 > xLayoutManager; - xPropSet->getPropertyValue(FRAME_PROPNAME_ASCII_LAYOUTMANAGER) >>= xLayoutManager; - if (xLayoutManager.is()) - { - // Be sure that we have always a progress. It can be that our frame - // was recycled and therefore the progress was destroyed! - // CreateElement does nothing if there is already a valid progress. - OUString sPROGRESS_RESOURCE(PROGRESS_RESOURCE); - xLayoutManager->createElement( sPROGRESS_RESOURCE ); - xLayoutManager->showElement( sPROGRESS_RESOURCE ); - - css::uno::Reference< css::ui::XUIElement > xProgressBar = xLayoutManager->getElement(sPROGRESS_RESOURCE); - if (xProgressBar.is()) - xProgress.set(xProgressBar->getRealInterface(), css::uno::UNO_QUERY); - } + // Be sure that we have always a progress. It can be that our frame + // was recycled and therefore the progress was destroyed! + // CreateElement does nothing if there is already a valid progress. + OUString sPROGRESS_RESOURCE(PROGRESS_RESOURCE); + xLayoutManager->createElement( sPROGRESS_RESOURCE ); + xLayoutManager->showElement( sPROGRESS_RESOURCE ); + + css::uno::Reference< css::ui::XUIElement > xProgressBar = xLayoutManager->getElement(sPROGRESS_RESOURCE); + if (xProgressBar.is()) + xProgress.set(xProgressBar->getRealInterface(), css::uno::UNO_QUERY); } - - osl::MutexGuard g(m_mutex); - m_xProgress = xProgress; } + + osl::MutexGuard g(m_mutex); + m_xProgress = xProgress; } void StatusIndicatorFactory::impl_hideProgress() @@ -509,21 +509,21 @@ void StatusIndicatorFactory::impl_reschedule(bool bForce) // SAFE -> osl::ResettableMutexGuard aRescheduleGuard(RescheduleLock::get()); - if (m_nInReschedule == 0) - { - ++m_nInReschedule; - aRescheduleGuard.clear(); - // <- SAFE + if (m_nInReschedule != 0) + return; - { - SolarMutexGuard g; - Application::Reschedule(true); - } + ++m_nInReschedule; + aRescheduleGuard.clear(); + // <- SAFE - // SAFE -> - aRescheduleGuard.reset(); - --m_nInReschedule; + { + SolarMutexGuard g; + Application::Reschedule(true); } + + // SAFE -> + aRescheduleGuard.reset(); + --m_nInReschedule; } void StatusIndicatorFactory::impl_startWakeUpThread() diff --git a/framework/source/helper/uiconfigelementwrapperbase.cxx b/framework/source/helper/uiconfigelementwrapperbase.cxx index 9ddbb355211e..0ba8470628c3 100644 --- a/framework/source/helper/uiconfigelementwrapperbase.cxx +++ b/framework/source/helper/uiconfigelementwrapperbase.cxx @@ -111,32 +111,32 @@ void SAL_CALL UIConfigElementWrapperBase::initialize( const Sequence< Any >& aAr { SolarMutexGuard g; - if ( !m_bInitialized ) + if ( m_bInitialized ) + return; + + for ( sal_Int32 n = 0; n < aArguments.getLength(); n++ ) { - for ( sal_Int32 n = 0; n < aArguments.getLength(); n++ ) + PropertyValue aPropValue; + if ( aArguments[n] >>= aPropValue ) { - PropertyValue aPropValue; - if ( aArguments[n] >>= aPropValue ) - { - if ( aPropValue.Name == UIELEMENT_PROPNAME_CONFIGSOURCE ) - setFastPropertyValue_NoBroadcast( UIELEMENT_PROPHANDLE_CONFIGSOURCE, aPropValue.Value ); - else if ( aPropValue.Name == UIELEMENT_PROPNAME_FRAME ) - setFastPropertyValue_NoBroadcast( UIELEMENT_PROPHANDLE_FRAME, aPropValue.Value ); - else if ( aPropValue.Name == UIELEMENT_PROPNAME_PERSISTENT ) - setFastPropertyValue_NoBroadcast( UIELEMENT_PROPHANDLE_PERSISTENT, aPropValue.Value ); - else if ( aPropValue.Name == UIELEMENT_PROPNAME_RESOURCEURL ) - setFastPropertyValue_NoBroadcast( UIELEMENT_PROPHANDLE_RESOURCEURL, aPropValue.Value ); - else if ( aPropValue.Name == UIELEMENT_PROPNAME_TYPE ) - setFastPropertyValue_NoBroadcast( UIELEMENT_PROPHANDLE_TYPE, aPropValue.Value ); - else if ( aPropValue.Name == UIELEMENT_PROPNAME_CONFIGLISTENER ) - setFastPropertyValue_NoBroadcast( UIELEMENT_PROPHANDLE_CONFIGLISTENER, aPropValue.Value ); - else if ( aPropValue.Name == UIELEMENT_PROPNAME_NOCLOSE ) - setFastPropertyValue_NoBroadcast( UIELEMENT_PROPHANDLE_NOCLOSE, aPropValue.Value ); - } + if ( aPropValue.Name == UIELEMENT_PROPNAME_CONFIGSOURCE ) + setFastPropertyValue_NoBroadcast( UIELEMENT_PROPHANDLE_CONFIGSOURCE, aPropValue.Value ); + else if ( aPropValue.Name == UIELEMENT_PROPNAME_FRAME ) + setFastPropertyValue_NoBroadcast( UIELEMENT_PROPHANDLE_FRAME, aPropValue.Value ); + else if ( aPropValue.Name == UIELEMENT_PROPNAME_PERSISTENT ) + setFastPropertyValue_NoBroadcast( UIELEMENT_PROPHANDLE_PERSISTENT, aPropValue.Value ); + else if ( aPropValue.Name == UIELEMENT_PROPNAME_RESOURCEURL ) + setFastPropertyValue_NoBroadcast( UIELEMENT_PROPHANDLE_RESOURCEURL, aPropValue.Value ); + else if ( aPropValue.Name == UIELEMENT_PROPNAME_TYPE ) + setFastPropertyValue_NoBroadcast( UIELEMENT_PROPHANDLE_TYPE, aPropValue.Value ); + else if ( aPropValue.Name == UIELEMENT_PROPNAME_CONFIGLISTENER ) + setFastPropertyValue_NoBroadcast( UIELEMENT_PROPHANDLE_CONFIGLISTENER, aPropValue.Value ); + else if ( aPropValue.Name == UIELEMENT_PROPNAME_NOCLOSE ) + setFastPropertyValue_NoBroadcast( UIELEMENT_PROPHANDLE_NOCLOSE, aPropValue.Value ); } - - m_bInitialized = true; } + + m_bInitialized = true; } // XUpdatable @@ -413,36 +413,36 @@ void SAL_CALL UIConfigElementWrapperBase::setSettings( const Reference< XIndexAc { SolarMutexClearableGuard aLock; - if ( xSettings.is() ) + if ( !xSettings.is() ) + return; + + // Create a copy of the data if the container is not const + Reference< XIndexReplace > xReplace( xSettings, UNO_QUERY ); + if ( xReplace.is() ) + m_xConfigData.set( static_cast< OWeakObject * >( new ConstItemContainer( xSettings ) ), UNO_QUERY ); + else + m_xConfigData = xSettings; + + if ( m_xConfigSource.is() && m_bPersistent ) { - // Create a copy of the data if the container is not const - Reference< XIndexReplace > xReplace( xSettings, UNO_QUERY ); - if ( xReplace.is() ) - m_xConfigData.set( static_cast< OWeakObject * >( new ConstItemContainer( xSettings ) ), UNO_QUERY ); - else - m_xConfigData = xSettings; - - if ( m_xConfigSource.is() && m_bPersistent ) - { - OUString aResourceURL( m_aResourceURL ); - Reference< XUIConfigurationManager > xUICfgMgr( m_xConfigSource ); + OUString aResourceURL( m_aResourceURL ); + Reference< XUIConfigurationManager > xUICfgMgr( m_xConfigSource ); - aLock.clear(); + aLock.clear(); - try - { - xUICfgMgr->replaceSettings( aResourceURL, m_xConfigData ); - } - catch( const NoSuchElementException& ) - { - } + try + { + xUICfgMgr->replaceSettings( aResourceURL, m_xConfigData ); } - else if ( !m_bPersistent ) + catch( const NoSuchElementException& ) { - // Transient menubar => Fill menubar with new data - impl_fillNewData(); } } + else if ( !m_bPersistent ) + { + // Transient menubar => Fill menubar with new data + impl_fillNewData(); + } } void UIConfigElementWrapperBase::impl_fillNewData() { diff --git a/framework/source/helper/uielementwrapperbase.cxx b/framework/source/helper/uielementwrapperbase.cxx index 656e09dafb68..d02e8954c2cf 100644 --- a/framework/source/helper/uielementwrapperbase.cxx +++ b/framework/source/helper/uielementwrapperbase.cxx @@ -83,26 +83,26 @@ void SAL_CALL UIElementWrapperBase::initialize( const Sequence< Any >& aArgument { SolarMutexGuard g; - if ( !m_bInitialized ) + if ( m_bInitialized ) + return; + + for ( sal_Int32 n = 0; n < aArguments.getLength(); n++ ) { - for ( sal_Int32 n = 0; n < aArguments.getLength(); n++ ) + PropertyValue aPropValue; + if ( aArguments[n] >>= aPropValue ) { - PropertyValue aPropValue; - if ( aArguments[n] >>= aPropValue ) + if ( aPropValue.Name == "ResourceURL" ) + aPropValue.Value >>= m_aResourceURL; + else if ( aPropValue.Name == "Frame" ) { - if ( aPropValue.Name == "ResourceURL" ) - aPropValue.Value >>= m_aResourceURL; - else if ( aPropValue.Name == "Frame" ) - { - Reference< XFrame > xFrame; - aPropValue.Value >>= xFrame; - m_xWeakFrame = xFrame; - } + Reference< XFrame > xFrame; + aPropValue.Value >>= xFrame; + m_xWeakFrame = xFrame; } } - - m_bInitialized = true; } + + m_bInitialized = true; } // XUIElement diff --git a/framework/source/jobs/job.cxx b/framework/source/jobs/job.cxx index 3b74cf01a2f4..9f85f8452d3f 100644 --- a/framework/source/jobs/job.cxx +++ b/framework/source/jobs/job.cxx @@ -525,23 +525,23 @@ void Job::impl_startListening() } // listening for model closing - if (m_xModel.is() && !m_bListenOnModel) + if (!(m_xModel.is() && !m_bListenOnModel)) + return; + + try { - try - { - css::uno::Reference< css::util::XCloseBroadcaster > xCloseable(m_xModel , css::uno::UNO_QUERY); - css::uno::Reference< css::util::XCloseListener > xThis (static_cast< ::cppu::OWeakObject* >(this), css::uno::UNO_QUERY); - if (xCloseable.is()) - { - xCloseable->addCloseListener(xThis); - m_bListenOnModel = true; - } - } - catch(const css::uno::Exception&) + css::uno::Reference< css::util::XCloseBroadcaster > xCloseable(m_xModel , css::uno::UNO_QUERY); + css::uno::Reference< css::util::XCloseListener > xThis (static_cast< ::cppu::OWeakObject* >(this), css::uno::UNO_QUERY); + if (xCloseable.is()) { - m_bListenOnModel = false; + xCloseable->addCloseListener(xThis); + m_bListenOnModel = true; } } + catch(const css::uno::Exception&) + { + m_bListenOnModel = false; + } } /** @@ -586,22 +586,22 @@ void Job::impl_stopListening() } // stop listening for model closing - if (m_xModel.is() && m_bListenOnModel) + if (!(m_xModel.is() && m_bListenOnModel)) + return; + + try { - try - { - css::uno::Reference< css::util::XCloseBroadcaster > xCloseable(m_xModel , css::uno::UNO_QUERY); - css::uno::Reference< css::util::XCloseListener > xThis (static_cast< ::cppu::OWeakObject* >(this), css::uno::UNO_QUERY); - if (xCloseable.is()) - { - xCloseable->removeCloseListener(xThis); - m_bListenOnModel = false; - } - } - catch(const css::uno::Exception&) + css::uno::Reference< css::util::XCloseBroadcaster > xCloseable(m_xModel , css::uno::UNO_QUERY); + css::uno::Reference< css::util::XCloseListener > xThis (static_cast< ::cppu::OWeakObject* >(this), css::uno::UNO_QUERY); + if (xCloseable.is()) { + xCloseable->removeCloseListener(xThis); + m_bListenOnModel = false; } } + catch(const css::uno::Exception&) + { + } } /** diff --git a/framework/source/jobs/jobdata.cxx b/framework/source/jobs/jobdata.cxx index 1825aeae04d0..3f7a96674d3d 100644 --- a/framework/source/jobs/jobdata.cxx +++ b/framework/source/jobs/jobdata.cxx @@ -229,36 +229,36 @@ void JobData::setJobConfig( const std::vector< css::beans::NamedValue >& lArgume m_lArguments = lArguments; // update the configuration ... if possible! - if (m_eMode==E_ALIAS) - { - // It doesn't matter if this config object was already opened before. - // It doesn nothing here then ... or it change the mode automatically, if - // it was opened using another one before. - ConfigAccess aConfig( - m_xContext, - ("/org.openoffice.Office.Jobs/Jobs/" - + utl::wrapConfigurationElementName(m_sAlias))); - aConfig.open(ConfigAccess::E_READWRITE); - if (aConfig.getMode()==ConfigAccess::E_CLOSED) - return; - - css::uno::Reference< css::beans::XMultiHierarchicalPropertySet > xArgumentList(aConfig.cfg(), css::uno::UNO_QUERY); - if (xArgumentList.is()) - { - sal_Int32 nCount = m_lArguments.size(); - css::uno::Sequence< OUString > lNames (nCount); - css::uno::Sequence< css::uno::Any > lValues(nCount); + if (m_eMode!=E_ALIAS) + return; - for (sal_Int32 i=0; i<nCount; ++i) - { - lNames [i] = m_lArguments[i].Name; - lValues[i] = m_lArguments[i].Value; - } + // It doesn't matter if this config object was already opened before. + // It doesn nothing here then ... or it change the mode automatically, if + // it was opened using another one before. + ConfigAccess aConfig( + m_xContext, + ("/org.openoffice.Office.Jobs/Jobs/" + + utl::wrapConfigurationElementName(m_sAlias))); + aConfig.open(ConfigAccess::E_READWRITE); + if (aConfig.getMode()==ConfigAccess::E_CLOSED) + return; - xArgumentList->setHierarchicalPropertyValues(lNames, lValues); + css::uno::Reference< css::beans::XMultiHierarchicalPropertySet > xArgumentList(aConfig.cfg(), css::uno::UNO_QUERY); + if (xArgumentList.is()) + { + sal_Int32 nCount = m_lArguments.size(); + css::uno::Sequence< OUString > lNames (nCount); + css::uno::Sequence< css::uno::Any > lValues(nCount); + + for (sal_Int32 i=0; i<nCount; ++i) + { + lNames [i] = m_lArguments[i].Name; + lValues[i] = m_lArguments[i].Value; } - aConfig.close(); + + xArgumentList->setHierarchicalPropertyValues(lNames, lValues); } + aConfig.close(); } /** diff --git a/framework/source/jobs/jobexecutor.cxx b/framework/source/jobs/jobexecutor.cxx index 4e8a93fa93c7..7dd5f67d7de2 100644 --- a/framework/source/jobs/jobexecutor.cxx +++ b/framework/source/jobs/jobexecutor.cxx @@ -139,25 +139,25 @@ void JobExecutor::initListeners() // list too ... Be listener at the configuration. m_aConfig.open(ConfigAccess::E_READONLY); - if (m_aConfig.getMode() == ConfigAccess::E_READONLY) - { - css::uno::Reference< css::container::XNameAccess > xRegistry( - m_aConfig.cfg(), css::uno::UNO_QUERY); - if (xRegistry.is()) - m_lEvents = Converter::convert_seqOUString2OUStringList( - xRegistry->getElementNames()); - - css::uno::Reference< css::container::XContainer > xNotifier( - m_aConfig.cfg(), css::uno::UNO_QUERY); - if (xNotifier.is()) - { - m_xConfigListener = new WeakContainerListener(this); - xNotifier->addContainerListener(m_xConfigListener); - } + if (m_aConfig.getMode() != ConfigAccess::E_READONLY) + return; - // don't close cfg here! - // It will be done inside disposing ... + css::uno::Reference< css::container::XNameAccess > xRegistry( + m_aConfig.cfg(), css::uno::UNO_QUERY); + if (xRegistry.is()) + m_lEvents = Converter::convert_seqOUString2OUStringList( + xRegistry->getElementNames()); + + css::uno::Reference< css::container::XContainer > xNotifier( + m_aConfig.cfg(), css::uno::UNO_QUERY); + if (xNotifier.is()) + { + m_xConfigListener = new WeakContainerListener(this); + xNotifier->addContainerListener(m_xConfigListener); } + + // don't close cfg here! + // It will be done inside disposing ... } JobExecutor::~JobExecutor() diff --git a/framework/source/jobs/joburl.cxx b/framework/source/jobs/joburl.cxx index 76fb1a6dd5b9..efff201a8401 100644 --- a/framework/source/jobs/joburl.cxx +++ b/framework/source/jobs/joburl.cxx @@ -45,51 +45,51 @@ JobURL::JobURL( /*IN*/ const OUString& sURL ) // syntax: vnd.sun.star.job:{[event=<name>],[alias=<name>],[service=<name>]} // check for "vnd.sun.star.job:" - if (sURL.startsWithIgnoreAsciiCase("vnd.sun.star.job:")) + if (!sURL.startsWithIgnoreAsciiCase("vnd.sun.star.job:")) + return; + + sal_Int32 t = std::strlen("vnd.sun.star.job:"); + do { - sal_Int32 t = std::strlen("vnd.sun.star.job:"); - do + // separate all token of "{[event=<name>],[alias=<name>],[service=<name>]}" + OUString sToken = sURL.getToken(0, JOBURL_PART_SEPARATOR, t); + OUString sPartValue; + OUString sPartArguments; + + // check for "event=" + if ( + (JobURL::implst_split(sToken,JOBURL_EVENT_STR,JOBURL_EVENT_LEN,sPartValue,sPartArguments)) && + (!sPartValue.isEmpty()) + ) + { + // set the part value + m_sEvent = sPartValue; + m_eRequest |= E_EVENT; + } + else + // check for "alias=" + if ( + (JobURL::implst_split(sToken,JOBURL_ALIAS_STR,JOBURL_ALIAS_LEN,sPartValue,sPartArguments)) && + (!sPartValue.isEmpty()) + ) + { + // set the part value + m_sAlias = sPartValue; + m_eRequest |= E_ALIAS; + } + else + // check for "service=" + if ( + (JobURL::implst_split(sToken,JOBURL_SERVICE_STR,JOBURL_SERVICE_LEN,sPartValue,sPartArguments)) && + (!sPartValue.isEmpty()) + ) { - // separate all token of "{[event=<name>],[alias=<name>],[service=<name>]}" - OUString sToken = sURL.getToken(0, JOBURL_PART_SEPARATOR, t); - OUString sPartValue; - OUString sPartArguments; - - // check for "event=" - if ( - (JobURL::implst_split(sToken,JOBURL_EVENT_STR,JOBURL_EVENT_LEN,sPartValue,sPartArguments)) && - (!sPartValue.isEmpty()) - ) - { - // set the part value - m_sEvent = sPartValue; - m_eRequest |= E_EVENT; - } - else - // check for "alias=" - if ( - (JobURL::implst_split(sToken,JOBURL_ALIAS_STR,JOBURL_ALIAS_LEN,sPartValue,sPartArguments)) && - (!sPartValue.isEmpty()) - ) - { - // set the part value - m_sAlias = sPartValue; - m_eRequest |= E_ALIAS; - } - else - // check for "service=" - if ( - (JobURL::implst_split(sToken,JOBURL_SERVICE_STR,JOBURL_SERVICE_LEN,sPartValue,sPartArguments)) && - (!sPartValue.isEmpty()) - ) - { - // set the part value - m_sService = sPartValue; - m_eRequest |= E_SERVICE; - } + // set the part value + m_sService = sPartValue; + m_eRequest |= E_SERVICE; } - while(t!=-1); } + while(t!=-1); } /** diff --git a/framework/source/layoutmanager/helpers.cxx b/framework/source/layoutmanager/helpers.cxx index 4dc621245b4c..22fc257a4eec 100644 --- a/framework/source/layoutmanager/helpers.cxx +++ b/framework/source/layoutmanager/helpers.cxx @@ -294,24 +294,24 @@ void impl_setDockingWindowVisibility( const css::uno::Reference< css::uno::XComp sal_Int32 nIndex = nID - DOCKWIN_ID_BASE; css::uno::Reference< css::frame::XDispatchProvider > xProvider(rFrame, css::uno::UNO_QUERY); - if ( nIndex >= 0 && xProvider.is() ) - { - OUString aDockWinArgName = "DockingWindow" + OUString::number( nIndex ); + if ( !(nIndex >= 0 && xProvider.is()) ) + return; - css::uno::Sequence< css::beans::PropertyValue > aArgs(1); - aArgs[0].Name = aDockWinArgName; - aArgs[0].Value <<= bVisible; + OUString aDockWinArgName = "DockingWindow" + OUString::number( nIndex ); - css::uno::Reference< css::frame::XDispatchHelper > xDispatcher = css::frame::DispatchHelper::create( rxContext ); + css::uno::Sequence< css::beans::PropertyValue > aArgs(1); + aArgs[0].Name = aDockWinArgName; + aArgs[0].Value <<= bVisible; - OUString aDockWinCommand = ".uno:" + aDockWinArgName; - xDispatcher->executeDispatch( - xProvider, - aDockWinCommand, - "_self", - 0, - aArgs); - } + css::uno::Reference< css::frame::XDispatchHelper > xDispatcher = css::frame::DispatchHelper::create( rxContext ); + + OUString aDockWinCommand = ".uno:" + aDockWinArgName; + xDispatcher->executeDispatch( + xProvider, + aDockWinCommand, + "_self", + 0, + aArgs); } void impl_addWindowListeners( @@ -320,21 +320,21 @@ void impl_addWindowListeners( { css::uno::Reference< css::awt::XWindow > xWindow( xUIElement->getRealInterface(), css::uno::UNO_QUERY ); css::uno::Reference< css::awt::XDockableWindow > xDockWindow( xUIElement->getRealInterface(), css::uno::UNO_QUERY ); - if ( xDockWindow.is() && xWindow.is() ) + if ( !(xDockWindow.is() && xWindow.is()) ) + return; + + try + { + xDockWindow->addDockableWindowListener( + css::uno::Reference< css::awt::XDockableWindowListener >( + xThis, css::uno::UNO_QUERY )); + xWindow->addWindowListener( + css::uno::Reference< css::awt::XWindowListener >( + xThis, css::uno::UNO_QUERY )); + xDockWindow->enableDocking( true ); + } + catch ( const css::uno::Exception& ) { - try - { - xDockWindow->addDockableWindowListener( - css::uno::Reference< css::awt::XDockableWindowListener >( - xThis, css::uno::UNO_QUERY )); - xWindow->addWindowListener( - css::uno::Reference< css::awt::XWindowListener >( - xThis, css::uno::UNO_QUERY )); - xDockWindow->enableDocking( true ); - } - catch ( const css::uno::Exception& ) - { - } } } diff --git a/framework/source/layoutmanager/layoutmanager.cxx b/framework/source/layoutmanager/layoutmanager.cxx index f9bbf677fc97..924e21c2b3c4 100644 --- a/framework/source/layoutmanager/layoutmanager.cxx +++ b/framework/source/layoutmanager/layoutmanager.cxx @@ -150,46 +150,46 @@ void LayoutManager::implts_createMenuBar(const OUString& rMenuBarName) } // Create the default menubar otherwise - if (!m_bInplaceMenuSet && !m_xMenuBar.is()) + if (m_bInplaceMenuSet || m_xMenuBar.is()) + return; + + m_xMenuBar = implts_createElement( rMenuBarName ); + if ( !m_xMenuBar.is() ) + return; + + SystemWindow* pSysWindow = getTopSystemWindow( m_xContainerWindow ); + if ( !pSysWindow ) + return; + + Reference< awt::XMenuBar > xMenuBar; + + Reference< XPropertySet > xPropSet( m_xMenuBar, UNO_QUERY ); + if ( xPropSet.is() ) { - m_xMenuBar = implts_createElement( rMenuBarName ); - if ( m_xMenuBar.is() ) + try { - SystemWindow* pSysWindow = getTopSystemWindow( m_xContainerWindow ); - if ( pSysWindow ) - { - Reference< awt::XMenuBar > xMenuBar; + xPropSet->getPropertyValue("XMenuBar") >>= xMenuBar; + } + catch (const beans::UnknownPropertyException&) + { + } + catch (const lang::WrappedTargetException&) + { + } + } - Reference< XPropertySet > xPropSet( m_xMenuBar, UNO_QUERY ); - if ( xPropSet.is() ) - { - try - { - xPropSet->getPropertyValue("XMenuBar") >>= xMenuBar; - } - catch (const beans::UnknownPropertyException&) - { - } - catch (const lang::WrappedTargetException&) - { - } - } + if ( !xMenuBar.is() ) + return; - if ( xMenuBar.is() ) - { - VCLXMenu* pAwtMenuBar = comphelper::getUnoTunnelImplementation<VCLXMenu>( xMenuBar ); - if ( pAwtMenuBar ) - { - MenuBar* pMenuBar = static_cast<MenuBar*>(pAwtMenuBar->GetMenu()); - if ( pMenuBar ) - { - pSysWindow->SetMenuBar(pMenuBar); - pMenuBar->SetDisplayable( m_bMenuVisible ); - implts_updateMenuBarClose(); - } - } - } - } + VCLXMenu* pAwtMenuBar = comphelper::getUnoTunnelImplementation<VCLXMenu>( xMenuBar ); + if ( pAwtMenuBar ) + { + MenuBar* pMenuBar = static_cast<MenuBar*>(pAwtMenuBar->GetMenu()); + if ( pMenuBar ) + { + pSysWindow->SetMenuBar(pMenuBar); + pMenuBar->SetDisplayable( m_bMenuVisible ); + implts_updateMenuBarClose(); } } } @@ -669,48 +669,48 @@ void LayoutManager::implts_writeWindowStateData( const OUString& aName, const UI } } - if ( bPersistent && xPersistentWindowState.is() ) + if ( !(bPersistent && xPersistentWindowState.is()) ) + return; + + try { - try - { - Sequence< PropertyValue > aWindowState( 8 ); + Sequence< PropertyValue > aWindowState( 8 ); - aWindowState[0].Name = WINDOWSTATE_PROPERTY_DOCKED; - aWindowState[0].Value <<= !rElementData.m_bFloating; - aWindowState[1].Name = WINDOWSTATE_PROPERTY_VISIBLE; - aWindowState[1].Value <<= rElementData.m_bVisible; + aWindowState[0].Name = WINDOWSTATE_PROPERTY_DOCKED; + aWindowState[0].Value <<= !rElementData.m_bFloating; + aWindowState[1].Name = WINDOWSTATE_PROPERTY_VISIBLE; + aWindowState[1].Value <<= rElementData.m_bVisible; - aWindowState[2].Name = WINDOWSTATE_PROPERTY_DOCKINGAREA; - aWindowState[2].Value <<= rElementData.m_aDockedData.m_nDockedArea; + aWindowState[2].Name = WINDOWSTATE_PROPERTY_DOCKINGAREA; + aWindowState[2].Value <<= rElementData.m_aDockedData.m_nDockedArea; - aWindowState[3].Name = WINDOWSTATE_PROPERTY_DOCKPOS; - aWindowState[3].Value <<= rElementData.m_aDockedData.m_aPos; + aWindowState[3].Name = WINDOWSTATE_PROPERTY_DOCKPOS; + aWindowState[3].Value <<= rElementData.m_aDockedData.m_aPos; - aWindowState[4].Name = WINDOWSTATE_PROPERTY_POS; - aWindowState[4].Value <<= rElementData.m_aFloatingData.m_aPos; + aWindowState[4].Name = WINDOWSTATE_PROPERTY_POS; + aWindowState[4].Value <<= rElementData.m_aFloatingData.m_aPos; - aWindowState[5].Name = WINDOWSTATE_PROPERTY_SIZE; - aWindowState[5].Value <<= rElementData.m_aFloatingData.m_aSize; - aWindowState[6].Name = WINDOWSTATE_PROPERTY_UINAME; - aWindowState[6].Value <<= rElementData.m_aUIName; - aWindowState[7].Name = WINDOWSTATE_PROPERTY_LOCKED; - aWindowState[7].Value <<= rElementData.m_aDockedData.m_bLocked; + aWindowState[5].Name = WINDOWSTATE_PROPERTY_SIZE; + aWindowState[5].Value <<= rElementData.m_aFloatingData.m_aSize; + aWindowState[6].Name = WINDOWSTATE_PROPERTY_UINAME; + aWindowState[6].Value <<= rElementData.m_aUIName; + aWindowState[7].Name = WINDOWSTATE_PROPERTY_LOCKED; + aWindowState[7].Value <<= rElementData.m_aDockedData.m_bLocked; - if ( xPersistentWindowState->hasByName( aName )) - { - Reference< XNameReplace > xReplace( xPersistentWindowState, uno::UNO_QUERY ); - xReplace->replaceByName( aName, makeAny( aWindowState )); - } - else - { - Reference< XNameContainer > xInsert( xPersistentWindowState, uno::UNO_QUERY ); - xInsert->insertByName( aName, makeAny( aWindowState )); - } + if ( xPersistentWindowState->hasByName( aName )) + { + Reference< XNameReplace > xReplace( xPersistentWindowState, uno::UNO_QUERY ); + xReplace->replaceByName( aName, makeAny( aWindowState )); } - catch (const Exception&) + else { + Reference< XNameContainer > xInsert( xPersistentWindowState, uno::UNO_QUERY ); + xInsert->insertByName( aName, makeAny( aWindowState )); } } + catch (const Exception&) + { + } } ::Size LayoutManager::implts_getContainerWindowOutputSize() @@ -994,18 +994,18 @@ void LayoutManager::implts_setStatusBarPosSize( const ::Point& rPos, const ::Siz aReadLock.clear(); /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - if ( xWindow.is() ) + if ( !xWindow.is() ) + return; + + SolarMutexGuard aGuard; + VclPtr<vcl::Window> pParentWindow = VCLUnoHelper::GetWindow( xContainerWindow ); + VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( pParentWindow && ( pWindow && pWindow->GetType() == WindowType::STATUSBAR )) { - SolarMutexGuard aGuard; - VclPtr<vcl::Window> pParentWindow = VCLUnoHelper::GetWindow( xContainerWindow ); - VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pParentWindow && ( pWindow && pWindow->GetType() == WindowType::STATUSBAR )) - { - vcl::Window* pOldParentWindow = pWindow->GetParent(); - if ( pParentWindow != pOldParentWindow ) - pWindow->SetParent( pParentWindow ); - static_cast<StatusBar *>(pWindow.get())->SetPosSizePixel( rPos, rSize ); - } + vcl::Window* pOldParentWindow = pWindow->GetParent(); + if ( pParentWindow != pOldParentWindow ) + pWindow->SetParent( pParentWindow ); + static_cast<StatusBar *>(pWindow.get())->SetPosSizePixel( rPos, rSize ); } } @@ -1155,42 +1155,42 @@ void LayoutManager::implts_setInplaceMenuBar( const Reference< XIndexAccess >& x /* SAFE AREA ----------------------------------------------------------------------------------------------- */ SolarMutexClearableGuard aWriteLock; - if ( !m_bInplaceMenuSet ) - { - SolarMutexGuard aGuard; - - // Reset old inplace menubar! - VclPtr<Menu> pOldMenuBar; - if (m_xInplaceMenuBar.is()) - { - pOldMenuBar = m_xInplaceMenuBar->GetMenuBar(); - m_xInplaceMenuBar->dispose(); - m_xInplaceMenuBar.clear(); - } - pOldMenuBar.disposeAndClear(); + if ( m_bInplaceMenuSet ) + return; - m_bInplaceMenuSet = false; + SolarMutexGuard aGuard; - if ( m_xFrame.is() && m_xContainerWindow.is() ) - { - Reference< XDispatchProvider > xDispatchProvider; + // Reset old inplace menubar! + VclPtr<Menu> pOldMenuBar; + if (m_xInplaceMenuBar.is()) + { + pOldMenuBar = m_xInplaceMenuBar->GetMenuBar(); + m_xInplaceMenuBar->dispose(); + m_xInplaceMenuBar.clear(); + } + pOldMenuBar.disposeAndClear(); - VclPtr<MenuBar> pMenuBar = VclPtr<MenuBar>::Create(); - m_xInplaceMenuBar = new MenuBarManager( m_xContext, m_xFrame, m_xURLTransformer, xDispatchProvider, OUString(), pMenuBar, true ); - m_xInplaceMenuBar->SetItemContainer( xMergedMenuBar ); + m_bInplaceMenuSet = false; - SystemWindow* pSysWindow = getTopSystemWindow( m_xContainerWindow ); - if ( pSysWindow ) - pSysWindow->SetMenuBar(pMenuBar); + if ( m_xFrame.is() && m_xContainerWindow.is() ) + { + Reference< XDispatchProvider > xDispatchProvider; - m_bInplaceMenuSet = true; - } + VclPtr<MenuBar> pMenuBar = VclPtr<MenuBar>::Create(); + m_xInplaceMenuBar = new MenuBarManager( m_xContext, m_xFrame, m_xURLTransformer, xDispatchProvider, OUString(), pMenuBar, true ); + m_xInplaceMenuBar->SetItemContainer( xMergedMenuBar ); - aWriteLock.clear(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + SystemWindow* pSysWindow = getTopSystemWindow( m_xContainerWindow ); + if ( pSysWindow ) + pSysWindow->SetMenuBar(pMenuBar); - implts_updateMenuBarClose(); + m_bInplaceMenuSet = true; } + + aWriteLock.clear(); + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + + implts_updateMenuBarClose(); } void LayoutManager::implts_resetInplaceMenuBar() @@ -1954,52 +1954,52 @@ sal_Bool SAL_CALL LayoutManager::unlockWindow( const OUString& aName ) void SAL_CALL LayoutManager::setElementSize( const OUString& aName, const awt::Size& aSize ) { - if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR )) - { - SolarMutexClearableGuard aReadLock; - ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get(); - aReadLock.clear(); + if ( !getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR )) + return; - if ( pToolbarManager ) - { - pToolbarManager->setToolbarSize( aName, aSize ); - if ( pToolbarManager->isLayoutDirty() ) - doLayout(); - } + SolarMutexClearableGuard aReadLock; + ToolbarLayoutManager* pToolbarManager = m_xToolbarManager.get(); + aReadLock.clear(); + + if ( pToolbarManager ) + { + pToolbarManager->setToolbarSize( aName, aSize ); + if ( pToolbarManager->isLayoutDirty() ) + doLayout(); } } void SAL_CALL LayoutManager::setElementPos( const OUString& aName, const awt::Point& aPos ) { - if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR )) - { - SolarMutexClearableGuard aReadLock; - ToolbarLayoutManager* pToolbarManager( m_xToolbarManager.get() ); - aReadLock.clear(); + if ( !getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR )) + return; - if ( pToolbarManager ) - { - pToolbarManager->setToolbarPos( aName, aPos ); - if ( pToolbarManager->isLayoutDirty() ) - doLayout(); - } + SolarMutexClearableGuard aReadLock; + ToolbarLayoutManager* pToolbarManager( m_xToolbarManager.get() ); + aReadLock.clear(); + + if ( pToolbarManager ) + { + pToolbarManager->setToolbarPos( aName, aPos ); + if ( pToolbarManager->isLayoutDirty() ) + doLayout(); } } void SAL_CALL LayoutManager::setElementPosSize( const OUString& aName, const awt::Point& aPos, const awt::Size& aSize ) { - if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR )) - { - SolarMutexClearableGuard aReadLock; - ToolbarLayoutManager* pToolbarManager( m_xToolbarManager.get() ); - aReadLock.clear(); + if ( !getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR )) + return; - if ( pToolbarManager ) - { - pToolbarManager->setToolbarPosSize( aName, aPos, aSize ); - if ( pToolbarManager->isLayoutDirty() ) - doLayout(); - } + SolarMutexClearableGuard aReadLock; + ToolbarLayoutManager* pToolbarManager( m_xToolbarManager.get() ); + aReadLock.clear(); + + if ( pToolbarManager ) + { + pToolbarManager->setToolbarPosSize( aName, aPos, aSize ); + if ( pToolbarManager->isLayoutDirty() ) + doLayout(); } } @@ -2458,20 +2458,20 @@ void LayoutManager::implts_updateMenuBarClose() Reference< awt::XWindow > xContainerWindow( m_xContainerWindow ); aWriteLock.clear(); - if ( xContainerWindow.is() ) - { - SolarMutexGuard aGuard; + if ( !xContainerWindow.is() ) + return; - SystemWindow* pSysWindow = getTopSystemWindow( xContainerWindow ); - if ( pSysWindow ) + SolarMutexGuard aGuard; + + SystemWindow* pSysWindow = getTopSystemWindow( xContainerWindow ); + if ( pSysWindow ) + { + MenuBar* pMenuBar = pSysWindow->GetMenuBar(); + if ( pMenuBar ) { - MenuBar* pMenuBar = pSysWindow->GetMenuBar(); - if ( pMenuBar ) - { - // TODO remove link on sal_False ?! - pMenuBar->ShowCloseButton(bShowCloseButton); - pMenuBar->SetCloseButtonClickHdl(LINK(this, LayoutManager, MenuBarClose)); - } + // TODO remove link on sal_False ?! + pMenuBar->ShowCloseButton(bShowCloseButton); + pMenuBar->SetCloseButtonClickHdl(LINK(this, LayoutManager, MenuBarClose)); } } } @@ -2592,19 +2592,19 @@ void LayoutManager::implts_notifyListeners(short nEvent, const uno::Any& rInfoPa { lang::EventObject aSource( static_cast< ::cppu::OWeakObject*>(this) ); ::cppu::OInterfaceContainerHelper* pContainer = m_aListenerContainer.getContainer( cppu::UnoType<frame::XLayoutManagerListener>::get()); - if (pContainer!=nullptr) + if (pContainer==nullptr) + return; + + ::cppu::OInterfaceIteratorHelper pIterator(*pContainer); + while (pIterator.hasMoreElements()) { - ::cppu::OInterfaceIteratorHelper pIterator(*pContainer); - while (pIterator.hasMoreElements()) + try { - try - { - static_cast<frame::XLayoutManagerListener*>(pIterator.next())->layoutEvent(aSource, nEvent, rInfoParam); - } - catch( const uno::RuntimeException& ) - { - pIterator.remove(); - } + static_cast<frame::XLayoutManagerListener*>(pIterator.next())->layoutEvent(aSource, nEvent, rInfoParam); + } + catch( const uno::RuntimeException& ) + { + pIterator.remove(); } } } @@ -2851,40 +2851,40 @@ void SAL_CALL LayoutManager::elementInserted( const ui::ConfigurationEvent& Even rtl::Reference< ToolbarLayoutManager > xToolbarManager( m_xToolbarManager ); aReadLock.clear(); - if ( xFrame.is() ) - { - OUString aElementType; - OUString aElementName; - bool bRefreshLayout(false); + if ( !xFrame.is() ) + return; + + OUString aElementType; + OUString aElementName; + bool bRefreshLayout(false); - parseResourceURL( Event.ResourceURL, aElementType, aElementName ); - if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR )) + parseResourceURL( Event.ResourceURL, aElementType, aElementName ); + if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR )) + { + if ( xToolbarManager.is() ) { - if ( xToolbarManager.is() ) - { - xToolbarManager->elementInserted( Event ); - bRefreshLayout = xToolbarManager->isLayoutDirty(); - } + xToolbarManager->elementInserted( Event ); + bRefreshLayout = xToolbarManager->isLayoutDirty(); } - else if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_MENUBAR )) + } + else if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_MENUBAR )) + { + Reference< XUIElement > xUIElement = implts_findElement( Event.ResourceURL ); + Reference< XUIElementSettings > xElementSettings( xUIElement, UNO_QUERY ); + if ( xElementSettings.is() ) { - Reference< XUIElement > xUIElement = implts_findElement( Event.ResourceURL ); - Reference< XUIElementSettings > xElementSettings( xUIElement, UNO_QUERY ); - if ( xElementSettings.is() ) + uno::Reference< XPropertySet > xPropSet( xElementSettings, uno::UNO_QUERY ); + if ( xPropSet.is() ) { - uno::Reference< XPropertySet > xPropSet( xElementSettings, uno::UNO_QUERY ); - if ( xPropSet.is() ) - { - if ( Event.Source == uno::Reference< uno::XInterface >( m_xDocCfgMgr, uno::UNO_QUERY )) - xPropSet->setPropertyValue( "ConfigurationSource", makeAny( m_xDocCfgMgr )); - } - xElementSettings->updateSettings(); + if ( Event.Source == uno::Reference< uno::XInterface >( m_xDocCfgMgr, uno::UNO_QUERY )) + xPropSet->setPropertyValue( "ConfigurationSource", makeAny( m_xDocCfgMgr )); } + xElementSettings->updateSettings(); } - - if ( bRefreshLayout ) - doLayout(); } + + if ( bRefreshLayout ) + doLayout(); } void SAL_CALL LayoutManager::elementRemoved( const ui::ConfigurationEvent& Event ) @@ -2898,80 +2898,80 @@ void SAL_CALL LayoutManager::elementRemoved( const ui::ConfigurationEvent& Event Reference< ui::XUIConfigurationManager > xDocCfgMgr( m_xDocCfgMgr ); aReadLock.clear(); - if ( xFrame.is() ) - { - OUString aElementType; - OUString aElementName; - bool bRefreshLayout(false); + if ( !xFrame.is() ) + return; + + OUString aElementType; + OUString aElementName; + bool bRefreshLayout(false); - parseResourceURL( Event.ResourceURL, aElementType, aElementName ); - if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR )) + parseResourceURL( Event.ResourceURL, aElementType, aElementName ); + if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR )) + { + if ( xToolbarManager.is() ) { - if ( xToolbarManager.is() ) - { - xToolbarManager->elementRemoved( Event ); - bRefreshLayout = xToolbarManager->isLayoutDirty(); - } + xToolbarManager->elementRemoved( Event ); + bRefreshLayout = xToolbarManager->isLayoutDirty(); } - else + } + else + { + Reference< XUIElement > xUIElement = implts_findElement( Event.ResourceURL ); + Reference< XUIElementSettings > xElementSettings( xUIElement, UNO_QUERY ); + if ( xElementSettings.is() ) { - Reference< XUIElement > xUIElement = implts_findElement( Event.ResourceURL ); - Reference< XUIElementSettings > xElementSettings( xUIElement, UNO_QUERY ); - if ( xElementSettings.is() ) - { - bool bNoSettings( false ); - OUString aConfigSourcePropName( "ConfigurationSource" ); - Reference< XInterface > xElementCfgMgr; - Reference< XPropertySet > xPropSet( xElementSettings, UNO_QUERY ); + bool bNoSettings( false ); + OUString aConfigSourcePropName( "ConfigurationSource" ); + Reference< XInterface > xElementCfgMgr; + Reference< XPropertySet > xPropSet( xElementSettings, UNO_QUERY ); - if ( xPropSet.is() ) - xPropSet->getPropertyValue( aConfigSourcePropName ) >>= xElementCfgMgr; + if ( xPropSet.is() ) + xPropSet->getPropertyValue( aConfigSourcePropName ) >>= xElementCfgMgr; - if ( !xElementCfgMgr.is() ) - return; + if ( !xElementCfgMgr.is() ) + return; - // Check if the same UI configuration manager has changed => check further - if ( Event.Source == xElementCfgMgr ) + // Check if the same UI configuration manager has changed => check further + if ( Event.Source == xElementCfgMgr ) + { + // Same UI configuration manager where our element has its settings + if ( Event.Source == Reference< XInterface >( xDocCfgMgr, UNO_QUERY )) { - // Same UI configuration manager where our element has its settings - if ( Event.Source == Reference< XInterface >( xDocCfgMgr, UNO_QUERY )) + // document settings removed + if ( xModuleCfgMgr->hasSettings( Event.ResourceURL )) { - // document settings removed - if ( xModuleCfgMgr->hasSettings( Event.ResourceURL )) - { - xPropSet->setPropertyValue( aConfigSourcePropName, makeAny( m_xModuleCfgMgr )); - xElementSettings->updateSettings(); - return; - } + xPropSet->setPropertyValue( aConfigSourcePropName, makeAny( m_xModuleCfgMgr )); + xElementSettings->updateSettings(); + return; } - - bNoSettings = true; } - // No settings anymore, element must be destroyed - if ( xContainerWindow.is() && bNoSettings ) + bNoSettings = true; + } + + // No settings anymore, element must be destroyed + if ( xContainerWindow.is() && bNoSettings ) + { + if ( aElementType.equalsIgnoreAsciiCase("menubar") && + aElementName.equalsIgnoreAsciiCase("menubar") ) { - if ( aElementType.equalsIgnoreAsciiCase("menubar") && - aElementName.equalsIgnoreAsciiCase("menubar") ) - { - SystemWindow* pSysWindow = getTopSystemWindow( xContainerWindow ); - if ( pSysWindow && !m_bInplaceMenuSet ) - pSysWindow->SetMenuBar( nullptr ); + SystemWindow* pSysWindow = getTopSystemWindow( xContainerWindow ); + if ( pSysWindow && !m_bInplaceMenuSet ) + pSysWindow->SetMenuBar( nullptr ); - Reference< XComponent > xComp( xMenuBar, UNO_QUERY ); - if ( xComp.is() ) - xComp->dispose(); + Reference< XComponent > xComp( xMenuBar, UNO_QUERY ); + if ( xComp.is() ) + xComp->dispose(); - SolarMutexGuard g; - m_xMenuBar.clear(); - } + SolarMutexGuard g; + m_xMenuBar.clear(); } } } - - if ( bRefreshLayout ) - doLayout(); } + + if ( bRefreshLayout ) + doLayout(); } void SAL_CALL LayoutManager::elementReplaced( const ui::ConfigurationEvent& Event ) @@ -2981,45 +2981,45 @@ void SAL_CALL LayoutManager::elementReplaced( const ui::ConfigurationEvent& Even rtl::Reference< ToolbarLayoutManager > xToolbarManager( m_xToolbarManager ); aReadLock.clear(); - if ( xFrame.is() ) - { - OUString aElementType; - OUString aElementName; - bool bRefreshLayout(false); + if ( !xFrame.is() ) + return; - parseResourceURL( Event.ResourceURL, aElementType, aElementName ); - if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR )) + OUString aElementType; + OUString aElementName; + bool bRefreshLayout(false); + + parseResourceURL( Event.ResourceURL, aElementType, aElementName ); + if ( aElementType.equalsIgnoreAsciiCase( UIRESOURCETYPE_TOOLBAR )) + { + if ( xToolbarManager.is() ) { - if ( xToolbarManager.is() ) - { - xToolbarManager->elementReplaced( Event ); - bRefreshLayout = xToolbarManager->isLayoutDirty(); - } + xToolbarManager->elementReplaced( Event ); + bRefreshLayout = xToolbarManager->isLayoutDirty(); } - else + } + else + { + Reference< XUIElement > xUIElement = implts_findElement( Event.ResourceURL ); + Reference< XUIElementSettings > xElementSettings( xUIElement, UNO_QUERY ); + if ( xElementSettings.is() ) { - Reference< XUIElement > xUIElement = implts_findElement( Event.ResourceURL ); - Reference< XUIElementSettings > xElementSettings( xUIElement, UNO_QUERY ); - if ( xElementSettings.is() ) - { - Reference< XInterface > xElementCfgMgr; - Reference< XPropertySet > xPropSet( xElementSettings, UNO_QUERY ); + Reference< XInterface > xElementCfgMgr; + Reference< XPropertySet > xPropSet( xElementSettings, UNO_QUERY ); - if ( xPropSet.is() ) - xPropSet->getPropertyValue( "ConfigurationSource" ) >>= xElementCfgMgr; + if ( xPropSet.is() ) + xPropSet->getPropertyValue( "ConfigurationSource" ) >>= xElementCfgMgr; - if ( !xElementCfgMgr.is() ) - return; + if ( !xElementCfgMgr.is() ) + return; - // Check if the same UI configuration manager has changed => update settings - if ( Event.Source == xElementCfgMgr ) - xElementSettings->updateSettings(); - } + // Check if the same UI configuration manager has changed => update settings + if ( Event.Source == xElementCfgMgr ) + xElementSettings->updateSettings(); } - - if ( bRefreshLayout ) - doLayout(); } + + if ( bRefreshLayout ) + doLayout(); } void SAL_CALL LayoutManager::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, diff --git a/framework/source/layoutmanager/toolbarlayoutmanager.cxx b/framework/source/layoutmanager/toolbarlayoutmanager.cxx index 1bc783916b60..9bb4c8e2a102 100644 --- a/framework/source/layoutmanager/toolbarlayoutmanager.cxx +++ b/framework/source/layoutmanager/toolbarlayoutmanager.cxx @@ -910,73 +910,74 @@ void ToolbarLayoutManager::childWindowEvent( VclSimpleEvent const * pEvent ) // To enable toolbar controllers to change their image when a sub-toolbar function // is activated, we need this mechanism. We have NO connection between these toolbars // anymore! - if ( auto pWindowEvent = dynamic_cast< const VclWindowEvent* >(pEvent) ) + auto pWindowEvent = dynamic_cast< const VclWindowEvent* >(pEvent); + if (!pWindowEvent) + return; + + if ( pEvent->GetId() == VclEventId::ToolboxSelect ) { - if ( pEvent->GetId() == VclEventId::ToolboxSelect ) + OUString aToolbarName; + OUString aCommand; + ToolBox* pToolBox = getToolboxPtr( pWindowEvent->GetWindow() ); + + if ( pToolBox ) + { + aToolbarName = retrieveToolbarNameFromHelpURL( pToolBox ); + sal_uInt16 nId = pToolBox->GetCurItemId(); + if ( nId > 0 ) + aCommand = pToolBox->GetItemCommand( nId ); + } + + if ( !aToolbarName.isEmpty() && !aCommand.isEmpty() ) { - OUString aToolbarName; - OUString aCommand; - ToolBox* pToolBox = getToolboxPtr( pWindowEvent->GetWindow() ); + SolarMutexClearableGuard aReadLock; + ::std::vector< uno::Reference< ui::XUIFunctionListener > > aListenerArray; - if ( pToolBox ) + for (auto const& elem : m_aUIElements) { - aToolbarName = retrieveToolbarNameFromHelpURL( pToolBox ); - sal_uInt16 nId = pToolBox->GetCurItemId(); - if ( nId > 0 ) - aCommand = pToolBox->GetItemCommand( nId ); + if ( elem.m_xUIElement.is() ) + { + uno::Reference< ui::XUIFunctionListener > xListener( elem.m_xUIElement, uno::UNO_QUERY ); + if ( xListener.is() ) + aListenerArray.push_back( xListener ); + } } + aReadLock.clear(); - if ( !aToolbarName.isEmpty() && !aCommand.isEmpty() ) + const sal_uInt32 nCount = aListenerArray.size(); + for ( sal_uInt32 i = 0; i < nCount; ++i ) { - SolarMutexClearableGuard aReadLock; - ::std::vector< uno::Reference< ui::XUIFunctionListener > > aListenerArray; - - for (auto const& elem : m_aUIElements) + try { - if ( elem.m_xUIElement.is() ) - { - uno::Reference< ui::XUIFunctionListener > xListener( elem.m_xUIElement, uno::UNO_QUERY ); - if ( xListener.is() ) - aListenerArray.push_back( xListener ); - } + aListenerArray[i]->functionExecute( aToolbarName, aCommand ); } - aReadLock.clear(); - - const sal_uInt32 nCount = aListenerArray.size(); - for ( sal_uInt32 i = 0; i < nCount; ++i ) + catch (const uno::RuntimeException&) + { + throw; + } + catch (const uno::Exception&) { - try - { - aListenerArray[i]->functionExecute( aToolbarName, aCommand ); - } - catch (const uno::RuntimeException&) - { - throw; - } - catch (const uno::Exception&) - { - } } } } - else if ( pEvent->GetId() == VclEventId::ToolboxFormatChanged ) + } + else if ( pEvent->GetId() == VclEventId::ToolboxFormatChanged ) + { + if ( !implts_isToolbarCreationActive() ) { - if ( !implts_isToolbarCreationActive() ) + ToolBox* pToolBox = getToolboxPtr( static_cast<VclWindowEvent const *>(pEvent)->GetWindow() ); + if ( pToolBox ) { - ToolBox* pToolBox = getToolboxPtr( static_cast<VclWindowEvent const *>(pEvent)->GetWindow() ); - if ( pToolBox ) + OUString aToolbarName = retrieveToolbarNameFromHelpURL( pToolBox ); + if ( !aToolbarName.isEmpty() ) { - OUString aToolbarName = retrieveToolbarNameFromHelpURL( pToolBox ); - if ( !aToolbarName.isEmpty() ) - { - OUString aToolbarUrl = "private:resource/toolbar/" + aToolbarName; + OUString aToolbarUrl = "private:resource/toolbar/" + aToolbarName; - UIElement aToolbar = implts_findToolbar( aToolbarUrl ); - if ( aToolbar.m_xUIElement.is() && !aToolbar.m_bFloating ) - { - implts_setLayoutDirty(); - m_pParentLayouter->requestLayout(); - } + UIElement aToolbar = implts_findToolbar( aToolbarUrl ); + if ( aToolbar.m_xUIElement.is() && !aToolbar.m_bFloating ) + { + implts_setLayoutDirty(); + m_pParentLayouter->requestLayout(); } } } @@ -1187,22 +1188,22 @@ void ToolbarLayoutManager::implts_createCustomToolBars() uno::Reference< ui::XUIConfigurationManager > xDocCfgMgr = m_xDocCfgMgr; aReadLock.clear(); - if ( xFrame.is() ) - { - if (isPreviewFrame()) - return; // no custom toolbars for preview frame! + if ( !xFrame.is() ) + return; - uno::Sequence< uno::Sequence< beans::PropertyValue > > aTbxSeq; - if ( xDocCfgMgr.is() ) - { - aTbxSeq = xDocCfgMgr->getUIElementsInfo( ui::UIElementType::TOOLBAR ); - implts_createCustomToolBars( aTbxSeq ); // first create all document based toolbars - } - if ( xModuleCfgMgr.is() ) - { - aTbxSeq = xModuleCfgMgr->getUIElementsInfo( ui::UIElementType::TOOLBAR ); - implts_createCustomToolBars( aTbxSeq ); // second create module based toolbars - } + if (isPreviewFrame()) + return; // no custom toolbars for preview frame! + + uno::Sequence< uno::Sequence< beans::PropertyValue > > aTbxSeq; + if ( xDocCfgMgr.is() ) + { + aTbxSeq = xDocCfgMgr->getUIElementsInfo( ui::UIElementType::TOOLBAR ); + implts_createCustomToolBars( aTbxSeq ); // first create all document based toolbars + } + if ( xModuleCfgMgr.is() ) + { + aTbxSeq = xModuleCfgMgr->getUIElementsInfo( ui::UIElementType::TOOLBAR ); + implts_createCustomToolBars( aTbxSeq ); // second create module based toolbars } } @@ -1300,21 +1301,21 @@ void ToolbarLayoutManager::implts_createCustomToolBars( const uno::Sequence< uno void ToolbarLayoutManager::implts_createCustomToolBar( const OUString& aTbxResName, const OUString& aTitle ) { - if ( !aTbxResName.isEmpty() ) - { - if ( !createToolbar( aTbxResName ) ) - SAL_WARN("fwk.uielement", "ToolbarLayoutManager cannot create custom toolbar"); + if ( aTbxResName.isEmpty() ) + return; - uno::Reference< ui::XUIElement > xUIElement = getToolbar( aTbxResName ); + if ( !createToolbar( aTbxResName ) ) + SAL_WARN("fwk.uielement", "ToolbarLayoutManager cannot create custom toolbar"); - if ( !aTitle.isEmpty() && xUIElement.is() ) - { - SolarMutexGuard aGuard; + uno::Reference< ui::XUIElement > xUIElement = getToolbar( aTbxResName ); - vcl::Window* pWindow = getWindowFromXUIElement( xUIElement ); - if ( pWindow ) - pWindow->SetText( aTitle ); - } + if ( !aTitle.isEmpty() && xUIElement.is() ) + { + SolarMutexGuard aGuard; + + vcl::Window* pWindow = getWindowFromXUIElement( xUIElement ); + if ( pWindow ) + pWindow->SetText( aTitle ); } } @@ -1330,45 +1331,45 @@ void ToolbarLayoutManager::implts_reparentToolbars() aWriteLock.clear(); SolarMutexGuard aGuard; - if ( pContainerWindow ) + if ( !pContainerWindow ) + return; + + for (auto const& elem : aUIElementVector) { - for (auto const& elem : aUIElementVector) + uno::Reference< ui::XUIElement > xUIElement( elem.m_xUIElement ); + if ( xUIElement.is() ) { - uno::Reference< ui::XUIElement > xUIElement( elem.m_xUIElement ); - if ( xUIElement.is() ) + uno::Reference< awt::XWindow > xWindow; + try { - uno::Reference< awt::XWindow > xWindow; - try - { - // We have to retrieve the window reference with try/catch as it is - // possible that all elements have been disposed! - xWindow.set( xUIElement->getRealInterface(), uno::UNO_QUERY ); - } - catch (const uno::RuntimeException&) - { - throw; - } - catch (const uno::Exception&) - { - } + // We have to retrieve the window reference with try/catch as it is + // possible that all elements have been disposed! + xWindow.set( xUIElement->getRealInterface(), uno::UNO_QUERY ); + } + catch (const uno::RuntimeException&) + { + throw; + } + catch (const uno::Exception&) + { + } - VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow ) + VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( pWindow ) + { + // Reparent our child windows according to their current state. + if ( elem.m_bFloating ) + pWindow->SetParent( pContainerWindow ); + else { - // Reparent our child windows according to their current state. - if ( elem.m_bFloating ) - pWindow->SetParent( pContainerWindow ); + if ( elem.m_aDockedData.m_nDockedArea == ui::DockingArea_DOCKINGAREA_TOP ) + pWindow->SetParent( pTopDockWindow ); + else if ( elem.m_aDockedData.m_nDockedArea == ui::DockingArea_DOCKINGAREA_BOTTOM ) + pWindow->SetParent( pBottomDockWindow ); + else if ( elem.m_aDockedData.m_nDockedArea == ui::DockingArea_DOCKINGAREA_LEFT ) + pWindow->SetParent( pLeftDockWindow ); else - { - if ( elem.m_aDockedData.m_nDockedArea == ui::DockingArea_DOCKINGAREA_TOP ) - pWindow->SetParent( pTopDockWindow ); - else if ( elem.m_aDockedData.m_nDockedArea == ui::DockingArea_DOCKINGAREA_BOTTOM ) - pWindow->SetParent( pBottomDockWindow ); - else if ( elem.m_aDockedData.m_nDockedArea == ui::DockingArea_DOCKINGAREA_LEFT ) - pWindow->SetParent( pLeftDockWindow ); - else - pWindow->SetParent( pRightDockWindow ); - } + pWindow->SetParent( pRightDockWindow ); } } } @@ -1398,118 +1399,118 @@ void ToolbarLayoutManager::implts_setElementData( UIElement& rElement, const uno vcl::Window* pWindow( nullptr ); ToolBox* pToolBox( nullptr ); - if ( rDockWindow.is() && xWindow.is() ) + if ( !(rDockWindow.is() && xWindow.is()) ) + return; + { + SolarMutexGuard aGuard; + pWindow = VCLUnoHelper::GetWindow( xWindow ).get(); + if ( pWindow ) { - SolarMutexGuard aGuard; - pWindow = VCLUnoHelper::GetWindow( xWindow ).get(); - if ( pWindow ) - { - OUString aText = pWindow->GetText(); - if ( aText.isEmpty() ) - pWindow->SetText( rElement.m_aUIName ); - if ( rElement.m_bNoClose ) - pWindow->SetStyle( pWindow->GetStyle() & ~WB_CLOSEABLE ); - if ( pWindow->GetType() == WindowType::TOOLBOX ) - pToolBox = static_cast<ToolBox *>(pWindow); - } - if ( pToolBox ) - { - pToolBox->SetButtonType( rElement.m_nStyle ); - if ( rElement.m_bNoClose ) - pToolBox->SetFloatStyle( pToolBox->GetFloatStyle() & ~WB_CLOSEABLE ); - } + OUString aText = pWindow->GetText(); + if ( aText.isEmpty() ) + pWindow->SetText( rElement.m_aUIName ); + if ( rElement.m_bNoClose ) + pWindow->SetStyle( pWindow->GetStyle() & ~WB_CLOSEABLE ); + if ( pWindow->GetType() == WindowType::TOOLBOX ) + pToolBox = static_cast<ToolBox *>(pWindow); } - - if ( rElement.m_bFloating ) + if ( pToolBox ) { - if ( pWindow ) - { - SolarMutexGuard aGuard; - OUString aText = pWindow->GetText(); - if ( aText.isEmpty() ) - pWindow->SetText( rElement.m_aUIName ); - } + pToolBox->SetButtonType( rElement.m_nStyle ); + if ( rElement.m_bNoClose ) + pToolBox->SetFloatStyle( pToolBox->GetFloatStyle() & ~WB_CLOSEABLE ); + } + } - awt::Point aPos(rElement.m_aFloatingData.m_aPos); - bool bWriteData( false ); - bool bUndefPos = hasDefaultPosValue( rElement.m_aFloatingData.m_aPos ); - bool bSetSize = ( rElement.m_aFloatingData.m_aSize.Width != 0 && - rElement.m_aFloatingData.m_aSize.Height != 0 ); - rDockWindow->setFloatingMode( true ); - if ( bUndefPos ) - { - aPos = implts_findNextCascadeFloatingPos(); - rElement.m_aFloatingData.m_aPos = aPos; // set new cascaded position - bWriteData = true; - } + if ( rElement.m_bFloating ) + { + if ( pWindow ) + { + SolarMutexGuard aGuard; + OUString aText = pWindow->GetText(); + if ( aText.isEmpty() ) + pWindow->SetText( rElement.m_aUIName ); + } - if( bSetSize ) - xWindow->setOutputSize(rElement.m_aFloatingData.m_aSize); - else - { - if( pToolBox ) - { - // set an optimal initial floating size - SolarMutexGuard aGuard; - ::Size aSize( pToolBox->CalcFloatingWindowSizePixel() ); - pToolBox->SetOutputSizePixel( aSize ); - } - } + awt::Point aPos(rElement.m_aFloatingData.m_aPos); + bool bWriteData( false ); + bool bUndefPos = hasDefaultPosValue( rElement.m_aFloatingData.m_aPos ); + bool bSetSize = ( rElement.m_aFloatingData.m_aSize.Width != 0 && + rElement.m_aFloatingData.m_aSize.Height != 0 ); + rDockWindow->setFloatingMode( true ); + if ( bUndefPos ) + { + aPos = implts_findNextCascadeFloatingPos(); + rElement.m_aFloatingData.m_aPos = aPos; // set new cascaded position + bWriteData = true; + } - // #i60882# IMPORTANT: Set position after size as it is - // possible that we position some part of the toolbar - // outside of the desktop. A default constructed toolbar - // always has one line. Now VCL automatically - // position the toolbar back into the desktop. Therefore - // we resize the toolbar with the new (wrong) position. - // To fix this problem we have to set the size BEFORE the - // position. - xWindow->setPosSize( aPos.X, aPos.Y, 0, 0, awt::PosSize::POS ); - - if ( bWriteData ) - implts_writeWindowStateData( rElement ); - if ( bShowElement && pWindow ) + if( bSetSize ) + xWindow->setOutputSize(rElement.m_aFloatingData.m_aSize); + else + { + if( pToolBox ) { + // set an optimal initial floating size SolarMutexGuard aGuard; - pWindow->Show( true, ShowFlags::NoFocusChange | ShowFlags::NoActivate ); + ::Size aSize( pToolBox->CalcFloatingWindowSizePixel() ); + pToolBox->SetOutputSizePixel( aSize ); } } - else + + // #i60882# IMPORTANT: Set position after size as it is + // possible that we position some part of the toolbar + // outside of the desktop. A default constructed toolbar + // always has one line. Now VCL automatically + // position the toolbar back into the desktop. Therefore + // we resize the toolbar with the new (wrong) position. + // To fix this problem we have to set the size BEFORE the + // position. + xWindow->setPosSize( aPos.X, aPos.Y, 0, 0, awt::PosSize::POS ); + + if ( bWriteData ) + implts_writeWindowStateData( rElement ); + if ( bShowElement && pWindow ) { - bool bSetSize( false ); - awt::Point aDockPos; - ::Point aPixelPos; - ::Size aSize; + SolarMutexGuard aGuard; + pWindow->Show( true, ShowFlags::NoFocusChange | ShowFlags::NoActivate ); + } + } + else + { + bool bSetSize( false ); + awt::Point aDockPos; + ::Point aPixelPos; + ::Size aSize; - if ( pToolBox ) + if ( pToolBox ) + { + SolarMutexGuard aGuard; + pToolBox->SetAlign( ImplConvertAlignment(rElement.m_aDockedData.m_nDockedArea ) ); + pToolBox->SetLineCount( 1 ); + rDockWindow->setFloatingMode( false ); + if ( rElement.m_aDockedData.m_bLocked ) + rDockWindow->lock(); + aSize = pToolBox->CalcWindowSizePixel(); + bSetSize = true; + + if ( isDefaultPos( rElement.m_aDockedData.m_aPos )) { - SolarMutexGuard aGuard; - pToolBox->SetAlign( ImplConvertAlignment(rElement.m_aDockedData.m_nDockedArea ) ); - pToolBox->SetLineCount( 1 ); - rDockWindow->setFloatingMode( false ); - if ( rElement.m_aDockedData.m_bLocked ) - rDockWindow->lock(); - aSize = pToolBox->CalcWindowSizePixel(); - bSetSize = true; - - if ( isDefaultPos( rElement.m_aDockedData.m_aPos )) - { - implts_findNextDockingPos( rElement.m_aDockedData.m_nDockedArea, aSize, aDockPos, aPixelPos ); - rElement.m_aDockedData.m_aPos = aDockPos; - } + implts_findNextDockingPos( rElement.m_aDockedData.m_nDockedArea, aSize, aDockPos, aPixelPos ); + rElement.m_aDockedData.m_aPos = aDockPos; } + } - xWindow->setPosSize( aPixelPos.X(), aPixelPos.Y(), 0, 0, awt::PosSize::POS ); - if( bSetSize ) - xWindow->setOutputSize( AWTSize( aSize) ); + xWindow->setPosSize( aPixelPos.X(), aPixelPos.Y(), 0, 0, awt::PosSize::POS ); + if( bSetSize ) + xWindow->setOutputSize( AWTSize( aSize) ); - if ( pWindow ) - { - SolarMutexGuard aGuard; - if ( !bShowElement ) - pWindow->Hide(); - } + if ( pWindow ) + { + SolarMutexGuard aGuard; + if ( !bShowElement ) + pWindow->Hide(); } } } @@ -1566,52 +1567,52 @@ void ToolbarLayoutManager::implts_writeWindowStateData( const UIElement& rElemen } } - if ( bPersistent && xPersistentWindowState.is() ) + if ( !(bPersistent && xPersistentWindowState.is()) ) + return; + + try { - try + uno::Sequence< beans::PropertyValue > aWindowState( 9 ); + + aWindowState[0].Name = WINDOWSTATE_PROPERTY_DOCKED; + aWindowState[0].Value <<= !rElementData.m_bFloating; + aWindowState[1].Name = WINDOWSTATE_PROPERTY_VISIBLE; + aWindowState[1].Value <<= rElementData.m_bVisible; + aWindowState[2].Name = WINDOWSTATE_PROPERTY_DOCKINGAREA; + aWindowState[2].Value <<= rElementData.m_aDockedData.m_nDockedArea; + + awt::Point aPos = rElementData.m_aDockedData.m_aPos; + aWindowState[3].Name = WINDOWSTATE_PROPERTY_DOCKPOS; + aWindowState[3].Value <<= aPos; + + aPos = rElementData.m_aFloatingData.m_aPos; + aWindowState[4].Name = WINDOWSTATE_PROPERTY_POS; + aWindowState[4].Value <<= aPos; + + aWindowState[5].Name = WINDOWSTATE_PROPERTY_SIZE; + aWindowState[5].Value <<= rElementData.m_aFloatingData.m_aSize; + aWindowState[6].Name = WINDOWSTATE_PROPERTY_UINAME; + aWindowState[6].Value <<= rElementData.m_aUIName; + aWindowState[7].Name = WINDOWSTATE_PROPERTY_LOCKED; + aWindowState[7].Value <<= rElementData.m_aDockedData.m_bLocked; + aWindowState[8].Name = WINDOWSTATE_PROPERTY_STYLE; + aWindowState[8].Value <<= static_cast<sal_uInt16>(rElementData.m_nStyle); + + OUString aName = rElementData.m_aName; + if ( xPersistentWindowState->hasByName( aName )) { - uno::Sequence< beans::PropertyValue > aWindowState( 9 ); - - aWindowState[0].Name = WINDOWSTATE_PROPERTY_DOCKED; - aWindowState[0].Value <<= !rElementData.m_bFloating; - aWindowState[1].Name = WINDOWSTATE_PROPERTY_VISIBLE; - aWindowState[1].Value <<= rElementData.m_bVisible; - aWindowState[2].Name = WINDOWSTATE_PROPERTY_DOCKINGAREA; - aWindowState[2].Value <<= rElementData.m_aDockedData.m_nDockedArea; - - awt::Point aPos = rElementData.m_aDockedData.m_aPos; - aWindowState[3].Name = WINDOWSTATE_PROPERTY_DOCKPOS; - aWindowState[3].Value <<= aPos; - - aPos = rElementData.m_aFloatingData.m_aPos; - aWindowState[4].Name = WINDOWSTATE_PROPERTY_POS; - aWindowState[4].Value <<= aPos; - - aWindowState[5].Name = WINDOWSTATE_PROPERTY_SIZE; - aWindowState[5].Value <<= rElementData.m_aFloatingData.m_aSize; - aWindowState[6].Name = WINDOWSTATE_PROPERTY_UINAME; - aWindowState[6].Value <<= rElementData.m_aUIName; - aWindowState[7].Name = WINDOWSTATE_PROPERTY_LOCKED; - aWindowState[7].Value <<= rElementData.m_aDockedData.m_bLocked; - aWindowState[8].Name = WINDOWSTATE_PROPERTY_STYLE; - aWindowState[8].Value <<= static_cast<sal_uInt16>(rElementData.m_nStyle); - - OUString aName = rElementData.m_aName; - if ( xPersistentWindowState->hasByName( aName )) - { - uno::Reference< container::XNameReplace > xReplace( xPersistentWindowState, uno::UNO_QUERY ); - xReplace->replaceByName( aName, uno::makeAny( aWindowState )); - } - else - { - uno::Reference< container::XNameContainer > xInsert( xPersistentWindowState, uno::UNO_QUERY ); - xInsert->insertByName( aName, uno::makeAny( aWindowState )); - } + uno::Reference< container::XNameReplace > xReplace( xPersistentWindowState, uno::UNO_QUERY ); + xReplace->replaceByName( aName, uno::makeAny( aWindowState )); } - catch (const uno::Exception&) + else { + uno::Reference< container::XNameContainer > xInsert( xPersistentWindowState, uno::UNO_QUERY ); + xInsert->insertByName( aName, uno::makeAny( aWindowState )); } } + catch (const uno::Exception&) + { + } } /****************************************************************************** @@ -2865,103 +2866,103 @@ void ToolbarLayoutManager::implts_calcDockingPosSize( // Docking outside of our docking window area => // Users want to dock before/after first/last docked element or to an empty docking area - if ( bOpOutsideOfDockingArea ) + if ( !bOpOutsideOfDockingArea ) + return; + + // set correct size for docking + implts_setTrackingRect( eDockedArea, rMousePos, aTrackingRect ); + rTrackingRect = aTrackingRect; + + if ( bHorizontalDockArea ) { - // set correct size for docking - implts_setTrackingRect( eDockedArea, rMousePos, aTrackingRect ); - rTrackingRect = aTrackingRect; + sal_Int32 nPosX( std::max( sal_Int32( rTrackingRect.Left()), sal_Int32( 0 ))); + if (( nPosX + rTrackingRect.getWidth()) > aContainerWinSize.Width() ) + nPosX = std::min( nPosX, + std::max( sal_Int32( aContainerWinSize.Width() - rTrackingRect.getWidth() ), + sal_Int32( 0 ))); - if ( bHorizontalDockArea ) + sal_Int32 nSize = std::min( aContainerWinSize.Width(), rTrackingRect.getWidth() ); + sal_Int32 nDockHeight = std::max( static_cast<sal_Int32>(aDockingAreaRect.getHeight()), sal_Int32( 0 )); + if ( nDockHeight == 0 ) { - sal_Int32 nPosX( std::max( sal_Int32( rTrackingRect.Left()), sal_Int32( 0 ))); - if (( nPosX + rTrackingRect.getWidth()) > aContainerWinSize.Width() ) - nPosX = std::min( nPosX, - std::max( sal_Int32( aContainerWinSize.Width() - rTrackingRect.getWidth() ), - sal_Int32( 0 ))); - - sal_Int32 nSize = std::min( aContainerWinSize.Width(), rTrackingRect.getWidth() ); - sal_Int32 nDockHeight = std::max( static_cast<sal_Int32>(aDockingAreaRect.getHeight()), sal_Int32( 0 )); - if ( nDockHeight == 0 ) - { - sal_Int32 nPosY( std::max( aDockingAreaRect.Top(), aDockingAreaRect.Bottom() )); - if ( eDockedArea == ui::DockingArea_DOCKINGAREA_BOTTOM ) - nPosY -= rTrackingRect.getHeight(); - rTrackingRect.SetPos( Point( nPosX, nPosY )); + sal_Int32 nPosY( std::max( aDockingAreaRect.Top(), aDockingAreaRect.Bottom() )); + if ( eDockedArea == ui::DockingArea_DOCKINGAREA_BOTTOM ) + nPosY -= rTrackingRect.getHeight(); + rTrackingRect.SetPos( Point( nPosX, nPosY )); + rUIElement.m_aDockedData.m_aPos.Y = 0; + } + else if ( rMousePos.Y() < ( aDockingAreaRect.Top() + ( nDockHeight / 2 ))) + { + rTrackingRect.SetPos( Point( nPosX, aDockingAreaRect.Top() - rTrackingRect.getHeight() )); + if ( eDockedArea == ui::DockingArea_DOCKINGAREA_TOP ) rUIElement.m_aDockedData.m_aPos.Y = 0; - } - else if ( rMousePos.Y() < ( aDockingAreaRect.Top() + ( nDockHeight / 2 ))) - { - rTrackingRect.SetPos( Point( nPosX, aDockingAreaRect.Top() - rTrackingRect.getHeight() )); - if ( eDockedArea == ui::DockingArea_DOCKINGAREA_TOP ) - rUIElement.m_aDockedData.m_aPos.Y = 0; - else - rUIElement.m_aDockedData.m_aPos.Y = ( nMaxRowCol >= 0 ) ? nMaxRowCol+1 : 0; - rDockingOperation = DOCKOP_BEFORE_COLROW; - } else - { - rTrackingRect.SetPos( Point( nPosX, aDockingAreaRect.Bottom() )); - if ( eDockedArea == ui::DockingArea_DOCKINGAREA_TOP ) - rUIElement.m_aDockedData.m_aPos.Y = ( nMaxRowCol >= 0 ) ? nMaxRowCol+1 : 0; - else - rUIElement.m_aDockedData.m_aPos.Y = 0; - rDockingOperation = DOCKOP_AFTER_COLROW; - } - rTrackingRect.setWidth( nSize ); - - { - SolarMutexGuard aGuard; - nPosX = pDockingAreaWindow->ScreenToOutputPixel( - pContainerWindow->OutputToScreenPixel( rTrackingRect.TopLeft() )).X(); - } - rUIElement.m_aDockedData.m_aPos.X = nPosX; + rUIElement.m_aDockedData.m_aPos.Y = ( nMaxRowCol >= 0 ) ? nMaxRowCol+1 : 0; + rDockingOperation = DOCKOP_BEFORE_COLROW; } else { - sal_Int32 nMaxDockingAreaHeight = std::max<sal_Int32>( 0, nMaxLeftRightDockAreaSize ); - sal_Int32 nPosY( std::max<sal_Int32>( aTrackingRect.Top(), nTopDockingAreaSize )); - if (( nPosY + aTrackingRect.getHeight()) > ( nTopDockingAreaSize + nMaxDockingAreaHeight )) - nPosY = std::min( nPosY, - std::max<sal_Int32>( nTopDockingAreaSize + ( nMaxDockingAreaHeight - aTrackingRect.getHeight() ), - nTopDockingAreaSize )); + rTrackingRect.SetPos( Point( nPosX, aDockingAreaRect.Bottom() )); + if ( eDockedArea == ui::DockingArea_DOCKINGAREA_TOP ) + rUIElement.m_aDockedData.m_aPos.Y = ( nMaxRowCol >= 0 ) ? nMaxRowCol+1 : 0; + else + rUIElement.m_aDockedData.m_aPos.Y = 0; + rDockingOperation = DOCKOP_AFTER_COLROW; + } + rTrackingRect.setWidth( nSize ); - sal_Int32 nSize = std::min( nMaxDockingAreaHeight, static_cast<sal_Int32>(aTrackingRect.getHeight()) ); - sal_Int32 nDockWidth = std::max( static_cast<sal_Int32>(aDockingAreaRect.getWidth()), sal_Int32( 0 )); - if ( nDockWidth == 0 ) - { - sal_Int32 nPosX( std::max( aDockingAreaRect.Left(), aDockingAreaRect.Right() )); - if ( eDockedArea == ui::DockingArea_DOCKINGAREA_RIGHT ) - nPosX -= rTrackingRect.getWidth(); - rTrackingRect.SetPos( Point( nPosX, nPosY )); + { + SolarMutexGuard aGuard; + nPosX = pDockingAreaWindow->ScreenToOutputPixel( + pContainerWindow->OutputToScreenPixel( rTrackingRect.TopLeft() )).X(); + } + rUIElement.m_aDockedData.m_aPos.X = nPosX; + } + else + { + sal_Int32 nMaxDockingAreaHeight = std::max<sal_Int32>( 0, nMaxLeftRightDockAreaSize ); + sal_Int32 nPosY( std::max<sal_Int32>( aTrackingRect.Top(), nTopDockingAreaSize )); + if (( nPosY + aTrackingRect.getHeight()) > ( nTopDockingAreaSize + nMaxDockingAreaHeight )) + nPosY = std::min( nPosY, + std::max<sal_Int32>( nTopDockingAreaSize + ( nMaxDockingAreaHeight - aTrackingRect.getHeight() ), + nTopDockingAreaSize )); + + sal_Int32 nSize = std::min( nMaxDockingAreaHeight, static_cast<sal_Int32>(aTrackingRect.getHeight()) ); + sal_Int32 nDockWidth = std::max( static_cast<sal_Int32>(aDockingAreaRect.getWidth()), sal_Int32( 0 )); + if ( nDockWidth == 0 ) + { + sal_Int32 nPosX( std::max( aDockingAreaRect.Left(), aDockingAreaRect.Right() )); + if ( eDockedArea == ui::DockingArea_DOCKINGAREA_RIGHT ) + nPosX -= rTrackingRect.getWidth(); + rTrackingRect.SetPos( Point( nPosX, nPosY )); + rUIElement.m_aDockedData.m_aPos.X = 0; + } + else if ( rMousePos.X() < ( aDockingAreaRect.Left() + ( nDockWidth / 2 ))) + { + rTrackingRect.SetPos( Point( aDockingAreaRect.Left() - rTrackingRect.getWidth(), nPosY )); + if ( eDockedArea == ui::DockingArea_DOCKINGAREA_LEFT ) rUIElement.m_aDockedData.m_aPos.X = 0; - } - else if ( rMousePos.X() < ( aDockingAreaRect.Left() + ( nDockWidth / 2 ))) - { - rTrackingRect.SetPos( Point( aDockingAreaRect.Left() - rTrackingRect.getWidth(), nPosY )); - if ( eDockedArea == ui::DockingArea_DOCKINGAREA_LEFT ) - rUIElement.m_aDockedData.m_aPos.X = 0; - else - rUIElement.m_aDockedData.m_aPos.X = ( nMaxRowCol >= 0 ) ? nMaxRowCol+1 : 0; - rDockingOperation = DOCKOP_BEFORE_COLROW; - } else - { - rTrackingRect.SetPos( Point( aDockingAreaRect.Right(), nPosY )); - if ( eDockedArea == ui::DockingArea_DOCKINGAREA_LEFT ) - rUIElement.m_aDockedData.m_aPos.X = ( nMaxRowCol >= 0 ) ? nMaxRowCol+1 : 0; - else - rUIElement.m_aDockedData.m_aPos.X = 0; - rDockingOperation = DOCKOP_AFTER_COLROW; - } - rTrackingRect.setHeight( nSize ); + rUIElement.m_aDockedData.m_aPos.X = ( nMaxRowCol >= 0 ) ? nMaxRowCol+1 : 0; + rDockingOperation = DOCKOP_BEFORE_COLROW; + } + else + { + rTrackingRect.SetPos( Point( aDockingAreaRect.Right(), nPosY )); + if ( eDockedArea == ui::DockingArea_DOCKINGAREA_LEFT ) + rUIElement.m_aDockedData.m_aPos.X = ( nMaxRowCol >= 0 ) ? nMaxRowCol+1 : 0; + else + rUIElement.m_aDockedData.m_aPos.X = 0; + rDockingOperation = DOCKOP_AFTER_COLROW; + } + rTrackingRect.setHeight( nSize ); - { - SolarMutexGuard aGuard; - nPosY = pDockingAreaWindow->ScreenToOutputPixel( - pContainerWindow->OutputToScreenPixel( rTrackingRect.TopLeft() )).Y(); - } - rUIElement.m_aDockedData.m_aPos.Y = nPosY; + { + SolarMutexGuard aGuard; + nPosY = pDockingAreaWindow->ScreenToOutputPixel( + pContainerWindow->OutputToScreenPixel( rTrackingRect.TopLeft() )).Y(); } + rUIElement.m_aDockedData.m_aPos.Y = nPosY; } } @@ -3132,55 +3133,55 @@ void ToolbarLayoutManager::implts_renumberRowColumnData( /* SAFE AREA ----------------------------------------------------------------------------------------------- */ // We have to change the persistent window state part - if ( xPersistentWindowState.is() ) + if ( !xPersistentWindowState.is() ) + return; + + try { - try + uno::Sequence< OUString > aWindowElements = xPersistentWindowState->getElementNames(); + for ( sal_Int32 i = 0; i < aWindowElements.getLength(); i++ ) { - uno::Sequence< OUString > aWindowElements = xPersistentWindowState->getElementNames(); - for ( sal_Int32 i = 0; i < aWindowElements.getLength(); i++ ) + if ( rUIElement.m_aName != aWindowElements[i] ) { - if ( rUIElement.m_aName != aWindowElements[i] ) + try { - try - { - uno::Sequence< beans::PropertyValue > aPropValueSeq; - awt::Point aDockedPos; - ui::DockingArea nDockedArea( ui::DockingArea_DOCKINGAREA_DEFAULT ); + uno::Sequence< beans::PropertyValue > aPropValueSeq; + awt::Point aDockedPos; + ui::DockingArea nDockedArea( ui::DockingArea_DOCKINGAREA_DEFAULT ); - xPersistentWindowState->getByName( aWindowElements[i] ) >>= aPropValueSeq; - for ( sal_Int32 j = 0; j < aPropValueSeq.getLength(); j++ ) - { - if ( aPropValueSeq[j].Name == WINDOWSTATE_PROPERTY_DOCKINGAREA ) - aPropValueSeq[j].Value >>= nDockedArea; - else if ( aPropValueSeq[j].Name == WINDOWSTATE_PROPERTY_DOCKPOS ) - aPropValueSeq[j].Value >>= aDockedPos; - } - - // Don't change toolbars without a valid docking position! - if ( isDefaultPos( aDockedPos )) - continue; + xPersistentWindowState->getByName( aWindowElements[i] ) >>= aPropValueSeq; + for ( sal_Int32 j = 0; j < aPropValueSeq.getLength(); j++ ) + { + if ( aPropValueSeq[j].Name == WINDOWSTATE_PROPERTY_DOCKINGAREA ) + aPropValueSeq[j].Value >>= nDockedArea; + else if ( aPropValueSeq[j].Name == WINDOWSTATE_PROPERTY_DOCKPOS ) + aPropValueSeq[j].Value >>= aDockedPos; + } - sal_Int32 nWindowRowCol = bHorzDockingArea ? aDockedPos.Y : aDockedPos.X; - if (( nDockedArea == eDockingArea ) && ( nWindowRowCol >= nRowCol )) - { - if ( bHorzDockingArea ) - aDockedPos.Y += 1; - else - aDockedPos.X += 1; + // Don't change toolbars without a valid docking position! + if ( isDefaultPos( aDockedPos )) + continue; - uno::Reference< container::XNameReplace > xReplace( xPersistentWindowState, uno::UNO_QUERY ); - xReplace->replaceByName( aWindowElements[i], makeAny( aPropValueSeq )); - } - } - catch (const uno::Exception&) + sal_Int32 nWindowRowCol = bHorzDockingArea ? aDockedPos.Y : aDockedPos.X; + if (( nDockedArea == eDockingArea ) && ( nWindowRowCol >= nRowCol )) { + if ( bHorzDockingArea ) + aDockedPos.Y += 1; + else + aDockedPos.X += 1; + + uno::Reference< container::XNameReplace > xReplace( xPersistentWindowState, uno::UNO_QUERY ); + xReplace->replaceByName( aWindowElements[i], makeAny( aPropValueSeq )); } } + catch (const uno::Exception&) + { + } } } - catch (const uno::Exception&) - { - } + } + catch (const uno::Exception&) + { } } @@ -3197,42 +3198,42 @@ void SAL_CALL ToolbarLayoutManager::windowResized( const awt::WindowEvent& aEven // operations. We will store the new position and size in the docking handlers. // Do not do anything if we are in the middle of our layouting process. We will adapt the position // and size of the user interface elements. - if ( !bLocked && !bLayoutInProgress ) - { - bool bNotify( false ); - uno::Reference< awt::XWindow > xWindow( aEvent.Source, uno::UNO_QUERY ); + if ( bLocked || bLayoutInProgress ) + return; - UIElement aUIElement = implts_findToolbar( aEvent.Source ); - if ( aUIElement.m_xUIElement.is() ) - { - if ( aUIElement.m_bFloating ) - { - uno::Reference< awt::XWindow2 > xWindow2( xWindow, uno::UNO_QUERY ); + bool bNotify( false ); + uno::Reference< awt::XWindow > xWindow( aEvent.Source, uno::UNO_QUERY ); - if( xWindow2.is() ) - { - awt::Rectangle aPos = xWindow2->getPosSize(); - awt::Size aSize = xWindow2->getOutputSize(); // always use output size for consistency - bool bVisible = xWindow2->isVisible(); - - // update element data - aUIElement.m_aFloatingData.m_aPos = awt::Point(aPos.X, aPos.Y); - aUIElement.m_aFloatingData.m_aSize = aSize; - aUIElement.m_bVisible = bVisible; - } + UIElement aUIElement = implts_findToolbar( aEvent.Source ); + if ( aUIElement.m_xUIElement.is() ) + { + if ( aUIElement.m_bFloating ) + { + uno::Reference< awt::XWindow2 > xWindow2( xWindow, uno::UNO_QUERY ); - implts_writeWindowStateData( aUIElement ); - } - else + if( xWindow2.is() ) { - implts_setLayoutDirty(); - bNotify = true; + awt::Rectangle aPos = xWindow2->getPosSize(); + awt::Size aSize = xWindow2->getOutputSize(); // always use output size for consistency + bool bVisible = xWindow2->isVisible(); + + // update element data + aUIElement.m_aFloatingData.m_aPos = awt::Point(aPos.X, aPos.Y); + aUIElement.m_aFloatingData.m_aSize = aSize; + aUIElement.m_bVisible = bVisible; } - } - if ( bNotify ) - m_pParentLayouter->requestLayout(); + implts_writeWindowStateData( aUIElement ); + } + else + { + implts_setLayoutDirty(); + bNotify = true; + } } + + if ( bNotify ) + m_pParentLayouter->requestLayout(); } void SAL_CALL ToolbarLayoutManager::windowMoved( const awt::WindowEvent& /*aEvent*/ ) @@ -3771,19 +3772,19 @@ void SAL_CALL ToolbarLayoutManager::closed( const lang::EventObject& e ) } // destroy element - if ( !aName.isEmpty() ) - { - implts_writeWindowStateData( aUIElement ); - destroyToolbar( aName ); + if ( aName.isEmpty() ) + return; - SolarMutexClearableGuard aReadLock; - bool bLayoutDirty = m_bLayoutDirty; - LayoutManager* pParentLayouter( m_pParentLayouter ); - aReadLock.clear(); + implts_writeWindowStateData( aUIElement ); + destroyToolbar( aName ); - if ( bLayoutDirty && pParentLayouter ) - pParentLayouter->requestLayout(); - } + SolarMutexClearableGuard aReadLock; + bool bLayoutDirty = m_bLayoutDirty; + LayoutManager* pParentLayouter( m_pParentLayouter ); + aReadLock.clear(); + + if ( bLayoutDirty && pParentLayouter ) + pParentLayouter->requestLayout(); } void SAL_CALL ToolbarLayoutManager::endPopupMode( const awt::EndPopupModeEvent& /*e*/ ) @@ -3864,41 +3865,41 @@ void SAL_CALL ToolbarLayoutManager::elementRemoved( const ui::ConfigurationEvent UIElement aUIElement = implts_findToolbar( rEvent.ResourceURL ); uno::Reference< ui::XUIElementSettings > xElementSettings( aUIElement.m_xUIElement, uno::UNO_QUERY ); - if ( xElementSettings.is() ) - { - bool bNoSettings( false ); - OUString aConfigSourcePropName( "ConfigurationSource" ); - uno::Reference< uno::XInterface > xElementCfgMgr; - uno::Reference< beans::XPropertySet > xPropSet( xElementSettings, uno::UNO_QUERY ); + if ( !xElementSettings.is() ) + return; - if ( xPropSet.is() ) - xPropSet->getPropertyValue( aConfigSourcePropName ) >>= xElementCfgMgr; + bool bNoSettings( false ); + OUString aConfigSourcePropName( "ConfigurationSource" ); + uno::Reference< uno::XInterface > xElementCfgMgr; + uno::Reference< beans::XPropertySet > xPropSet( xElementSettings, uno::UNO_QUERY ); + + if ( xPropSet.is() ) + xPropSet->getPropertyValue( aConfigSourcePropName ) >>= xElementCfgMgr; - if ( !xElementCfgMgr.is() ) - return; + if ( !xElementCfgMgr.is() ) + return; - // Check if the same UI configuration manager has changed => check further - if ( rEvent.Source == xElementCfgMgr ) + // Check if the same UI configuration manager has changed => check further + if ( rEvent.Source == xElementCfgMgr ) + { + // Same UI configuration manager where our element has its settings + if ( rEvent.Source == uno::Reference< uno::XInterface >( xDocCfgMgr, uno::UNO_QUERY )) { - // Same UI configuration manager where our element has its settings - if ( rEvent.Source == uno::Reference< uno::XInterface >( xDocCfgMgr, uno::UNO_QUERY )) + // document settings removed + if ( xModuleCfgMgr->hasSettings( rEvent.ResourceURL )) { - // document settings removed - if ( xModuleCfgMgr->hasSettings( rEvent.ResourceURL )) - { - xPropSet->setPropertyValue( aConfigSourcePropName, makeAny( xModuleCfgMgr )); - xElementSettings->updateSettings(); - return; - } + xPropSet->setPropertyValue( aConfigSourcePropName, makeAny( xModuleCfgMgr )); + xElementSettings->updateSettings(); + return; } - - bNoSettings = true; } - // No settings anymore, element must be destroyed - if ( xContainerWindow.is() && bNoSettings ) - destroyToolbar( rEvent.ResourceURL ); + bNoSettings = true; } + + // No settings anymore, element must be destroyed + if ( xContainerWindow.is() && bNoSettings ) + destroyToolbar( rEvent.ResourceURL ); } void SAL_CALL ToolbarLayoutManager::elementReplaced( const ui::ConfigurationEvent& rEvent ) @@ -3906,32 +3907,32 @@ void SAL_CALL ToolbarLayoutManager::elementReplaced( const ui::ConfigurationEven UIElement aUIElement = implts_findToolbar( rEvent.ResourceURL ); uno::Reference< ui::XUIElementSettings > xElementSettings( aUIElement.m_xUIElement, uno::UNO_QUERY ); - if ( xElementSettings.is() ) - { - uno::Reference< uno::XInterface > xElementCfgMgr; - uno::Reference< beans::XPropertySet > xPropSet( xElementSettings, uno::UNO_QUERY ); + if ( !xElementSettings.is() ) + return; - if ( xPropSet.is() ) - xPropSet->getPropertyValue( "ConfigurationSource" ) >>= xElementCfgMgr; + uno::Reference< uno::XInterface > xElementCfgMgr; + uno::Reference< beans::XPropertySet > xPropSet( xElementSettings, uno::UNO_QUERY ); - if ( !xElementCfgMgr.is() ) - return; + if ( xPropSet.is() ) + xPropSet->getPropertyValue( "ConfigurationSource" ) >>= xElementCfgMgr; - // Check if the same UI configuration manager has changed => update settings - if ( rEvent.Source == xElementCfgMgr ) - { - xElementSettings->updateSettings(); + if ( !xElementCfgMgr.is() ) + return; - SolarMutexClearableGuard aWriteLock; - bool bNotify = !aUIElement.m_bFloating; - m_bLayoutDirty = bNotify; - LayoutManager* pParentLayouter( m_pParentLayouter ); - aWriteLock.clear(); + // Check if the same UI configuration manager has changed => update settings + if ( rEvent.Source != xElementCfgMgr ) + return; - if ( bNotify && pParentLayouter ) - pParentLayouter->requestLayout(); - } - } + xElementSettings->updateSettings(); + + SolarMutexClearableGuard aWriteLock; + bool bNotify = !aUIElement.m_bFloating; + m_bLayoutDirty = bNotify; + LayoutManager* pParentLayouter( m_pParentLayouter ); + aWriteLock.clear(); + + if ( bNotify && pParentLayouter ) + pParentLayouter->requestLayout(); } uno::Reference< ui::XUIElement > ToolbarLayoutManager::getToolbar( const OUString& aName ) diff --git a/framework/source/loadenv/loadenv.cxx b/framework/source/loadenv/loadenv.cxx index 12368afce638..b25b0fea8f3a 100644 --- a/framework/source/loadenv/loadenv.cxx +++ b/framework/source/loadenv/loadenv.cxx @@ -1674,22 +1674,22 @@ void LoadEnv::impl_makeFrameWindowVisible(const css::uno::Reference< css::awt::X SolarMutexGuard aSolarGuard; VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow(xWindow); - if ( pWindow ) - { - bool const preview( m_lMediaDescriptor.getUnpackedValueOrDefault( - utl::MediaDescriptor::PROP_PREVIEW(), false) ); + if ( !pWindow ) + return; - bool bForceFrontAndFocus(false); - if ( !preview ) - { - bForceFrontAndFocus = officecfg::Office::Common::View::NewDocumentHandling::ForceFocusAndToFront::get(xContext); - } + bool const preview( m_lMediaDescriptor.getUnpackedValueOrDefault( + utl::MediaDescriptor::PROP_PREVIEW(), false) ); - if( pWindow->IsVisible() && (bForceFrontAndFocus || bForceToFront) ) - pWindow->ToTop( ToTopFlags::RestoreWhenMin | ToTopFlags::ForegroundTask ); - else - pWindow->Show(true, (bForceFrontAndFocus || bForceToFront) ? ShowFlags::ForegroundTask : ShowFlags::NONE ); + bool bForceFrontAndFocus(false); + if ( !preview ) + { + bForceFrontAndFocus = officecfg::Office::Common::View::NewDocumentHandling::ForceFocusAndToFront::get(xContext); } + + if( pWindow->IsVisible() && (bForceFrontAndFocus || bForceToFront) ) + pWindow->ToTop( ToTopFlags::RestoreWhenMin | ToTopFlags::ForegroundTask ); + else + pWindow->Show(true, (bForceFrontAndFocus || bForceToFront) ? ShowFlags::ForegroundTask : ShowFlags::NONE ); } void LoadEnv::impl_applyPersistentWindowState(const css::uno::Reference< css::awt::XWindow >& xWindow) diff --git a/framework/source/services/ContextChangeEventMultiplexer.cxx b/framework/source/services/ContextChangeEventMultiplexer.cxx index 4dbc182ceaa5..d7e59bda0b87 100644 --- a/framework/source/services/ContextChangeEventMultiplexer.cxx +++ b/framework/source/services/ContextChangeEventMultiplexer.cxx @@ -161,32 +161,31 @@ void SAL_CALL ContextChangeEventMultiplexer::addContextChangeEventListener ( // Send out an initial event that informs the new listener about // the current context. - if (rxEventFocus.is() && pFocusDescriptor!=nullptr) + if (!(rxEventFocus.is() && pFocusDescriptor!=nullptr)) + return; + + if (pFocusDescriptor->msCurrentApplicationName.isEmpty() && pFocusDescriptor->msCurrentContextName.isEmpty() + && rxEventFocus.is()) { - if (pFocusDescriptor->msCurrentApplicationName.isEmpty() && pFocusDescriptor->msCurrentContextName.isEmpty() - && rxEventFocus.is()) + Reference< lang::XServiceInfo > xServInfo( rxEventFocus, uno::UNO_QUERY ); + if( xServInfo.is() && xServInfo->getImplementationName() == "com.sun.star.comp.chart2.ChartController") { - Reference< lang::XServiceInfo > xServInfo( rxEventFocus, uno::UNO_QUERY ); - if( xServInfo.is() && xServInfo->getImplementationName() == "com.sun.star.comp.chart2.ChartController") - { - css::ui::ContextChangeEventObject aEvent ( - rxEventFocus, - "com.sun.star.chart2.ChartDocument", - "Chart"); - rxListener->notifyContextChangeEvent(aEvent); - - return; - } + css::ui::ContextChangeEventObject aEvent ( + rxEventFocus, + "com.sun.star.chart2.ChartDocument", + "Chart"); + rxListener->notifyContextChangeEvent(aEvent); + return; } - css::ui::ContextChangeEventObject aEvent ( - nullptr, - pFocusDescriptor->msCurrentApplicationName, - pFocusDescriptor->msCurrentContextName); - rxListener->notifyContextChangeEvent(aEvent); - } + + css::ui::ContextChangeEventObject aEvent ( + nullptr, + pFocusDescriptor->msCurrentApplicationName, + pFocusDescriptor->msCurrentContextName); + rxListener->notifyContextChangeEvent(aEvent); } void SAL_CALL ContextChangeEventMultiplexer::removeContextChangeEventListener ( @@ -199,18 +198,18 @@ void SAL_CALL ContextChangeEventMultiplexer::removeContextChangeEventListener ( static_cast<XWeak*>(this), 0); FocusDescriptor* pFocusDescriptor = GetFocusDescriptor(rxEventFocus, false); - if (pFocusDescriptor != nullptr) + if (pFocusDescriptor == nullptr) + return; + + ListenerContainer& rContainer (pFocusDescriptor->maListeners); + const ListenerContainer::iterator iListener ( + ::std::find(rContainer.begin(), rContainer.end(), rxListener)); + if (iListener != rContainer.end()) { - ListenerContainer& rContainer (pFocusDescriptor->maListeners); - const ListenerContainer::iterator iListener ( - ::std::find(rContainer.begin(), rContainer.end(), rxListener)); - if (iListener != rContainer.end()) - { - rContainer.erase(iListener); + rContainer.erase(iListener); - // We hold on to the focus descriptor even when the last listener has been removed. - // This allows us to keep track of the current context and send it to new listeners. - } + // We hold on to the focus descriptor even when the last listener has been removed. + // This allows us to keep track of the current context and send it to new listeners. } } diff --git a/framework/source/services/autorecovery.cxx b/framework/source/services/autorecovery.cxx index da4055e07937..bf08a705aa66 100644 --- a/framework/source/services/autorecovery.cxx +++ b/framework/source/services/autorecovery.cxx @@ -2708,22 +2708,22 @@ void lc_removeLockFile(AutoRecovery::TDocumentInfo const & rInfo) #if !HAVE_FEATURE_MULTIUSER_ENVIRONMENT || HAVE_FEATURE_MACOSX_SANDBOX (void) rInfo; #else - if ( rInfo.Document.is() ) + if ( !rInfo.Document.is() ) + return; + + try { - try - { - css::uno::Reference< css::frame::XStorable > xStore(rInfo.Document, css::uno::UNO_QUERY_THROW); - OUString aURL = xStore->getLocation(); - if ( !aURL.isEmpty() ) - { - ::svt::DocumentLockFile aLockFile( aURL ); - aLockFile.RemoveFile(); - } - } - catch( const css::uno::Exception& ) + css::uno::Reference< css::frame::XStorable > xStore(rInfo.Document, css::uno::UNO_QUERY_THROW); + OUString aURL = xStore->getLocation(); + if ( !aURL.isEmpty() ) { + ::svt::DocumentLockFile aLockFile( aURL ); + aLockFile.RemoveFile(); } } + catch( const css::uno::Exception& ) + { + } #endif } @@ -3496,20 +3496,20 @@ void AutoRecovery::implts_informListener( Job eJob , // inform listener, which are registered for any URLs(!) pListenerForURL = m_lListener.getContainer(sJob); - if(pListenerForURL != nullptr) + if(pListenerForURL == nullptr) + return; + + ::cppu::OInterfaceIteratorHelper pIt(*pListenerForURL); + while(pIt.hasMoreElements()) { - ::cppu::OInterfaceIteratorHelper pIt(*pListenerForURL); - while(pIt.hasMoreElements()) + try { - try - { - css::uno::Reference< css::frame::XStatusListener > xListener(static_cast<css::frame::XStatusListener*>(pIt.next()), css::uno::UNO_QUERY); - xListener->statusChanged(aEvent); - } - catch(const css::uno::RuntimeException&) - { - pIt.remove(); - } + css::uno::Reference< css::frame::XStatusListener > xListener(static_cast<css::frame::XStatusListener*>(pIt.next()), css::uno::UNO_QUERY); + xListener->statusChanged(aEvent); + } + catch(const css::uno::RuntimeException&) + { + pIt.remove(); } } } diff --git a/framework/source/services/frame.cxx b/framework/source/services/frame.cxx index aebeb9fa2503..11881c3ebefb 100644 --- a/framework/source/services/frame.cxx +++ b/framework/source/services/frame.cxx @@ -1319,49 +1319,49 @@ void SAL_CALL XFrameImpl::deactivate() /* UNSAFE AREA --------------------------------------------------------------------------------------------- */ // Work only, if there something to do! - if( eState != E_INACTIVE ) - { + if( eState == E_INACTIVE ) + return; - // 1) Deactivate all active children. - if ( xActiveChild.is() && xActiveChild->isActive() ) - { - xActiveChild->deactivate(); - } - // 2) If I have the focus - I will lost it now. - if( eState == E_FOCUS ) - { - // Set new state INACTIVE(!) and send message to all listener. - // Don't set ACTIVE as new state. This frame is deactivated for next time - due to activate(). - aWriteLock.reset(); - eState = E_ACTIVE; - m_eActiveState = eState; - aWriteLock.clear(); - implts_sendFrameActionEvent( css::frame::FrameAction_FRAME_UI_DEACTIVATING ); - } + // 1) Deactivate all active children. + if ( xActiveChild.is() && xActiveChild->isActive() ) + { + xActiveChild->deactivate(); + } - // 3) If I am active - I will be deactivated now. - if( eState == E_ACTIVE ) - { - // Set new state and send message to all listener. - aWriteLock.reset(); - eState = E_INACTIVE; - m_eActiveState = eState; - aWriteLock.clear(); - implts_sendFrameActionEvent( css::frame::FrameAction_FRAME_DEACTIVATING ); - } + // 2) If I have the focus - I will lost it now. + if( eState == E_FOCUS ) + { + // Set new state INACTIVE(!) and send message to all listener. + // Don't set ACTIVE as new state. This frame is deactivated for next time - due to activate(). + aWriteLock.reset(); + eState = E_ACTIVE; + m_eActiveState = eState; + aWriteLock.clear(); + implts_sendFrameActionEvent( css::frame::FrameAction_FRAME_UI_DEACTIVATING ); + } - // 4) If there is a path from here to my parent... - // ... I am on the top or in the middle of deactivated subtree and action was started here. - // I must deactivate all frames from here to top, which are members of current path. - // Stop, if THESE frame not the active frame of our parent! - if ( xParent.is() && xParent->getActiveFrame() == xThis ) - { - // We MUST break the path - otherwise we will get the focus - not our parent! ... - // Attention: Our parent don't call us again - WE ARE NOT ACTIVE YET! - // [ see step 3 and condition "if ( m_eActiveState!=INACTIVE ) ..." in this method! ] - xParent->deactivate(); - } + // 3) If I am active - I will be deactivated now. + if( eState == E_ACTIVE ) + { + // Set new state and send message to all listener. + aWriteLock.reset(); + eState = E_INACTIVE; + m_eActiveState = eState; + aWriteLock.clear(); + implts_sendFrameActionEvent( css::frame::FrameAction_FRAME_DEACTIVATING ); + } + + // 4) If there is a path from here to my parent... + // ... I am on the top or in the middle of deactivated subtree and action was started here. + // I must deactivate all frames from here to top, which are members of current path. + // Stop, if THESE frame not the active frame of our parent! + if ( xParent.is() && xParent->getActiveFrame() == xThis ) + { + // We MUST break the path - otherwise we will get the focus - not our parent! ... + // Attention: Our parent don't call us again - WE ARE NOT ACTIVE YET! + // [ see step 3 and condition "if ( m_eActiveState!=INACTIVE ) ..." in this method! ] + xParent->deactivate(); } } @@ -2493,33 +2493,33 @@ void SAL_CALL XFrameImpl::windowDeactivated( const css::lang::EventObject& ) aReadLock.clear(); - if( eActiveState != E_INACTIVE ) - { - // Deactivation is always done implicitly by activation of another frame. - // Only if no activation is done, deactivations have to be processed if the activated window - // is a parent window of the last active Window! - SolarMutexClearableGuard aSolarGuard; - vcl::Window* pFocusWindow = Application::GetFocusWindow(); - if ( xContainerWindow.is() && xParent.is() && - !css::uno::Reference< css::frame::XDesktop >( xParent, css::uno::UNO_QUERY ).is() - ) + if( eActiveState == E_INACTIVE ) + return; + + // Deactivation is always done implicitly by activation of another frame. + // Only if no activation is done, deactivations have to be processed if the activated window + // is a parent window of the last active Window! + SolarMutexClearableGuard aSolarGuard; + vcl::Window* pFocusWindow = Application::GetFocusWindow(); + if ( !(xContainerWindow.is() && xParent.is() && + !css::uno::Reference< css::frame::XDesktop >( xParent, css::uno::UNO_QUERY ).is()) + ) + return; + + css::uno::Reference< css::awt::XWindow > xParentWindow = xParent->getContainerWindow(); + VclPtr<vcl::Window> pParentWindow = VCLUnoHelper::GetWindow( xParentWindow ); + //#i70261#: dialogs opened from an OLE object will cause a deactivate on the frame of the OLE object + // on Solaris/Linux at that time pFocusWindow is still NULL because the focus handling is different; right after + // the deactivation the focus will be set into the dialog! + // currently I see no case where a sub frame could get a deactivate with pFocusWindow being NULL permanently + // so for now this case is omitted from handled deactivations + if( pFocusWindow && pParentWindow->IsChild( pFocusWindow ) ) + { + css::uno::Reference< css::frame::XFramesSupplier > xSupplier( xParent, css::uno::UNO_QUERY ); + if( xSupplier.is() ) { - css::uno::Reference< css::awt::XWindow > xParentWindow = xParent->getContainerWindow(); - VclPtr<vcl::Window> pParentWindow = VCLUnoHelper::GetWindow( xParentWindow ); - //#i70261#: dialogs opened from an OLE object will cause a deactivate on the frame of the OLE object - // on Solaris/Linux at that time pFocusWindow is still NULL because the focus handling is different; right after - // the deactivation the focus will be set into the dialog! - // currently I see no case where a sub frame could get a deactivate with pFocusWindow being NULL permanently - // so for now this case is omitted from handled deactivations - if( pFocusWindow && pParentWindow->IsChild( pFocusWindow ) ) - { - css::uno::Reference< css::frame::XFramesSupplier > xSupplier( xParent, css::uno::UNO_QUERY ); - if( xSupplier.is() ) - { - aSolarGuard.clear(); - xSupplier->setActiveFrame( css::uno::Reference< css::frame::XFrame >() ); - } - } + aSolarGuard.clear(); + xSupplier->setActiveFrame( css::uno::Reference< css::frame::XFrame >() ); } } } @@ -2590,20 +2590,20 @@ void SAL_CALL XFrameImpl::windowShown( const css::lang::EventObject& ) impl_checkMenuCloser(); - if (xDesktopCheck.is()) - { - static bool bFirstVisibleTask = true; - osl::ClearableMutexGuard aGuard(aFirstVisibleLock); - bool bMustBeTriggered = bFirstVisibleTask; - bFirstVisibleTask = false; - aGuard.clear(); + if (!xDesktopCheck.is()) + return; - if (bMustBeTriggered) - { - css::uno::Reference< css::task::XJobExecutor > xExecutor - = css::task::theJobExecutor::get( m_xContext ); - xExecutor->trigger( "onFirstVisibleTask" ); - } + static bool bFirstVisibleTask = true; + osl::ClearableMutexGuard aGuard(aFirstVisibleLock); + bool bMustBeTriggered = bFirstVisibleTask; + bFirstVisibleTask = false; + aGuard.clear(); + + if (bMustBeTriggered) + { + css::uno::Reference< css::task::XJobExecutor > xExecutor + = css::task::theJobExecutor::get( m_xContext ); + xExecutor->trigger( "onFirstVisibleTask" ); } } @@ -2928,24 +2928,24 @@ void XFrameImpl::implts_sendFrameActionEvent( const css::frame::FrameAction& aAc ::cppu::OInterfaceContainerHelper* pContainer = m_aListenerContainer.getContainer( cppu::UnoType<css::frame::XFrameActionListener>::get()); - if( pContainer != nullptr ) - { - // Build action event. - css::frame::FrameActionEvent aFrameActionEvent( static_cast< ::cppu::OWeakObject* >(this), this, aAction ); + if( pContainer == nullptr ) + return; - // Get iterator for access to listener. - ::cppu::OInterfaceIteratorHelper aIterator( *pContainer ); - // Send message to all listener. - while( aIterator.hasMoreElements() ) + // Build action event. + css::frame::FrameActionEvent aFrameActionEvent( static_cast< ::cppu::OWeakObject* >(this), this, aAction ); + + // Get iterator for access to listener. + ::cppu::OInterfaceIteratorHelper aIterator( *pContainer ); + // Send message to all listener. + while( aIterator.hasMoreElements() ) + { + try { - try - { - static_cast<css::frame::XFrameActionListener*>(aIterator.next())->frameAction( aFrameActionEvent ); - } - catch( const css::uno::RuntimeException& ) - { - aIterator.remove(); - } + static_cast<css::frame::XFrameActionListener*>(aIterator.next())->frameAction( aFrameActionEvent ); + } + catch( const css::uno::RuntimeException& ) + { + aIterator.remove(); } } } @@ -2960,23 +2960,23 @@ void XFrameImpl::implts_resizeComponentWindow() { // usually the LayoutManager does the resizing // in case there is no LayoutManager resizing has to be done here - if ( !m_xLayoutManager.is() ) - { - css::uno::Reference< css::awt::XWindow > xComponentWindow( getComponentWindow() ); - if( xComponentWindow.is() ) - { - css::uno::Reference< css::awt::XDevice > xDevice( getContainerWindow(), css::uno::UNO_QUERY ); + if ( m_xLayoutManager.is() ) + return; - // Convert relative size to output size. - css::awt::Rectangle aRectangle = getContainerWindow()->getPosSize(); - css::awt::DeviceInfo aInfo = xDevice->getInfo(); - css::awt::Size aSize( aRectangle.Width - aInfo.LeftInset - aInfo.RightInset, - aRectangle.Height - aInfo.TopInset - aInfo.BottomInset ); + css::uno::Reference< css::awt::XWindow > xComponentWindow( getComponentWindow() ); + if( !xComponentWindow.is() ) + return; - // Resize our component window. - xComponentWindow->setPosSize( 0, 0, aSize.Width, aSize.Height, css::awt::PosSize::POSSIZE ); - } - } + css::uno::Reference< css::awt::XDevice > xDevice( getContainerWindow(), css::uno::UNO_QUERY ); + + // Convert relative size to output size. + css::awt::Rectangle aRectangle = getContainerWindow()->getPosSize(); + css::awt::DeviceInfo aInfo = xDevice->getInfo(); + css::awt::Size aSize( aRectangle.Width - aInfo.LeftInset - aInfo.RightInset, + aRectangle.Height - aInfo.TopInset - aInfo.BottomInset ); + + // Resize our component window. + xComponentWindow->setPosSize( 0, 0, aSize.Width, aSize.Height, css::awt::PosSize::POSSIZE ); } /*-**************************************************************************************************** @@ -3000,69 +3000,69 @@ void XFrameImpl::implts_setIconOnWindow() aReadLock.clear(); /* UNSAFE AREA --------------------------------------------------------------------------------------------- */ - if( xContainerWindow.is() && xController.is() ) - { + if( !(xContainerWindow.is() && xController.is()) ) + return; + - // a) set default value to an invalid one. So we can start further searches for right icon id, if - // first steps failed! - // We must reset it to any fallback value - if no search step returns a valid result. - sal_Int32 nIcon = -1; + // a) set default value to an invalid one. So we can start further searches for right icon id, if + // first steps failed! + // We must reset it to any fallback value - if no search step returns a valid result. + sal_Int32 nIcon = -1; - // b) try to find information on controller propertyset directly - // Don't forget to catch possible exceptions - because these property is an optional one! - css::uno::Reference< css::beans::XPropertySet > xSet( xController, css::uno::UNO_QUERY ); - if( xSet.is() ) + // b) try to find information on controller propertyset directly + // Don't forget to catch possible exceptions - because these property is an optional one! + css::uno::Reference< css::beans::XPropertySet > xSet( xController, css::uno::UNO_QUERY ); + if( xSet.is() ) + { + try { - try - { - css::uno::Reference< css::beans::XPropertySetInfo > const xPSI( xSet->getPropertySetInfo(), - css::uno::UNO_SET_THROW ); - if ( xPSI->hasPropertyByName( "IconId" ) ) - xSet->getPropertyValue( "IconId" ) >>= nIcon; - } - catch( css::uno::Exception& ) - { - DBG_UNHANDLED_EXCEPTION("fwk"); - } + css::uno::Reference< css::beans::XPropertySetInfo > const xPSI( xSet->getPropertySetInfo(), + css::uno::UNO_SET_THROW ); + if ( xPSI->hasPropertyByName( "IconId" ) ) + xSet->getPropertyValue( "IconId" ) >>= nIcon; } - - // c) if b) failed... analyze argument list of currently loaded document inside the frame to find the filter. - // He can be used to detect right factory - and these can be used to match factory to icon... - if( nIcon == -1 ) + catch( css::uno::Exception& ) { - css::uno::Reference< css::frame::XModel > xModel = xController->getModel(); - if( xModel.is() ) - { - SvtModuleOptions::EFactory eFactory = SvtModuleOptions::ClassifyFactoryByModel(xModel); - if (eFactory != SvtModuleOptions::EFactory::UNKNOWN_FACTORY) - nIcon = SvtModuleOptions().GetFactoryIcon( eFactory ); - } + DBG_UNHANDLED_EXCEPTION("fwk"); } + } - // d) if all steps failed - use fallback! - if( nIcon == -1 ) + // c) if b) failed... analyze argument list of currently loaded document inside the frame to find the filter. + // He can be used to detect right factory - and these can be used to match factory to icon... + if( nIcon == -1 ) + { + css::uno::Reference< css::frame::XModel > xModel = xController->getModel(); + if( xModel.is() ) { - nIcon = 0; + SvtModuleOptions::EFactory eFactory = SvtModuleOptions::ClassifyFactoryByModel(xModel); + if (eFactory != SvtModuleOptions::EFactory::UNKNOWN_FACTORY) + nIcon = SvtModuleOptions().GetFactoryIcon( eFactory ); } + } - // e) set icon on container window now - // Don't forget SolarMutex! We use vcl directly :-( - // Check window pointer for right WorkWindow class too!!! - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + // d) if all steps failed - use fallback! + if( nIcon == -1 ) + { + nIcon = 0; + } + + // e) set icon on container window now + // Don't forget SolarMutex! We use vcl directly :-( + // Check window pointer for right WorkWindow class too!!! + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + { + SolarMutexGuard aSolarGuard; + VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xContainerWindow ); + if( + ( pWindow != nullptr ) && + ( pWindow->GetType() == WindowType::WORKWINDOW ) + ) { - SolarMutexGuard aSolarGuard; - VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xContainerWindow ); - if( - ( pWindow != nullptr ) && - ( pWindow->GetType() == WindowType::WORKWINDOW ) - ) - { - WorkWindow* pWorkWindow = static_cast<WorkWindow*>(pWindow.get()); - pWorkWindow->SetIcon( static_cast<sal_uInt16>(nIcon) ); - } + WorkWindow* pWorkWindow = static_cast<WorkWindow*>(pWindow.get()); + pWorkWindow->SetIcon( static_cast<sal_uInt16>(nIcon) ); } - /* UNSAFE AREA --------------------------------------------------------------------------------------------- */ } + /* UNSAFE AREA --------------------------------------------------------------------------------------------- */ } /*-************************************************************************************************************ @@ -3095,23 +3095,23 @@ void XFrameImpl::implts_startWindowListening() aReadLock.clear(); /* UNSAFE AREA --------------------------------------------------------------------------------------------- */ - if( xContainerWindow.is() ) + if( !xContainerWindow.is() ) + return; + + xContainerWindow->addWindowListener( xWindowListener); + xContainerWindow->addFocusListener ( xFocusListener ); + + css::uno::Reference< css::awt::XTopWindow > xTopWindow( xContainerWindow, css::uno::UNO_QUERY ); + if( xTopWindow.is() ) { - xContainerWindow->addWindowListener( xWindowListener); - xContainerWindow->addFocusListener ( xFocusListener ); + xTopWindow->addTopWindowListener( xTopWindowListener ); - css::uno::Reference< css::awt::XTopWindow > xTopWindow( xContainerWindow, css::uno::UNO_QUERY ); - if( xTopWindow.is() ) + css::uno::Reference< css::awt::XToolkit2 > xToolkit = css::awt::Toolkit::create( m_xContext ); + css::uno::Reference< css::datatransfer::dnd::XDropTarget > xDropTarget = xToolkit->getDropTarget( xContainerWindow ); + if( xDropTarget.is() ) { - xTopWindow->addTopWindowListener( xTopWindowListener ); - - css::uno::Reference< css::awt::XToolkit2 > xToolkit = css::awt::Toolkit::create( m_xContext ); - css::uno::Reference< css::datatransfer::dnd::XDropTarget > xDropTarget = xToolkit->getDropTarget( xContainerWindow ); - if( xDropTarget.is() ) - { - xDropTarget->addDropTargetListener( xDragDropListener ); - xDropTarget->setActive( true ); - } + xDropTarget->addDropTargetListener( xDragDropListener ); + xDropTarget->setActive( true ); } } } @@ -3134,25 +3134,25 @@ void XFrameImpl::implts_stopWindowListening() aReadLock.clear(); /* UNSAFE AREA --------------------------------------------------------------------------------------------- */ - if( xContainerWindow.is() ) - { - xContainerWindow->removeWindowListener( xWindowListener); - xContainerWindow->removeFocusListener ( xFocusListener ); + if( !xContainerWindow.is() ) + return; - css::uno::Reference< css::awt::XTopWindow > xTopWindow( xContainerWindow, css::uno::UNO_QUERY ); - if( xTopWindow.is() ) - { - xTopWindow->removeTopWindowListener( xTopWindowListener ); + xContainerWindow->removeWindowListener( xWindowListener); + xContainerWindow->removeFocusListener ( xFocusListener ); - css::uno::Reference< css::awt::XToolkit2 > xToolkit = css::awt::Toolkit::create( m_xContext ); - css::uno::Reference< css::datatransfer::dnd::XDropTarget > xDropTarget = - xToolkit->getDropTarget( xContainerWindow ); - if( xDropTarget.is() ) - { - xDropTarget->removeDropTargetListener( xDragDropListener ); - xDropTarget->setActive( false ); - } - } + css::uno::Reference< css::awt::XTopWindow > xTopWindow( xContainerWindow, css::uno::UNO_QUERY ); + if( !xTopWindow.is() ) + return; + + xTopWindow->removeTopWindowListener( xTopWindowListener ); + + css::uno::Reference< css::awt::XToolkit2 > xToolkit = css::awt::Toolkit::create( m_xContext ); + css::uno::Reference< css::datatransfer::dnd::XDropTarget > xDropTarget = + xToolkit->getDropTarget( xContainerWindow ); + if( xDropTarget.is() ) + { + xDropTarget->removeDropTargetListener( xDragDropListener ); + xDropTarget->setActive( false ); } } diff --git a/framework/source/uiconfiguration/imagemanagerimpl.cxx b/framework/source/uiconfiguration/imagemanagerimpl.cxx index 55372351c33a..67c38860164b 100644 --- a/framework/source/uiconfiguration/imagemanagerimpl.cxx +++ b/framework/source/uiconfiguration/imagemanagerimpl.cxx @@ -120,48 +120,48 @@ CmdImageList::~CmdImageList() void CmdImageList::initialize() { - if (!m_bInitialized) - { - const OUString aCommandImageList(UICOMMANDDESCRIPTION_NAMEACCESS_COMMANDIMAGELIST); + if (m_bInitialized) + return; + + const OUString aCommandImageList(UICOMMANDDESCRIPTION_NAMEACCESS_COMMANDIMAGELIST); - Sequence<OUString> aCommandImageSeq; - uno::Reference<XNameAccess> xCommandDesc = frame::theUICommandDescription::get(m_xContext); + Sequence<OUString> aCommandImageSeq; + uno::Reference<XNameAccess> xCommandDesc = frame::theUICommandDescription::get(m_xContext); - if (!m_aModuleIdentifier.isEmpty()) + if (!m_aModuleIdentifier.isEmpty()) + { + // If we have a module identifier - use to retrieve the command image name list from it. + // Otherwise we will use the global command image list + try { - // If we have a module identifier - use to retrieve the command image name list from it. - // Otherwise we will use the global command image list - try - { - xCommandDesc->getByName(m_aModuleIdentifier) >>= xCommandDesc; - if (xCommandDesc.is()) - xCommandDesc->getByName(aCommandImageList) >>= aCommandImageSeq; - } - catch (const NoSuchElementException&) - { - // Module unknown we will work with an empty command image list! - return; - } + xCommandDesc->getByName(m_aModuleIdentifier) >>= xCommandDesc; + if (xCommandDesc.is()) + xCommandDesc->getByName(aCommandImageList) >>= aCommandImageSeq; } + catch (const NoSuchElementException&) + { + // Module unknown we will work with an empty command image list! + return; + } + } - if (xCommandDesc.is()) + if (xCommandDesc.is()) + { + try + { + xCommandDesc->getByName(aCommandImageList) >>= aCommandImageSeq; + } + catch (const NoSuchElementException&) { - try - { - xCommandDesc->getByName(aCommandImageList) >>= aCommandImageSeq; - } - catch (const NoSuchElementException&) - { - } - catch (const WrappedTargetException&) - { - } } + catch (const WrappedTargetException&) + { + } + } - m_aResolver.registerCommands(aCommandImageSeq); + m_aResolver.registerCommands(aCommandImageSeq); - m_bInitialized = true; - } + m_bInitialized = true; } @@ -271,36 +271,36 @@ ImageList* ImageManagerImpl::implts_getUserImageList( vcl::ImageType nImageType void ImageManagerImpl::implts_initialize() { // Initialize the top-level structures with the storage data - if ( m_xUserConfigStorage.is() ) - { - long nModes = m_bReadOnly ? ElementModes::READ : ElementModes::READWRITE; + if ( !m_xUserConfigStorage.is() ) + return; - try - { - m_xUserImageStorage = m_xUserConfigStorage->openStorageElement( IMAGE_FOLDER, - nModes ); - if ( m_xUserImageStorage.is() ) - { - m_xUserBitmapsStorage = m_xUserImageStorage->openStorageElement( BITMAPS_FOLDER, - nModes ); - } - } - catch ( const css::container::NoSuchElementException& ) - { - } - catch ( const css::embed::InvalidStorageException& ) - { - } - catch ( const css::lang::IllegalArgumentException& ) - { - } - catch ( const css::io::IOException& ) - { - } - catch ( const css::embed::StorageWrappedTargetException& ) + long nModes = m_bReadOnly ? ElementModes::READ : ElementModes::READWRITE; + + try + { + m_xUserImageStorage = m_xUserConfigStorage->openStorageElement( IMAGE_FOLDER, + nModes ); + if ( m_xUserImageStorage.is() ) { + m_xUserBitmapsStorage = m_xUserImageStorage->openStorageElement( BITMAPS_FOLDER, + nModes ); } } + catch ( const css::container::NoSuchElementException& ) + { + } + catch ( const css::embed::InvalidStorageException& ) + { + } + catch ( const css::lang::IllegalArgumentException& ) + { + } + catch ( const css::io::IOException& ) + { + } + catch ( const css::embed::StorageWrappedTargetException& ) + { + } } void ImageManagerImpl::implts_loadUserImages( @@ -559,43 +559,43 @@ void ImageManagerImpl::initialize( const Sequence< Any >& aArguments ) { SolarMutexGuard g; - if ( !m_bInitialized ) + if ( m_bInitialized ) + return; + + for ( sal_Int32 n = 0; n < aArguments.getLength(); n++ ) { - for ( sal_Int32 n = 0; n < aArguments.getLength(); n++ ) + PropertyValue aPropValue; + if ( aArguments[n] >>= aPropValue ) { - PropertyValue aPropValue; - if ( aArguments[n] >>= aPropValue ) + if ( aPropValue.Name == "UserConfigStorage" ) { - if ( aPropValue.Name == "UserConfigStorage" ) - { - aPropValue.Value >>= m_xUserConfigStorage; - } - else if ( aPropValue.Name == "ModuleIdentifier" ) - { - aPropValue.Value >>= m_aModuleIdentifier; - } - else if ( aPropValue.Name == "UserRootCommit" ) - { - aPropValue.Value >>= m_xUserRootCommit; - } + aPropValue.Value >>= m_xUserConfigStorage; + } + else if ( aPropValue.Name == "ModuleIdentifier" ) + { + aPropValue.Value >>= m_aModuleIdentifier; + } + else if ( aPropValue.Name == "UserRootCommit" ) + { + aPropValue.Value >>= m_xUserRootCommit; } } + } - if ( m_xUserConfigStorage.is() ) + if ( m_xUserConfigStorage.is() ) + { + uno::Reference< XPropertySet > xPropSet( m_xUserConfigStorage, UNO_QUERY ); + if ( xPropSet.is() ) { - uno::Reference< XPropertySet > xPropSet( m_xUserConfigStorage, UNO_QUERY ); - if ( xPropSet.is() ) - { - long nOpenMode = 0; - if ( xPropSet->getPropertyValue("OpenMode") >>= nOpenMode ) - m_bReadOnly = !( nOpenMode & ElementModes::WRITE ); - } + long nOpenMode = 0; + if ( xPropSet->getPropertyValue("OpenMode") >>= nOpenMode ) + m_bReadOnly = !( nOpenMode & ElementModes::WRITE ); } + } - implts_initialize(); + implts_initialize(); - m_bInitialized = true; - } + m_bInitialized = true; } // XImageManagerImpl @@ -947,138 +947,138 @@ void ImageManagerImpl::reload() CommandMap aOldUserCmdImageSet; std::vector< OUString > aNewUserCmdImageSet; - if ( m_bModified ) + if ( !m_bModified ) + return; + + for ( vcl::ImageType i : o3tl::enumrange<vcl::ImageType>() ) { - for ( vcl::ImageType i : o3tl::enumrange<vcl::ImageType>() ) + if ( !m_bDisposed && m_bUserImageListModified[i] ) { - if ( !m_bDisposed && m_bUserImageListModified[i] ) + std::vector< OUString > aOldUserCmdImageVector; + ImageList* pImageList = implts_getUserImageList(i); + pImageList->GetImageNames( aOldUserCmdImageVector ); + + // Fill hash map to speed up search afterwards + sal_uInt32 j( 0 ); + const sal_uInt32 nOldCount = aOldUserCmdImageVector.size(); + for ( j = 0; j < nOldCount; j++ ) + aOldUserCmdImageSet.emplace( aOldUserCmdImageVector[j], false ); + + // Attention: This can make the old image list pointer invalid! + implts_loadUserImages( i, m_xUserImageStorage, m_xUserBitmapsStorage ); + pImageList = implts_getUserImageList(i); + pImageList->GetImageNames( aNewUserCmdImageSet ); + + GraphicNameAccess* pInsertedImages( nullptr ); + GraphicNameAccess* pReplacedImages( nullptr ); + GraphicNameAccess* pRemovedImages( nullptr ); + + for (auto const& newUserCmdImage : aNewUserCmdImageSet) { - std::vector< OUString > aOldUserCmdImageVector; - ImageList* pImageList = implts_getUserImageList(i); - pImageList->GetImageNames( aOldUserCmdImageVector ); - - // Fill hash map to speed up search afterwards - sal_uInt32 j( 0 ); - const sal_uInt32 nOldCount = aOldUserCmdImageVector.size(); - for ( j = 0; j < nOldCount; j++ ) - aOldUserCmdImageSet.emplace( aOldUserCmdImageVector[j], false ); - - // Attention: This can make the old image list pointer invalid! - implts_loadUserImages( i, m_xUserImageStorage, m_xUserBitmapsStorage ); - pImageList = implts_getUserImageList(i); - pImageList->GetImageNames( aNewUserCmdImageSet ); - - GraphicNameAccess* pInsertedImages( nullptr ); - GraphicNameAccess* pReplacedImages( nullptr ); - GraphicNameAccess* pRemovedImages( nullptr ); - - for (auto const& newUserCmdImage : aNewUserCmdImageSet) + CommandMap::iterator pIter = aOldUserCmdImageSet.find(newUserCmdImage); + if ( pIter != aOldUserCmdImageSet.end() ) { - CommandMap::iterator pIter = aOldUserCmdImageSet.find(newUserCmdImage); - if ( pIter != aOldUserCmdImageSet.end() ) - { - pIter->second = true; // mark entry as replaced - if ( !pReplacedImages ) - pReplacedImages = new GraphicNameAccess(); - pReplacedImages->addElement( newUserCmdImage, - GetXGraphic(pImageList->GetImage(newUserCmdImage)) ); - } - else - { - if ( !pInsertedImages ) - pInsertedImages = new GraphicNameAccess(); - pInsertedImages->addElement( newUserCmdImage, - GetXGraphic(pImageList->GetImage(newUserCmdImage)) ); - } + pIter->second = true; // mark entry as replaced + if ( !pReplacedImages ) + pReplacedImages = new GraphicNameAccess(); + pReplacedImages->addElement( newUserCmdImage, + GetXGraphic(pImageList->GetImage(newUserCmdImage)) ); } - - // Search map for unmarked entries => they have been removed from the user list - // through this reload operation. - // We have to search the module and global image list! - rtl::Reference< GlobalImageList > rGlobalImageList; - CmdImageList* pDefaultImageList = nullptr; - if ( m_bUseGlobal ) + else { - rGlobalImageList = implts_getGlobalImageList(); - pDefaultImageList = implts_getDefaultImageList(); + if ( !pInsertedImages ) + pInsertedImages = new GraphicNameAccess(); + pInsertedImages->addElement( newUserCmdImage, + GetXGraphic(pImageList->GetImage(newUserCmdImage)) ); } - uno::Reference<XGraphic> xEmptyGraphic; - for (auto const& oldUserCmdImage : aOldUserCmdImageSet) + } + + // Search map for unmarked entries => they have been removed from the user list + // through this reload operation. + // We have to search the module and global image list! + rtl::Reference< GlobalImageList > rGlobalImageList; + CmdImageList* pDefaultImageList = nullptr; + if ( m_bUseGlobal ) + { + rGlobalImageList = implts_getGlobalImageList(); + pDefaultImageList = implts_getDefaultImageList(); + } + uno::Reference<XGraphic> xEmptyGraphic; + for (auto const& oldUserCmdImage : aOldUserCmdImageSet) + { + if ( !oldUserCmdImage.second ) { - if ( !oldUserCmdImage.second ) + if ( m_bUseGlobal ) { - if ( m_bUseGlobal ) - { - Image aImage = pDefaultImageList->getImageFromCommandURL( i, oldUserCmdImage.first ); - if ( !aImage ) - aImage = rGlobalImageList->getImageFromCommandURL( i, oldUserCmdImage.first ); - - if ( !aImage ) - { - // No image in the module/global image list => remove user image - if ( !pRemovedImages ) - pRemovedImages = new GraphicNameAccess(); - pRemovedImages->addElement( oldUserCmdImage.first, xEmptyGraphic ); - } - else - { - // Image has been found in the module/global image list => replace user image - if ( !pReplacedImages ) - pReplacedImages = new GraphicNameAccess(); - pReplacedImages->addElement(oldUserCmdImage.first, GetXGraphic(aImage)); - } - } // if ( m_bUseGlobal ) - else + Image aImage = pDefaultImageList->getImageFromCommandURL( i, oldUserCmdImage.first ); + if ( !aImage ) + aImage = rGlobalImageList->getImageFromCommandURL( i, oldUserCmdImage.first ); + + if ( !aImage ) { - // No image in the user image list => remove user image + // No image in the module/global image list => remove user image if ( !pRemovedImages ) pRemovedImages = new GraphicNameAccess(); pRemovedImages->addElement( oldUserCmdImage.first, xEmptyGraphic ); } + else + { + // Image has been found in the module/global image list => replace user image + if ( !pReplacedImages ) + pReplacedImages = new GraphicNameAccess(); + pReplacedImages->addElement(oldUserCmdImage.first, GetXGraphic(aImage)); + } + } // if ( m_bUseGlobal ) + else + { + // No image in the user image list => remove user image + if ( !pRemovedImages ) + pRemovedImages = new GraphicNameAccess(); + pRemovedImages->addElement( oldUserCmdImage.first, xEmptyGraphic ); } } + } - aGuard.clear(); - - // Now notify our listeners. Unlock mutex to prevent deadlocks - uno::Reference< uno::XInterface > xOwner(m_pOwner); - if ( pInsertedImages != nullptr ) - { - ConfigurationEvent aInsertEvent; - aInsertEvent.aInfo <<=static_cast<sal_uInt16>(i); - aInsertEvent.Accessor <<= xOwner; - aInsertEvent.Source = xOwner; - aInsertEvent.ResourceURL = m_aResourceString; - aInsertEvent.Element <<= uno::Reference< XNameAccess >( - static_cast< OWeakObject *>( pInsertedImages ), UNO_QUERY ); - implts_notifyContainerListener( aInsertEvent, NotifyOp_Insert ); - } - if ( pReplacedImages != nullptr ) - { - ConfigurationEvent aReplaceEvent; - aReplaceEvent.aInfo <<= static_cast<sal_uInt16>(i); - aReplaceEvent.Accessor <<= xOwner; - aReplaceEvent.Source = xOwner; - aReplaceEvent.ResourceURL = m_aResourceString; - aReplaceEvent.ReplacedElement = Any(); - aReplaceEvent.Element <<= uno::Reference< XNameAccess >( - static_cast< OWeakObject *>( pReplacedImages ), UNO_QUERY ); - implts_notifyContainerListener( aReplaceEvent, NotifyOp_Replace ); - } - if ( pRemovedImages != nullptr ) - { - ConfigurationEvent aRemoveEvent; - aRemoveEvent.aInfo <<= static_cast<sal_uInt16>(i); - aRemoveEvent.Accessor <<= xOwner; - aRemoveEvent.Source = xOwner; - aRemoveEvent.ResourceURL = m_aResourceString; - aRemoveEvent.Element <<= uno::Reference< XNameAccess >( - static_cast< OWeakObject *>( pRemovedImages ), UNO_QUERY ); - implts_notifyContainerListener( aRemoveEvent, NotifyOp_Remove ); - } + aGuard.clear(); - aGuard.clear(); + // Now notify our listeners. Unlock mutex to prevent deadlocks + uno::Reference< uno::XInterface > xOwner(m_pOwner); + if ( pInsertedImages != nullptr ) + { + ConfigurationEvent aInsertEvent; + aInsertEvent.aInfo <<=static_cast<sal_uInt16>(i); + aInsertEvent.Accessor <<= xOwner; + aInsertEvent.Source = xOwner; + aInsertEvent.ResourceURL = m_aResourceString; + aInsertEvent.Element <<= uno::Reference< XNameAccess >( + static_cast< OWeakObject *>( pInsertedImages ), UNO_QUERY ); + implts_notifyContainerListener( aInsertEvent, NotifyOp_Insert ); + } + if ( pReplacedImages != nullptr ) + { + ConfigurationEvent aReplaceEvent; + aReplaceEvent.aInfo <<= static_cast<sal_uInt16>(i); + aReplaceEvent.Accessor <<= xOwner; + aReplaceEvent.Source = xOwner; + aReplaceEvent.ResourceURL = m_aResourceString; + aReplaceEvent.ReplacedElement = Any(); + aReplaceEvent.Element <<= uno::Reference< XNameAccess >( + static_cast< OWeakObject *>( pReplacedImages ), UNO_QUERY ); + implts_notifyContainerListener( aReplaceEvent, NotifyOp_Replace ); + } + if ( pRemovedImages != nullptr ) + { + ConfigurationEvent aRemoveEvent; + aRemoveEvent.aInfo <<= static_cast<sal_uInt16>(i); + aRemoveEvent.Accessor <<= xOwner; + aRemoveEvent.Source = xOwner; + aRemoveEvent.ResourceURL = m_aResourceString; + aRemoveEvent.Element <<= uno::Reference< XNameAccess >( + static_cast< OWeakObject *>( pRemovedImages ), UNO_QUERY ); + implts_notifyContainerListener( aRemoveEvent, NotifyOp_Remove ); } + + aGuard.clear(); } } } @@ -1090,29 +1090,29 @@ void ImageManagerImpl::store() if ( m_bDisposed ) throw DisposedException(); - if ( m_bModified ) - { - bool bWritten( false ); - for ( vcl::ImageType i : o3tl::enumrange<vcl::ImageType>() ) - { - bool bSuccess = implts_storeUserImages(i, m_xUserImageStorage, m_xUserBitmapsStorage ); - if ( bSuccess ) - bWritten = true; - m_bUserImageListModified[i] = false; - } + if ( !m_bModified ) + return; - if ( bWritten && - m_xUserConfigStorage.is() ) - { - uno::Reference< XTransactedObject > xUserConfigStorageCommit( m_xUserConfigStorage, UNO_QUERY ); - if ( xUserConfigStorageCommit.is() ) - xUserConfigStorageCommit->commit(); - if ( m_xUserRootCommit.is() ) - m_xUserRootCommit->commit(); - } + bool bWritten( false ); + for ( vcl::ImageType i : o3tl::enumrange<vcl::ImageType>() ) + { + bool bSuccess = implts_storeUserImages(i, m_xUserImageStorage, m_xUserBitmapsStorage ); + if ( bSuccess ) + bWritten = true; + m_bUserImageListModified[i] = false; + } - m_bModified = false; + if ( bWritten && + m_xUserConfigStorage.is() ) + { + uno::Reference< XTransactedObject > xUserConfigStorageCommit( m_xUserConfigStorage, UNO_QUERY ); + if ( xUserConfigStorageCommit.is() ) + xUserConfigStorageCommit->commit(); + if ( m_xUserRootCommit.is() ) + m_xUserRootCommit->commit(); } + + m_bModified = false; } void ImageManagerImpl::storeToStorage( const uno::Reference< XStorage >& Storage ) @@ -1122,27 +1122,27 @@ void ImageManagerImpl::storeToStorage( const uno::Reference< XStorage >& Storage if ( m_bDisposed ) throw DisposedException(); - if ( m_bModified && Storage.is() ) - { - long nModes = ElementModes::READWRITE; + if ( !(m_bModified && Storage.is()) ) + return; - uno::Reference< XStorage > xUserImageStorage = Storage->openStorageElement( IMAGE_FOLDER, - nModes ); - if ( xUserImageStorage.is() ) - { - uno::Reference< XStorage > xUserBitmapsStorage = xUserImageStorage->openStorageElement( BITMAPS_FOLDER, - nModes ); - for ( vcl::ImageType i : o3tl::enumrange<vcl::ImageType>() ) - { - implts_getUserImageList(i); - implts_storeUserImages( i, xUserImageStorage, xUserBitmapsStorage ); - } + long nModes = ElementModes::READWRITE; - uno::Reference< XTransactedObject > xTransaction( Storage, UNO_QUERY ); - if ( xTransaction.is() ) - xTransaction->commit(); - } + uno::Reference< XStorage > xUserImageStorage = Storage->openStorageElement( IMAGE_FOLDER, + nModes ); + if ( !xUserImageStorage.is() ) + return; + + uno::Reference< XStorage > xUserBitmapsStorage = xUserImageStorage->openStorageElement( BITMAPS_FOLDER, + nModes ); + for ( vcl::ImageType i : o3tl::enumrange<vcl::ImageType>() ) + { + implts_getUserImageList(i); + implts_storeUserImages( i, xUserImageStorage, xUserBitmapsStorage ); } + + uno::Reference< XTransactedObject > xTransaction( Storage, UNO_QUERY ); + if ( xTransaction.is() ) + xTransaction->commit(); } bool ImageManagerImpl::isModified() const @@ -1180,31 +1180,31 @@ void ImageManagerImpl::implts_notifyContainerListener( const ConfigurationEvent& { ::cppu::OInterfaceContainerHelper* pContainer = m_aListenerContainer.getContainer( cppu::UnoType<css::ui::XUIConfigurationListener>::get()); - if ( pContainer != nullptr ) + if ( pContainer == nullptr ) + return; + + ::cppu::OInterfaceIteratorHelper pIterator( *pContainer ); + while ( pIterator.hasMoreElements() ) { - ::cppu::OInterfaceIteratorHelper pIterator( *pContainer ); - while ( pIterator.hasMoreElements() ) + try { - try + switch ( eOp ) { - switch ( eOp ) - { - case NotifyOp_Replace: - static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementReplaced( aEvent ); - break; - case NotifyOp_Insert: - static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementInserted( aEvent ); - break; - case NotifyOp_Remove: - static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementRemoved( aEvent ); - break; - } - } - catch( const css::uno::RuntimeException& ) - { - pIterator.remove(); + case NotifyOp_Replace: + static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementReplaced( aEvent ); + break; + case NotifyOp_Insert: + static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementInserted( aEvent ); + break; + case NotifyOp_Remove: + static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementRemoved( aEvent ); + break; } } + catch( const css::uno::RuntimeException& ) + { + pIterator.remove(); + } } } void ImageManagerImpl::clear() diff --git a/framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx b/framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx index b166fc79a47e..1b9926d7f7eb 100644 --- a/framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx +++ b/framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx @@ -348,50 +348,50 @@ void ModuleUIConfigurationManager::impl_preloadUIElementTypeList( Layer eLayer, { UIElementType& rElementTypeData = m_aUIElements[eLayer][nElementType]; - if ( !rElementTypeData.bLoaded ) + if ( rElementTypeData.bLoaded ) + return; + + Reference< XStorage > xElementTypeStorage = rElementTypeData.xStorage; + if ( !xElementTypeStorage.is() ) + return; + + OUString aResURLPrefix = + RESOURCEURL_PREFIX + + UIELEMENTTYPENAMES[ nElementType ] + + "/"; + + UIElementDataHashMap& rHashMap = rElementTypeData.aElementsHashMap; + Sequence< OUString > aUIElementNames = xElementTypeStorage->getElementNames(); + for ( sal_Int32 n = 0; n < aUIElementNames.getLength(); n++ ) { - Reference< XStorage > xElementTypeStorage = rElementTypeData.xStorage; - if ( xElementTypeStorage.is() ) + UIElementData aUIElementData; + + // Resource name must be without ".xml" + sal_Int32 nIndex = aUIElementNames[n].lastIndexOf( '.' ); + if (( nIndex > 0 ) && ( nIndex < aUIElementNames[n].getLength() )) { - OUString aResURLPrefix = - RESOURCEURL_PREFIX + - UIELEMENTTYPENAMES[ nElementType ] + - "/"; - - UIElementDataHashMap& rHashMap = rElementTypeData.aElementsHashMap; - Sequence< OUString > aUIElementNames = xElementTypeStorage->getElementNames(); - for ( sal_Int32 n = 0; n < aUIElementNames.getLength(); n++ ) + OUString aExtension( aUIElementNames[n].copy( nIndex+1 )); + OUString aUIElementName( aUIElementNames[n].copy( 0, nIndex )); + + if (!aUIElementName.isEmpty() && + ( aExtension.equalsIgnoreAsciiCase("xml"))) { - UIElementData aUIElementData; + aUIElementData.aResourceURL = aResURLPrefix + aUIElementName; + aUIElementData.aName = aUIElementNames[n]; - // Resource name must be without ".xml" - sal_Int32 nIndex = aUIElementNames[n].lastIndexOf( '.' ); - if (( nIndex > 0 ) && ( nIndex < aUIElementNames[n].getLength() )) + if ( eLayer == LAYER_USERDEFINED ) { - OUString aExtension( aUIElementNames[n].copy( nIndex+1 )); - OUString aUIElementName( aUIElementNames[n].copy( 0, nIndex )); - - if (!aUIElementName.isEmpty() && - ( aExtension.equalsIgnoreAsciiCase("xml"))) - { - aUIElementData.aResourceURL = aResURLPrefix + aUIElementName; - aUIElementData.aName = aUIElementNames[n]; - - if ( eLayer == LAYER_USERDEFINED ) - { - aUIElementData.bModified = false; - aUIElementData.bDefault = false; - aUIElementData.bDefaultNode = false; - } - - // Create std::unordered_map entries for all user interface elements inside the storage. We don't load the - // settings to speed up the process. - rHashMap.emplace( aUIElementData.aResourceURL, aUIElementData ); - } + aUIElementData.bModified = false; + aUIElementData.bDefault = false; + aUIElementData.bDefaultNode = false; } - rElementTypeData.bLoaded = true; + + // Create std::unordered_map entries for all user interface elements inside the storage. We don't load the + // settings to speed up the process. + rHashMap.emplace( aUIElementData.aResourceURL, aUIElementData ); } } + rElementTypeData.bLoaded = true; } } @@ -791,29 +791,29 @@ void ModuleUIConfigurationManager::impl_Initialize() } } - if ( m_xDefaultConfigStorage.is() ) - { - Reference< XNameAccess > xNameAccess( m_xDefaultConfigStorage, UNO_QUERY_THROW ); + if ( !m_xDefaultConfigStorage.is() ) + return; - // Try to access our module sub folder - for ( sal_Int16 i = 1; i < css::ui::UIElementType::COUNT; - i++ ) - { - Reference< XStorage > xElementTypeStorage; - try - { - const OUString sName( UIELEMENTTYPENAMES[i] ); - if( xNameAccess->hasByName( sName ) ) - xNameAccess->getByName( sName ) >>= xElementTypeStorage; - } - catch ( const css::container::NoSuchElementException& ) - { - } + Reference< XNameAccess > xNameAccess( m_xDefaultConfigStorage, UNO_QUERY_THROW ); - m_aUIElements[LAYER_DEFAULT][i].nElementType = i; - m_aUIElements[LAYER_DEFAULT][i].bModified = false; - m_aUIElements[LAYER_DEFAULT][i].xStorage = xElementTypeStorage; + // Try to access our module sub folder + for ( sal_Int16 i = 1; i < css::ui::UIElementType::COUNT; + i++ ) + { + Reference< XStorage > xElementTypeStorage; + try + { + const OUString sName( UIELEMENTTYPENAMES[i] ); + if( xNameAccess->hasByName( sName ) ) + xNameAccess->getByName( sName ) >>= xElementTypeStorage; } + catch ( const css::container::NoSuchElementException& ) + { + } + + m_aUIElements[LAYER_DEFAULT][i].nElementType = i; + m_aUIElements[LAYER_DEFAULT][i].bModified = false; + m_aUIElements[LAYER_DEFAULT][i].xStorage = xElementTypeStorage; } } @@ -969,80 +969,80 @@ void SAL_CALL ModuleUIConfigurationManager::reset() if ( m_bDisposed ) throw DisposedException(); - if ( !isReadOnly() ) + if ( isReadOnly() ) + return; + + // Remove all elements from our user-defined storage! + try { - // Remove all elements from our user-defined storage! - try + for ( int i = 1; i < css::ui::UIElementType::COUNT; i++ ) { - for ( int i = 1; i < css::ui::UIElementType::COUNT; i++ ) - { - UIElementType& rElementType = m_aUIElements[LAYER_USERDEFINED][i]; + UIElementType& rElementType = m_aUIElements[LAYER_USERDEFINED][i]; - if ( rElementType.xStorage.is() ) + if ( rElementType.xStorage.is() ) + { + bool bCommitSubStorage( false ); + Sequence< OUString > aUIElementStreamNames = rElementType.xStorage->getElementNames(); + for ( sal_Int32 j = 0; j < aUIElementStreamNames.getLength(); j++ ) { - bool bCommitSubStorage( false ); - Sequence< OUString > aUIElementStreamNames = rElementType.xStorage->getElementNames(); - for ( sal_Int32 j = 0; j < aUIElementStreamNames.getLength(); j++ ) - { - rElementType.xStorage->removeElement( aUIElementStreamNames[j] ); - bCommitSubStorage = true; - } + rElementType.xStorage->removeElement( aUIElementStreamNames[j] ); + bCommitSubStorage = true; + } - if ( bCommitSubStorage ) - { - Reference< XTransactedObject > xTransactedObject( rElementType.xStorage, UNO_QUERY ); - if ( xTransactedObject.is() ) - xTransactedObject->commit(); - m_pStorageHandler[i]->commitUserChanges(); - } + if ( bCommitSubStorage ) + { + Reference< XTransactedObject > xTransactedObject( rElementType.xStorage, UNO_QUERY ); + if ( xTransactedObject.is() ) + xTransactedObject->commit(); + m_pStorageHandler[i]->commitUserChanges(); } } + } - // remove settings from user defined layer and notify listener about removed settings data! - ConfigEventNotifyContainer aRemoveEventNotifyContainer; - ConfigEventNotifyContainer aReplaceEventNotifyContainer; - for ( sal_Int16 j = 1; j < css::ui::UIElementType::COUNT; j++ ) + // remove settings from user defined layer and notify listener about removed settings data! + ConfigEventNotifyContainer aRemoveEventNotifyContainer; + ConfigEventNotifyContainer aReplaceEventNotifyContainer; + for ( sal_Int16 j = 1; j < css::ui::UIElementType::COUNT; j++ ) + { + try { - try - { - UIElementType& rUserElementType = m_aUIElements[LAYER_USERDEFINED][j]; - UIElementType& rDefaultElementType = m_aUIElements[LAYER_DEFAULT][j]; + UIElementType& rUserElementType = m_aUIElements[LAYER_USERDEFINED][j]; + UIElementType& rDefaultElementType = m_aUIElements[LAYER_DEFAULT][j]; - impl_resetElementTypeData( rUserElementType, rDefaultElementType, aRemoveEventNotifyContainer, aReplaceEventNotifyContainer ); - rUserElementType.bModified = false; - } - catch (const Exception&) - { - css::uno::Any anyEx = cppu::getCaughtException(); - throw css::lang::WrappedTargetRuntimeException( - "ModuleUIConfigurationManager::reset exception", - css::uno::Reference<css::uno::XInterface>(*this), anyEx); - } + impl_resetElementTypeData( rUserElementType, rDefaultElementType, aRemoveEventNotifyContainer, aReplaceEventNotifyContainer ); + rUserElementType.bModified = false; + } + catch (const Exception&) + { + css::uno::Any anyEx = cppu::getCaughtException(); + throw css::lang::WrappedTargetRuntimeException( + "ModuleUIConfigurationManager::reset exception", + css::uno::Reference<css::uno::XInterface>(*this), anyEx); } + } - m_bModified = false; + m_bModified = false; - // Unlock mutex before notify our listeners - aGuard.clear(); + // Unlock mutex before notify our listeners + aGuard.clear(); - // Notify our listeners - for ( auto const & k: aRemoveEventNotifyContainer ) - implts_notifyContainerListener( k, NotifyOp_Remove ); - for ( auto const & k: aReplaceEventNotifyContainer ) - implts_notifyContainerListener( k, NotifyOp_Replace ); - } - catch ( const css::lang::IllegalArgumentException& ) - { - } - catch ( const css::container::NoSuchElementException& ) - { - } - catch ( const css::embed::InvalidStorageException& ) - { - } - catch ( const css::embed::StorageWrappedTargetException& ) - { - } + // Notify our listeners + for ( auto const & k: aRemoveEventNotifyContainer ) + implts_notifyContainerListener( k, NotifyOp_Remove ); + for ( auto const & k: aReplaceEventNotifyContainer ) + implts_notifyContainerListener( k, NotifyOp_Replace ); + } + catch ( const css::lang::IllegalArgumentException& ) + { + } + catch ( const css::container::NoSuchElementException& ) + { + } + catch ( const css::embed::InvalidStorageException& ) + { + } + catch ( const css::embed::StorageWrappedTargetException& ) + { } } @@ -1494,40 +1494,40 @@ void SAL_CALL ModuleUIConfigurationManager::reload() if ( m_bDisposed ) throw DisposedException(); - if ( m_xUserConfigStorage.is() && m_bModified && !m_bReadOnly ) + if ( !(m_xUserConfigStorage.is() && m_bModified && !m_bReadOnly) ) + return; + + // Try to access our module sub folder + ConfigEventNotifyContainer aRemoveNotifyContainer; + ConfigEventNotifyContainer aReplaceNotifyContainer; + for ( sal_Int16 i = 1; i < css::ui::UIElementType::COUNT; i++ ) { - // Try to access our module sub folder - ConfigEventNotifyContainer aRemoveNotifyContainer; - ConfigEventNotifyContainer aReplaceNotifyContainer; - for ( sal_Int16 i = 1; i < css::ui::UIElementType::COUNT; i++ ) + try { - try - { - UIElementType& rUserElementType = m_aUIElements[LAYER_USERDEFINED][i]; + UIElementType& rUserElementType = m_aUIElements[LAYER_USERDEFINED][i]; - if ( rUserElementType.bModified ) - { - UIElementType& rDefaultElementType = m_aUIElements[LAYER_DEFAULT][i]; - impl_reloadElementTypeData( rUserElementType, rDefaultElementType, aRemoveNotifyContainer, aReplaceNotifyContainer ); - } - } - catch ( const Exception& ) + if ( rUserElementType.bModified ) { - throw IOException(); + UIElementType& rDefaultElementType = m_aUIElements[LAYER_DEFAULT][i]; + impl_reloadElementTypeData( rUserElementType, rDefaultElementType, aRemoveNotifyContainer, aReplaceNotifyContainer ); } } + catch ( const Exception& ) + { + throw IOException(); + } + } - m_bModified = false; + m_bModified = false; - // Unlock mutex before notify our listeners - aGuard.clear(); + // Unlock mutex before notify our listeners + aGuard.clear(); - // Notify our listeners - for (const ui::ConfigurationEvent & j : aRemoveNotifyContainer) - implts_notifyContainerListener( j, NotifyOp_Remove ); - for (const ui::ConfigurationEvent & k : aReplaceNotifyContainer) - implts_notifyContainerListener( k, NotifyOp_Replace ); - } + // Notify our listeners + for (const ui::ConfigurationEvent & j : aRemoveNotifyContainer) + implts_notifyContainerListener( j, NotifyOp_Remove ); + for (const ui::ConfigurationEvent & k : aReplaceNotifyContainer) + implts_notifyContainerListener( k, NotifyOp_Replace ); } void SAL_CALL ModuleUIConfigurationManager::store() @@ -1537,29 +1537,29 @@ void SAL_CALL ModuleUIConfigurationManager::store() if ( m_bDisposed ) throw DisposedException(); - if ( m_xUserConfigStorage.is() && m_bModified && !m_bReadOnly ) + if ( !(m_xUserConfigStorage.is() && m_bModified && !m_bReadOnly) ) + return; + + // Try to access our module sub folder + for ( int i = 1; i < css::ui::UIElementType::COUNT; i++ ) { - // Try to access our module sub folder - for ( int i = 1; i < css::ui::UIElementType::COUNT; i++ ) + try { - try - { - UIElementType& rElementType = m_aUIElements[LAYER_USERDEFINED][i]; + UIElementType& rElementType = m_aUIElements[LAYER_USERDEFINED][i]; - if ( rElementType.bModified && rElementType.xStorage.is() ) - { - impl_storeElementTypeData( rElementType.xStorage, rElementType ); - m_pStorageHandler[i]->commitUserChanges(); - } - } - catch ( const Exception& ) + if ( rElementType.bModified && rElementType.xStorage.is() ) { - throw IOException(); + impl_storeElementTypeData( rElementType.xStorage, rElementType ); + m_pStorageHandler[i]->commitUserChanges(); } } - - m_bModified = false; + catch ( const Exception& ) + { + throw IOException(); + } } + + m_bModified = false; } void SAL_CALL ModuleUIConfigurationManager::storeToStorage( const Reference< XStorage >& Storage ) @@ -1569,30 +1569,30 @@ void SAL_CALL ModuleUIConfigurationManager::storeToStorage( const Reference< XSt if ( m_bDisposed ) throw DisposedException(); - if ( m_xUserConfigStorage.is() && m_bModified && !m_bReadOnly ) + if ( !(m_xUserConfigStorage.is() && m_bModified && !m_bReadOnly) ) + return; + + // Try to access our module sub folder + for ( int i = 1; i < css::ui::UIElementType::COUNT; i++ ) { - // Try to access our module sub folder - for ( int i = 1; i < css::ui::UIElementType::COUNT; i++ ) + try { - try - { - Reference< XStorage > xElementTypeStorage( Storage->openStorageElement( - UIELEMENTTYPENAMES[i], ElementModes::READWRITE )); - UIElementType& rElementType = m_aUIElements[LAYER_USERDEFINED][i]; + Reference< XStorage > xElementTypeStorage( Storage->openStorageElement( + UIELEMENTTYPENAMES[i], ElementModes::READWRITE )); + UIElementType& rElementType = m_aUIElements[LAYER_USERDEFINED][i]; - if ( rElementType.bModified && xElementTypeStorage.is() ) - impl_storeElementTypeData( xElementTypeStorage, rElementType, false ); // store data to storage, but don't reset modify flag! - } - catch ( const Exception& ) - { - throw IOException(); - } + if ( rElementType.bModified && xElementTypeStorage.is() ) + impl_storeElementTypeData( xElementTypeStorage, rElementType, false ); // store data to storage, but don't reset modify flag! + } + catch ( const Exception& ) + { + throw IOException(); } - - Reference< XTransactedObject > xTransactedObject( Storage, UNO_QUERY ); - if ( xTransactedObject.is() ) - xTransactedObject->commit(); } + + Reference< XTransactedObject > xTransactedObject( Storage, UNO_QUERY ); + if ( xTransactedObject.is() ) + xTransactedObject->commit(); } sal_Bool SAL_CALL ModuleUIConfigurationManager::isModified() @@ -1612,31 +1612,31 @@ sal_Bool SAL_CALL ModuleUIConfigurationManager::isReadOnly() void ModuleUIConfigurationManager::implts_notifyContainerListener( const ui::ConfigurationEvent& aEvent, NotifyOp eOp ) { ::cppu::OInterfaceContainerHelper* pContainer = m_aListenerContainer.getContainer( cppu::UnoType<css::ui::XUIConfigurationListener>::get()); - if ( pContainer != nullptr ) + if ( pContainer == nullptr ) + return; + + ::cppu::OInterfaceIteratorHelper pIterator( *pContainer ); + while ( pIterator.hasMoreElements() ) { - ::cppu::OInterfaceIteratorHelper pIterator( *pContainer ); - while ( pIterator.hasMoreElements() ) + try { - try - { - switch ( eOp ) - { - case NotifyOp_Replace: - static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementReplaced( aEvent ); - break; - case NotifyOp_Insert: - static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementInserted( aEvent ); - break; - case NotifyOp_Remove: - static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementRemoved( aEvent ); - break; - } - } - catch( const css::uno::RuntimeException& ) + switch ( eOp ) { - pIterator.remove(); + case NotifyOp_Replace: + static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementReplaced( aEvent ); + break; + case NotifyOp_Insert: + static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementInserted( aEvent ); + break; + case NotifyOp_Remove: + static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementRemoved( aEvent ); + break; } } + catch( const css::uno::RuntimeException& ) + { + pIterator.remove(); + } } } diff --git a/framework/source/uiconfiguration/uiconfigurationmanager.cxx b/framework/source/uiconfiguration/uiconfigurationmanager.cxx index cf5def97aa4a..5ec6a167131e 100644 --- a/framework/source/uiconfiguration/uiconfigurationmanager.cxx +++ b/framework/source/uiconfiguration/uiconfigurationmanager.cxx @@ -755,76 +755,76 @@ void SAL_CALL UIConfigurationManager::reset() if ( isReadOnly() ) return; - if ( m_xDocConfigStorage.is() ) + if ( !m_xDocConfigStorage.is() ) + return; + + try { - try + // Remove all elements from our user-defined storage! + bool bCommit( false ); + for ( int i = 1; i < css::ui::UIElementType::COUNT; i++ ) { - // Remove all elements from our user-defined storage! - bool bCommit( false ); - for ( int i = 1; i < css::ui::UIElementType::COUNT; i++ ) - { - UIElementType& rElementType = m_aUIElements[i]; + UIElementType& rElementType = m_aUIElements[i]; - if ( rElementType.xStorage.is() ) + if ( rElementType.xStorage.is() ) + { + bool bCommitSubStorage( false ); + Sequence< OUString > aUIElementStreamNames = rElementType.xStorage->getElementNames(); + for ( sal_Int32 j = 0; j < aUIElementStreamNames.getLength(); j++ ) { - bool bCommitSubStorage( false ); - Sequence< OUString > aUIElementStreamNames = rElementType.xStorage->getElementNames(); - for ( sal_Int32 j = 0; j < aUIElementStreamNames.getLength(); j++ ) - { - rElementType.xStorage->removeElement( aUIElementStreamNames[j] ); - bCommitSubStorage = true; - bCommit = true; - } + rElementType.xStorage->removeElement( aUIElementStreamNames[j] ); + bCommitSubStorage = true; + bCommit = true; + } - if ( bCommitSubStorage ) - { - Reference< XTransactedObject > xTransactedObject( rElementType.xStorage, UNO_QUERY ); - if ( xTransactedObject.is() ) - xTransactedObject->commit(); - } + if ( bCommitSubStorage ) + { + Reference< XTransactedObject > xTransactedObject( rElementType.xStorage, UNO_QUERY ); + if ( xTransactedObject.is() ) + xTransactedObject->commit(); } } + } - // Commit changes - if ( bCommit ) - { - Reference< XTransactedObject > xTransactedObject( m_xDocConfigStorage, UNO_QUERY ); - if ( xTransactedObject.is() ) - xTransactedObject->commit(); - } + // Commit changes + if ( bCommit ) + { + Reference< XTransactedObject > xTransactedObject( m_xDocConfigStorage, UNO_QUERY ); + if ( xTransactedObject.is() ) + xTransactedObject->commit(); + } - // remove settings from user defined layer and notify listener about removed settings data! - // Try to access our module sub folder - ConfigEventNotifyContainer aRemoveEventNotifyContainer; - for ( sal_Int16 j = 1; j < css::ui::UIElementType::COUNT; j++ ) - { - UIElementType& rDocElementType = m_aUIElements[j]; + // remove settings from user defined layer and notify listener about removed settings data! + // Try to access our module sub folder + ConfigEventNotifyContainer aRemoveEventNotifyContainer; + for ( sal_Int16 j = 1; j < css::ui::UIElementType::COUNT; j++ ) + { + UIElementType& rDocElementType = m_aUIElements[j]; - impl_resetElementTypeData( rDocElementType, aRemoveEventNotifyContainer ); - rDocElementType.bModified = false; - } + impl_resetElementTypeData( rDocElementType, aRemoveEventNotifyContainer ); + rDocElementType.bModified = false; + } - m_bModified = false; + m_bModified = false; - // Unlock mutex before notify our listeners - aGuard.clear(); + // Unlock mutex before notify our listeners + aGuard.clear(); - // Notify our listeners - for (const ConfigurationEvent & k : aRemoveEventNotifyContainer) - implts_notifyContainerListener( k, NotifyOp_Remove ); - } - catch ( const css::lang::IllegalArgumentException& ) - { - } - catch ( const css::container::NoSuchElementException& ) - { - } - catch ( const css::embed::InvalidStorageException& ) - { - } - catch ( const css::embed::StorageWrappedTargetException& ) - { - } + // Notify our listeners + for (const ConfigurationEvent & k : aRemoveEventNotifyContainer) + implts_notifyContainerListener( k, NotifyOp_Remove ); + } + catch ( const css::lang::IllegalArgumentException& ) + { + } + catch ( const css::container::NoSuchElementException& ) + { + } + catch ( const css::embed::InvalidStorageException& ) + { + } + catch ( const css::embed::StorageWrappedTargetException& ) + { } } @@ -1226,36 +1226,36 @@ void SAL_CALL UIConfigurationManager::reload() if ( m_bDisposed ) throw DisposedException(); - if ( m_xDocConfigStorage.is() && m_bModified && !m_bReadOnly ) + if ( !(m_xDocConfigStorage.is() && m_bModified && !m_bReadOnly) ) + return; + + // Try to access our module sub folder + ConfigEventNotifyContainer aRemoveNotifyContainer; + ConfigEventNotifyContainer aReplaceNotifyContainer; + for ( sal_Int16 i = 1; i < css::ui::UIElementType::COUNT; i++ ) { - // Try to access our module sub folder - ConfigEventNotifyContainer aRemoveNotifyContainer; - ConfigEventNotifyContainer aReplaceNotifyContainer; - for ( sal_Int16 i = 1; i < css::ui::UIElementType::COUNT; i++ ) + try { - try - { - UIElementType& rDocElementType = m_aUIElements[i]; - if ( rDocElementType.bModified ) - impl_reloadElementTypeData( rDocElementType, aRemoveNotifyContainer, aReplaceNotifyContainer ); - } - catch ( const Exception& ) - { - throw IOException(); - } + UIElementType& rDocElementType = m_aUIElements[i]; + if ( rDocElementType.bModified ) + impl_reloadElementTypeData( rDocElementType, aRemoveNotifyContainer, aReplaceNotifyContainer ); } + catch ( const Exception& ) + { + throw IOException(); + } + } - m_bModified = false; + m_bModified = false; - // Unlock mutex before notify our listeners - aGuard.clear(); + // Unlock mutex before notify our listeners + aGuard.clear(); - // Notify our listeners - for (const ConfigurationEvent & j : aRemoveNotifyContainer) - implts_notifyContainerListener( j, NotifyOp_Remove ); - for (const ConfigurationEvent & k : aReplaceNotifyContainer) - implts_notifyContainerListener( k, NotifyOp_Replace ); - } + // Notify our listeners + for (const ConfigurationEvent & j : aRemoveNotifyContainer) + implts_notifyContainerListener( j, NotifyOp_Remove ); + for (const ConfigurationEvent & k : aReplaceNotifyContainer) + implts_notifyContainerListener( k, NotifyOp_Replace ); } void SAL_CALL UIConfigurationManager::store() @@ -1265,29 +1265,29 @@ void SAL_CALL UIConfigurationManager::store() if ( m_bDisposed ) throw DisposedException(); - if ( m_xDocConfigStorage.is() && m_bModified && !m_bReadOnly ) + if ( !(m_xDocConfigStorage.is() && m_bModified && !m_bReadOnly) ) + return; + + // Try to access our module sub folder + for ( int i = 1; i < css::ui::UIElementType::COUNT; i++ ) { - // Try to access our module sub folder - for ( int i = 1; i < css::ui::UIElementType::COUNT; i++ ) + try { - try - { - UIElementType& rElementType = m_aUIElements[i]; + UIElementType& rElementType = m_aUIElements[i]; - if ( rElementType.bModified && rElementType.xStorage.is() ) - impl_storeElementTypeData( rElementType.xStorage, rElementType ); - } - catch ( const Exception& ) - { - throw IOException(); - } + if ( rElementType.bModified && rElementType.xStorage.is() ) + impl_storeElementTypeData( rElementType.xStorage, rElementType ); + } + catch ( const Exception& ) + { + throw IOException(); } - - m_bModified = false; - Reference< XTransactedObject > xTransactedObject( m_xDocConfigStorage, UNO_QUERY ); - if ( xTransactedObject.is() ) - xTransactedObject->commit(); } + + m_bModified = false; + Reference< XTransactedObject > xTransactedObject( m_xDocConfigStorage, UNO_QUERY ); + if ( xTransactedObject.is() ) + xTransactedObject->commit(); } void SAL_CALL UIConfigurationManager::storeToStorage( const Reference< XStorage >& Storage ) @@ -1297,30 +1297,30 @@ void SAL_CALL UIConfigurationManager::storeToStorage( const Reference< XStorage if ( m_bDisposed ) throw DisposedException(); - if ( m_xDocConfigStorage.is() && m_bModified && !m_bReadOnly ) + if ( !(m_xDocConfigStorage.is() && m_bModified && !m_bReadOnly) ) + return; + + // Try to access our module sub folder + for ( int i = 1; i < css::ui::UIElementType::COUNT; i++ ) { - // Try to access our module sub folder - for ( int i = 1; i < css::ui::UIElementType::COUNT; i++ ) + try { - try - { - Reference< XStorage > xElementTypeStorage( Storage->openStorageElement( - UIELEMENTTYPENAMES[i], ElementModes::READWRITE )); - UIElementType& rElementType = m_aUIElements[i]; + Reference< XStorage > xElementTypeStorage( Storage->openStorageElement( + UIELEMENTTYPENAMES[i], ElementModes::READWRITE )); + UIElementType& rElementType = m_aUIElements[i]; - if ( rElementType.bModified && xElementTypeStorage.is() ) - impl_storeElementTypeData( xElementTypeStorage, rElementType, false ); // store data to storage, but don't reset modify flag! - } - catch ( const Exception& ) - { - throw IOException(); - } + if ( rElementType.bModified && xElementTypeStorage.is() ) + impl_storeElementTypeData( xElementTypeStorage, rElementType, false ); // store data to storage, but don't reset modify flag! + } + catch ( const Exception& ) + { + throw IOException(); } - - Reference< XTransactedObject > xTransactedObject( Storage, UNO_QUERY ); - if ( xTransactedObject.is() ) - xTransactedObject->commit(); } + + Reference< XTransactedObject > xTransactedObject( Storage, UNO_QUERY ); + if ( xTransactedObject.is() ) + xTransactedObject->commit(); } sal_Bool SAL_CALL UIConfigurationManager::isModified() @@ -1340,31 +1340,31 @@ sal_Bool SAL_CALL UIConfigurationManager::isReadOnly() void UIConfigurationManager::implts_notifyContainerListener( const ConfigurationEvent& aEvent, NotifyOp eOp ) { ::cppu::OInterfaceContainerHelper* pContainer = m_aListenerContainer.getContainer( cppu::UnoType<css::ui::XUIConfigurationListener>::get()); - if ( pContainer != nullptr ) + if ( pContainer == nullptr ) + return; + + ::cppu::OInterfaceIteratorHelper pIterator( *pContainer ); + while ( pIterator.hasMoreElements() ) { - ::cppu::OInterfaceIteratorHelper pIterator( *pContainer ); - while ( pIterator.hasMoreElements() ) + try { - try - { - switch ( eOp ) - { - case NotifyOp_Replace: - static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementReplaced( aEvent ); - break; - case NotifyOp_Insert: - static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementInserted( aEvent ); - break; - case NotifyOp_Remove: - static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementRemoved( aEvent ); - break; - } - } - catch( const css::uno::RuntimeException& ) + switch ( eOp ) { - pIterator.remove(); + case NotifyOp_Replace: + static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementReplaced( aEvent ); + break; + case NotifyOp_Insert: + static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementInserted( aEvent ); + break; + case NotifyOp_Remove: + static_cast< css::ui::XUIConfigurationListener*>(pIterator.next())->elementRemoved( aEvent ); + break; } } + catch( const css::uno::RuntimeException& ) + { + pIterator.remove(); + } } } diff --git a/framework/source/uiconfiguration/windowstateconfiguration.cxx b/framework/source/uiconfiguration/windowstateconfiguration.cxx index eb9b3bcfeee4..536f4b2d048f 100644 --- a/framework/source/uiconfiguration/windowstateconfiguration.cxx +++ b/framework/source/uiconfiguration/windowstateconfiguration.cxx @@ -369,41 +369,41 @@ void SAL_CALL ConfigurationAccess_WindowState::insertByName( const OUString& rRe } // Try to ask our configuration access - if ( m_xConfigAccess.is() ) - { - if ( m_xConfigAccess->hasByName( rResourceURL ) ) - throw ElementExistException(); + if ( !m_xConfigAccess.is() ) + return; - WindowStateInfo aWinStateInfo; - impl_fillStructFromSequence( aWinStateInfo, aPropSet ); - m_aResourceURLToInfoCache.emplace( rResourceURL, aWinStateInfo ); + if ( m_xConfigAccess->hasByName( rResourceURL ) ) + throw ElementExistException(); - // insert must be write-through => insert element into configuration - Reference< XNameContainer > xNameContainer( m_xConfigAccess, UNO_QUERY ); - if ( xNameContainer.is() ) - { - Reference< XSingleServiceFactory > xFactory( m_xConfigAccess, UNO_QUERY ); - g.clear(); + WindowStateInfo aWinStateInfo; + impl_fillStructFromSequence( aWinStateInfo, aPropSet ); + m_aResourceURLToInfoCache.emplace( rResourceURL, aWinStateInfo ); - try - { - Reference< XPropertySet > xPropSet( xFactory->createInstance(), UNO_QUERY ); - if ( xPropSet.is() ) - { - Any a; - impl_putPropertiesFromStruct( aWinStateInfo, xPropSet ); - a <<= xPropSet; - xNameContainer->insertByName( rResourceURL, a ); - Reference< XChangesBatch > xFlush( xFactory, UNO_QUERY ); - if ( xFlush.is() ) - xFlush->commitChanges(); - } - } - catch ( const Exception& ) - { - } + // insert must be write-through => insert element into configuration + Reference< XNameContainer > xNameContainer( m_xConfigAccess, UNO_QUERY ); + if ( !xNameContainer.is() ) + return; + + Reference< XSingleServiceFactory > xFactory( m_xConfigAccess, UNO_QUERY ); + g.clear(); + + try + { + Reference< XPropertySet > xPropSet( xFactory->createInstance(), UNO_QUERY ); + if ( xPropSet.is() ) + { + Any a; + impl_putPropertiesFromStruct( aWinStateInfo, xPropSet ); + a <<= xPropSet; + xNameContainer->insertByName( rResourceURL, a ); + Reference< XChangesBatch > xFlush( xFactory, UNO_QUERY ); + if ( xFlush.is() ) + xFlush->commitChanges(); } } + catch ( const Exception& ) + { + } } // XNameReplace @@ -445,33 +445,33 @@ void SAL_CALL ConfigurationAccess_WindowState::replaceByName( const OUString& rR } - if ( m_bModified && pIter != m_aResourceURLToInfoCache.end() ) + if ( !(m_bModified && pIter != m_aResourceURLToInfoCache.end()) ) + return; + + Reference< XNameContainer > xNameContainer( m_xConfigAccess, UNO_QUERY ); + if ( !xNameContainer.is() ) + return; + + WindowStateInfo aWinStateInfo( pIter->second ); + OUString aResourceURL( pIter->first ); + m_bModified = false; + g.clear(); + + try { - Reference< XNameContainer > xNameContainer( m_xConfigAccess, UNO_QUERY ); - if ( xNameContainer.is() ) + Reference< XPropertySet > xPropSet; + if ( xNameContainer->getByName( aResourceURL ) >>= xPropSet ) { - WindowStateInfo aWinStateInfo( pIter->second ); - OUString aResourceURL( pIter->first ); - m_bModified = false; - g.clear(); - - try - { - Reference< XPropertySet > xPropSet; - if ( xNameContainer->getByName( aResourceURL ) >>= xPropSet ) - { - impl_putPropertiesFromStruct( aWinStateInfo, xPropSet ); + impl_putPropertiesFromStruct( aWinStateInfo, xPropSet ); - Reference< XChangesBatch > xFlush( m_xConfigAccess, UNO_QUERY ); - if ( xFlush.is() ) - xFlush->commitChanges(); - } - } - catch ( const Exception& ) - { - } + Reference< XChangesBatch > xFlush( m_xConfigAccess, UNO_QUERY ); + if ( xFlush.is() ) + xFlush->commitChanges(); } } + catch ( const Exception& ) + { + } } diff --git a/framework/source/uielement/FixedImageToolbarController.cxx b/framework/source/uielement/FixedImageToolbarController.cxx index 19e05f081d0d..c42bb518a8e7 100644 --- a/framework/source/uielement/FixedImageToolbarController.cxx +++ b/framework/source/uielement/FixedImageToolbarController.cxx @@ -73,29 +73,29 @@ void FixedImageToolbarController::CheckAndUpdateImages() SvtMiscOptions aMiscOptions; const sal_Int16 eNewSymbolSize = aMiscOptions.GetCurrentSymbolsSize(); - if (m_eSymbolSize != eNewSymbolSize) + if (m_eSymbolSize == eNewSymbolSize) + return; + + m_eSymbolSize = eNewSymbolSize; + + // Refresh images if requested + auto aSize(m_pFixedImageControl->GetOptimalSize()); + if (m_eSymbolSize == SFX_SYMBOLS_SIZE_LARGE) + { + aSize.setWidth(26); + aSize.setHeight(26); + } + else if (m_eSymbolSize == SFX_SYMBOLS_SIZE_32) + { + aSize.setWidth(32); + aSize.setHeight(32); + } + else { - m_eSymbolSize = eNewSymbolSize; - - // Refresh images if requested - auto aSize(m_pFixedImageControl->GetOptimalSize()); - if (m_eSymbolSize == SFX_SYMBOLS_SIZE_LARGE) - { - aSize.setWidth(26); - aSize.setHeight(26); - } - else if (m_eSymbolSize == SFX_SYMBOLS_SIZE_32) - { - aSize.setWidth(32); - aSize.setHeight(32); - } - else - { - aSize.setWidth(16); - aSize.setHeight(16); - } - m_pFixedImageControl->SetSizePixel(aSize); + aSize.setWidth(16); + aSize.setHeight(16); } + m_pFixedImageControl->SetSizePixel(aSize); } IMPL_LINK_NOARG(FixedImageToolbarController, MiscOptionsChanged, LinkParamNone*, void) diff --git a/framework/source/uielement/FixedTextToolbarController.cxx b/framework/source/uielement/FixedTextToolbarController.cxx index 26208cc68bb1..374ad33798aa 100644 --- a/framework/source/uielement/FixedTextToolbarController.cxx +++ b/framework/source/uielement/FixedTextToolbarController.cxx @@ -70,21 +70,21 @@ void FixedTextToolbarController::executeControlCommand( { SolarMutexGuard aSolarMutexGuard; - if (rControlCommand.Command == "SetText") + if (rControlCommand.Command != "SetText") + return; + + for (sal_Int32 i = 0; i < rControlCommand.Arguments.getLength(); i++) { - for (sal_Int32 i = 0; i < rControlCommand.Arguments.getLength(); i++) + if (rControlCommand.Arguments[i].Name == "Text") { - if (rControlCommand.Arguments[i].Name == "Text") - { - OUString aText; - rControlCommand.Arguments[i].Value >>= aText; - m_pFixedTextControl->SetText(aText); - m_pFixedTextControl->SetSizePixel(m_pFixedTextControl->GetOptimalSize()); + OUString aText; + rControlCommand.Arguments[i].Value >>= aText; + m_pFixedTextControl->SetText(aText); + m_pFixedTextControl->SetSizePixel(m_pFixedTextControl->GetOptimalSize()); - // send notification - notifyTextChanged(aText); - break; - } + // send notification + notifyTextChanged(aText); + break; } } } diff --git a/framework/source/uielement/addonstoolbarwrapper.cxx b/framework/source/uielement/addonstoolbarwrapper.cxx index 8c62997a27a2..025b57904ff1 100644 --- a/framework/source/uielement/addonstoolbarwrapper.cxx +++ b/framework/source/uielement/addonstoolbarwrapper.cxx @@ -76,59 +76,59 @@ void SAL_CALL AddonsToolBarWrapper::initialize( const Sequence< Any >& aArgument if ( m_bDisposed ) throw DisposedException(); - if ( !m_bInitialized ) + if ( m_bInitialized ) + return; + + UIElementWrapperBase::initialize( aArguments ); + + for ( sal_Int32 n = 0; n < aArguments.getLength(); n++ ) { - UIElementWrapperBase::initialize( aArguments ); + PropertyValue aPropValue; + if ( aArguments[n] >>= aPropValue ) + { + if ( aPropValue.Name == "ConfigurationData" ) + aPropValue.Value >>= m_aConfigData; + } + } + + Reference< XFrame > xFrame( m_xWeakFrame ); + if ( !(xFrame.is() && m_aConfigData.hasElements()) ) + return; - for ( sal_Int32 n = 0; n < aArguments.getLength(); n++ ) + // Create VCL based toolbar which will be filled with settings data + VclPtr<ToolBox> pToolBar; + AddonsToolBarManager* pToolBarManager = nullptr; + { + SolarMutexGuard aSolarMutexGuard; + VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xFrame->getContainerWindow() ); + if ( pWindow ) { - PropertyValue aPropValue; - if ( aArguments[n] >>= aPropValue ) - { - if ( aPropValue.Name == "ConfigurationData" ) - aPropValue.Value >>= m_aConfigData; - } + sal_uLong nStyles = WB_BORDER | WB_SCROLL | WB_MOVEABLE | WB_3DLOOK | WB_DOCKABLE | WB_SIZEABLE | WB_CLOSEABLE; + + pToolBar = VclPtr<ToolBox>::Create( pWindow, nStyles ); + pToolBar->SetLineSpacing(true); + pToolBarManager = new AddonsToolBarManager( m_xContext, xFrame, m_aResourceURL, pToolBar ); + m_xToolBarManager.set( static_cast< OWeakObject *>( pToolBarManager ), UNO_QUERY ); } + } - Reference< XFrame > xFrame( m_xWeakFrame ); - if ( xFrame.is() && m_aConfigData.hasElements() ) + try + { + if ( m_aConfigData.hasElements() && pToolBar && pToolBarManager ) { - // Create VCL based toolbar which will be filled with settings data - VclPtr<ToolBox> pToolBar; - AddonsToolBarManager* pToolBarManager = nullptr; - { - SolarMutexGuard aSolarMutexGuard; - VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xFrame->getContainerWindow() ); - if ( pWindow ) - { - sal_uLong nStyles = WB_BORDER | WB_SCROLL | WB_MOVEABLE | WB_3DLOOK | WB_DOCKABLE | WB_SIZEABLE | WB_CLOSEABLE; - - pToolBar = VclPtr<ToolBox>::Create( pWindow, nStyles ); - pToolBar->SetLineSpacing(true); - pToolBarManager = new AddonsToolBarManager( m_xContext, xFrame, m_aResourceURL, pToolBar ); - m_xToolBarManager.set( static_cast< OWeakObject *>( pToolBarManager ), UNO_QUERY ); - } - } - - try - { - if ( m_aConfigData.hasElements() && pToolBar && pToolBarManager ) - { - // Fill toolbar with container contents - pToolBarManager->FillToolbar( m_aConfigData ); - pToolBar->SetOutStyle( SvtMiscOptions().GetToolboxStyle() ); - pToolBar->EnableCustomize(); - ::Size aActSize( pToolBar->GetSizePixel() ); - ::Size aSize( pToolBar->CalcWindowSizePixel() ); - aSize.setWidth( aActSize.Width() ); - pToolBar->SetSizePixel( aSize ); - } - } - catch ( const NoSuchElementException& ) - { - } + // Fill toolbar with container contents + pToolBarManager->FillToolbar( m_aConfigData ); + pToolBar->SetOutStyle( SvtMiscOptions().GetToolboxStyle() ); + pToolBar->EnableCustomize(); + ::Size aActSize( pToolBar->GetSizePixel() ); + ::Size aSize( pToolBar->CalcWindowSizePixel() ); + aSize.setWidth( aActSize.Width() ); + pToolBar->SetSizePixel( aSize ); } } + catch ( const NoSuchElementException& ) + { + } } // XUIElement interface diff --git a/framework/source/uielement/buttontoolbarcontroller.cxx b/framework/source/uielement/buttontoolbarcontroller.cxx index 175fad04bbb2..c13d645f57f0 100644 --- a/framework/source/uielement/buttontoolbarcontroller.cxx +++ b/framework/source/uielement/buttontoolbarcontroller.cxx @@ -100,25 +100,25 @@ void SAL_CALL ButtonToolbarController::initialize( bInitialized = m_bInitialized; } - if ( !bInitialized ) - { - SolarMutexGuard aSolarMutexGuard; - m_bInitialized = true; + if ( bInitialized ) + return; - PropertyValue aPropValue; - for ( int i = 0; i < aArguments.getLength(); i++ ) + SolarMutexGuard aSolarMutexGuard; + m_bInitialized = true; + + PropertyValue aPropValue; + for ( int i = 0; i < aArguments.getLength(); i++ ) + { + if ( aArguments[i] >>= aPropValue ) { - if ( aArguments[i] >>= aPropValue ) + if ( aPropValue.Name == "Frame" ) + m_xFrame.set(aPropValue.Value,UNO_QUERY); + else if ( aPropValue.Name == "CommandURL" ) + aPropValue.Value >>= m_aCommandURL; + else if ( aPropValue.Name == "ServiceManager" ) { - if ( aPropValue.Name == "Frame" ) - m_xFrame.set(aPropValue.Value,UNO_QUERY); - else if ( aPropValue.Name == "CommandURL" ) - aPropValue.Value >>= m_aCommandURL; - else if ( aPropValue.Name == "ServiceManager" ) - { - Reference<XMultiServiceFactory> xServiceManager(aPropValue.Value,UNO_QUERY); - m_xContext = comphelper::getComponentContext(xServiceManager); - } + Reference<XMultiServiceFactory> xServiceManager(aPropValue.Value,UNO_QUERY); + m_xContext = comphelper::getComponentContext(xServiceManager); } } } @@ -224,21 +224,21 @@ void SAL_CALL ButtonToolbarController::execute( sal_Int16 KeyModifier ) xDispatch = xDispatchProvider->queryDispatch( aTargetURL, OUString(), 0 ); } - if ( xDispatch.is() ) + if ( !xDispatch.is() ) + return; + + try { - try - { - Sequence<PropertyValue> aArgs( 1 ); + Sequence<PropertyValue> aArgs( 1 ); - // Provide key modifier information to dispatch function - aArgs[0].Name = "KeyModifier"; - aArgs[0].Value <<= KeyModifier; + // Provide key modifier information to dispatch function + aArgs[0].Name = "KeyModifier"; + aArgs[0].Value <<= KeyModifier; - xDispatch->dispatch( aTargetURL, aArgs ); - } - catch ( const DisposedException& ) - { - } + xDispatch->dispatch( aTargetURL, aArgs ); + } + catch ( const DisposedException& ) + { } } diff --git a/framework/source/uielement/complextoolbarcontroller.cxx b/framework/source/uielement/complextoolbarcontroller.cxx index eb4a59f38a0a..9b985a039e78 100644 --- a/framework/source/uielement/complextoolbarcontroller.cxx +++ b/framework/source/uielement/complextoolbarcontroller.cxx @@ -128,80 +128,80 @@ void ComplexToolbarController::statusChanged( const FeatureStateEvent& Event ) if ( m_bDisposed ) return; - if ( m_xToolbar ) - { - m_xToolbar->EnableItem( m_nID, Event.IsEnabled ); + if ( !m_xToolbar ) + return; - ToolBoxItemBits nItemBits = m_xToolbar->GetItemBits( m_nID ); - nItemBits &= ~ToolBoxItemBits::CHECKABLE; - TriState eTri = TRISTATE_FALSE; + m_xToolbar->EnableItem( m_nID, Event.IsEnabled ); - bool bValue; - OUString aStrValue; - ItemStatus aItemState; - Visibility aItemVisibility; - ControlCommand aControlCommand; + ToolBoxItemBits nItemBits = m_xToolbar->GetItemBits( m_nID ); + nItemBits &= ~ToolBoxItemBits::CHECKABLE; + TriState eTri = TRISTATE_FALSE; - if ( Event.State >>= bValue ) - { - // Boolean, treat it as checked/unchecked - if ( m_bMadeInvisible ) - m_xToolbar->ShowItem( m_nID ); - m_xToolbar->CheckItem( m_nID, bValue ); - if ( bValue ) - eTri = TRISTATE_TRUE; - nItemBits |= ToolBoxItemBits::CHECKABLE; - } - else if ( Event.State >>= aStrValue ) - { - OUString aText( MnemonicGenerator::EraseAllMnemonicChars( aStrValue ) ); - m_xToolbar->SetItemText( m_nID, aText ); - m_xToolbar->SetQuickHelpText( m_nID, aText ); + bool bValue; + OUString aStrValue; + ItemStatus aItemState; + Visibility aItemVisibility; + ControlCommand aControlCommand; - if ( m_bMadeInvisible ) - m_xToolbar->ShowItem( m_nID ); - } - else if ( Event.State >>= aItemState ) - { - eTri = TRISTATE_INDET; - nItemBits |= ToolBoxItemBits::CHECKABLE; - if ( m_bMadeInvisible ) - m_xToolbar->ShowItem( m_nID ); - } - else if ( Event.State >>= aItemVisibility ) - { - m_xToolbar->ShowItem( m_nID, aItemVisibility.bVisible ); - m_bMadeInvisible = !aItemVisibility.bVisible; - } - else if ( Event.State >>= aControlCommand ) + if ( Event.State >>= bValue ) + { + // Boolean, treat it as checked/unchecked + if ( m_bMadeInvisible ) + m_xToolbar->ShowItem( m_nID ); + m_xToolbar->CheckItem( m_nID, bValue ); + if ( bValue ) + eTri = TRISTATE_TRUE; + nItemBits |= ToolBoxItemBits::CHECKABLE; + } + else if ( Event.State >>= aStrValue ) + { + OUString aText( MnemonicGenerator::EraseAllMnemonicChars( aStrValue ) ); + m_xToolbar->SetItemText( m_nID, aText ); + m_xToolbar->SetQuickHelpText( m_nID, aText ); + + if ( m_bMadeInvisible ) + m_xToolbar->ShowItem( m_nID ); + } + else if ( Event.State >>= aItemState ) + { + eTri = TRISTATE_INDET; + nItemBits |= ToolBoxItemBits::CHECKABLE; + if ( m_bMadeInvisible ) + m_xToolbar->ShowItem( m_nID ); + } + else if ( Event.State >>= aItemVisibility ) + { + m_xToolbar->ShowItem( m_nID, aItemVisibility.bVisible ); + m_bMadeInvisible = !aItemVisibility.bVisible; + } + else if ( Event.State >>= aControlCommand ) + { + if (aControlCommand.Command == "SetQuickHelpText") { - if (aControlCommand.Command == "SetQuickHelpText") + for (sal_Int32 i = 0; i < aControlCommand.Arguments.getLength(); i++) { - for (sal_Int32 i = 0; i < aControlCommand.Arguments.getLength(); i++) + if (aControlCommand.Arguments[i].Name == "HelpText") { - if (aControlCommand.Arguments[i].Name == "HelpText") - { - OUString aHelpText; - aControlCommand.Arguments[i].Value >>= aHelpText; - m_xToolbar->SetQuickHelpText(m_nID, aHelpText); - break; - } + OUString aHelpText; + aControlCommand.Arguments[i].Value >>= aHelpText; + m_xToolbar->SetQuickHelpText(m_nID, aHelpText); + break; } } - else - { - executeControlCommand( aControlCommand ); - } - if ( m_bMadeInvisible ) - m_xToolbar->ShowItem( m_nID ); } - - else if ( m_bMadeInvisible ) + else + { + executeControlCommand( aControlCommand ); + } + if ( m_bMadeInvisible ) m_xToolbar->ShowItem( m_nID ); - - m_xToolbar->SetItemState( m_nID, eTri ); - m_xToolbar->SetItemBits( m_nID, nItemBits ); } + + else if ( m_bMadeInvisible ) + m_xToolbar->ShowItem( m_nID ); + + m_xToolbar->SetItemState( m_nID, eTri ); + m_xToolbar->SetItemBits( m_nID, nItemBits ); } IMPL_STATIC_LINK( ComplexToolbarController, ExecuteHdl_Impl, void*, p, void ) @@ -251,25 +251,25 @@ void ComplexToolbarController::addNotifyInfo( { uno::Reference< frame::XControlNotificationListener > xControlNotify( xDispatch, uno::UNO_QUERY ); - if ( xControlNotify.is() ) - { - // Execute notification asynchronously - NotifyInfo* pNotifyInfo = new NotifyInfo; - - pNotifyInfo->aEventName = aEventName; - pNotifyInfo->xNotifyListener = xControlNotify; - pNotifyInfo->aSourceURL = getInitializedURL(); - - // Add frame as source to the information sequence - sal_Int32 nCount = rInfo.getLength(); - uno::Sequence< beans::NamedValue > aInfoSeq( rInfo ); - aInfoSeq.realloc( nCount+1 ); - aInfoSeq[nCount].Name = "Source"; - aInfoSeq[nCount].Value <<= getFrameInterface(); - pNotifyInfo->aInfoSeq = aInfoSeq; - - Application::PostUserEvent( LINK(nullptr, ComplexToolbarController, Notify_Impl), pNotifyInfo ); - } + if ( !xControlNotify.is() ) + return; + + // Execute notification asynchronously + NotifyInfo* pNotifyInfo = new NotifyInfo; + + pNotifyInfo->aEventName = aEventName; + pNotifyInfo->xNotifyListener = xControlNotify; + pNotifyInfo->aSourceURL = getInitializedURL(); + + // Add frame as source to the information sequence + sal_Int32 nCount = rInfo.getLength(); + uno::Sequence< beans::NamedValue > aInfoSeq( rInfo ); + aInfoSeq.realloc( nCount+1 ); + aInfoSeq[nCount].Name = "Source"; + aInfoSeq[nCount].Value <<= getFrameInterface(); + pNotifyInfo->aInfoSeq = aInfoSeq; + + Application::PostUserEvent( LINK(nullptr, ComplexToolbarController, Notify_Impl), pNotifyInfo ); } sal_Int32 ComplexToolbarController::getFontSizePixel( const vcl::Window* pWindow ) diff --git a/framework/source/uielement/controlmenucontroller.cxx b/framework/source/uielement/controlmenucontroller.cxx index 3ed5bc11aee2..9e6d490d3e33 100644 --- a/framework/source/uielement/controlmenucontroller.cxx +++ b/framework/source/uielement/controlmenucontroller.cxx @@ -237,37 +237,37 @@ void SAL_CALL ControlMenuController::statusChanged( const FeatureStateEvent& Eve nMenuId = m_xResPopupMenu->GetItemId(sIdent); } - if (pPopupMenu) - { - SolarMutexGuard aSolarMutexGuard; + if (!pPopupMenu) + return; + + SolarMutexGuard aSolarMutexGuard; - PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); + PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); - if ( !Event.IsEnabled && pVCLPopupMenu->GetItemPos( nMenuId ) != MENU_ITEM_NOTFOUND ) - pVCLPopupMenu->RemoveItem( pVCLPopupMenu->GetItemPos( nMenuId )); - else if ( Event.IsEnabled && pVCLPopupMenu->GetItemPos( nMenuId ) == MENU_ITEM_NOTFOUND ) + if ( !Event.IsEnabled && pVCLPopupMenu->GetItemPos( nMenuId ) != MENU_ITEM_NOTFOUND ) + pVCLPopupMenu->RemoveItem( pVCLPopupMenu->GetItemPos( nMenuId )); + else if ( Event.IsEnabled && pVCLPopupMenu->GetItemPos( nMenuId ) == MENU_ITEM_NOTFOUND ) + { + sal_Int16 nSourcePos = m_xResPopupMenu->GetItemPos(nMenuId); + sal_Int16 nPrevInSource = nSourcePos; + sal_uInt16 nPrevInConversion = MENU_ITEM_NOTFOUND; + while (nPrevInSource>0) { - sal_Int16 nSourcePos = m_xResPopupMenu->GetItemPos(nMenuId); - sal_Int16 nPrevInSource = nSourcePos; - sal_uInt16 nPrevInConversion = MENU_ITEM_NOTFOUND; - while (nPrevInSource>0) - { - sal_Int16 nPrevId = m_xResPopupMenu->GetItemId(--nPrevInSource); + sal_Int16 nPrevId = m_xResPopupMenu->GetItemId(--nPrevInSource); - // do we have the source's predecessor in our conversion menu, too ? - nPrevInConversion = pVCLPopupMenu->GetItemPos( nPrevId ); - if ( nPrevInConversion != MENU_ITEM_NOTFOUND ) - break; - } + // do we have the source's predecessor in our conversion menu, too ? + nPrevInConversion = pVCLPopupMenu->GetItemPos( nPrevId ); + if ( nPrevInConversion != MENU_ITEM_NOTFOUND ) + break; + } - if ( MENU_ITEM_NOTFOUND == nPrevInConversion ) - // none of the items which precede the nSID-slot in the source menu are present in our conversion menu - nPrevInConversion = sal::static_int_cast< sal_uInt16 >(-1); // put the item at the first position + if ( MENU_ITEM_NOTFOUND == nPrevInConversion ) + // none of the items which precede the nSID-slot in the source menu are present in our conversion menu + nPrevInConversion = sal::static_int_cast< sal_uInt16 >(-1); // put the item at the first position - pVCLPopupMenu->InsertItem(nMenuId, m_xResPopupMenu->GetItemText(nMenuId), m_xResPopupMenu->GetItemBits(nMenuId), OString(), ++nPrevInConversion); - pVCLPopupMenu->SetItemImage(nMenuId, m_xResPopupMenu->GetItemImage(nMenuId)); - pVCLPopupMenu->SetHelpId(nMenuId, m_xResPopupMenu->GetHelpId(nMenuId)); - } + pVCLPopupMenu->InsertItem(nMenuId, m_xResPopupMenu->GetItemText(nMenuId), m_xResPopupMenu->GetItemBits(nMenuId), OString(), ++nPrevInConversion); + pVCLPopupMenu->SetItemImage(nMenuId, m_xResPopupMenu->GetItemImage(nMenuId)); + pVCLPopupMenu->SetHelpId(nMenuId, m_xResPopupMenu->GetHelpId(nMenuId)); } } @@ -276,25 +276,25 @@ void SAL_CALL ControlMenuController::itemActivated( const css::awt::MenuEvent& ) { osl::MutexGuard aLock( m_aMutex ); - if ( m_xPopupMenu.is() ) - { - SolarMutexGuard aSolarMutexGuard; + if ( !m_xPopupMenu.is() ) + return; - // Check if some modes have changed so we have to update our menu images - const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); - bool bShowMenuImages = rSettings.GetUseImagesInMenus(); + SolarMutexGuard aSolarMutexGuard; - if (bShowMenuImages != m_bShowMenuImages) - { - m_bShowMenuImages = bShowMenuImages; + // Check if some modes have changed so we have to update our menu images + const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); + bool bShowMenuImages = rSettings.GetUseImagesInMenus(); - VCLXPopupMenu* pPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getUnoTunnelImplementation<VCLXMenu>( m_xPopupMenu )); - if ( pPopupMenu ) - { - PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); - if (pVCLPopupMenu) - updateImagesPopupMenu( pVCLPopupMenu ); - } + if (bShowMenuImages != m_bShowMenuImages) + { + m_bShowMenuImages = bShowMenuImages; + + VCLXPopupMenu* pPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getUnoTunnelImplementation<VCLXMenu>( m_xPopupMenu )); + if ( pPopupMenu ) + { + PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); + if (pVCLPopupMenu) + updateImagesPopupMenu( pVCLPopupMenu ); } } } @@ -316,25 +316,25 @@ void SAL_CALL ControlMenuController::updatePopupMenu() throwIfDisposed(); - if ( m_xFrame.is() && m_xPopupMenu.is() ) + if ( !(m_xFrame.is() && m_xPopupMenu.is()) ) + return; + + css::util::URL aTargetURL; + Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY ); + fillPopupMenu( m_xPopupMenu ); + m_aURLToDispatchMap.free(); + + for (const char* aCommand : aCommands) { - css::util::URL aTargetURL; - Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY ); - fillPopupMenu( m_xPopupMenu ); - m_aURLToDispatchMap.free(); + aTargetURL.Complete = OUString::createFromAscii( aCommand ); + m_xURLTransformer->parseStrict( aTargetURL ); - for (const char* aCommand : aCommands) + Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch( aTargetURL, OUString(), 0 ); + if ( xDispatch.is() ) { - aTargetURL.Complete = OUString::createFromAscii( aCommand ); - m_xURLTransformer->parseStrict( aTargetURL ); - - Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch( aTargetURL, OUString(), 0 ); - if ( xDispatch.is() ) - { - xDispatch->addStatusListener( static_cast< XStatusListener* >(this), aTargetURL ); - xDispatch->removeStatusListener( static_cast< XStatusListener* >(this), aTargetURL ); - m_aURLToDispatchMap.emplace( aTargetURL.Complete, xDispatch ); - } + xDispatch->addStatusListener( static_cast< XStatusListener* >(this), aTargetURL ); + xDispatch->removeStatusListener( static_cast< XStatusListener* >(this), aTargetURL ); + m_aURLToDispatchMap.emplace( aTargetURL.Complete, xDispatch ); } } } diff --git a/framework/source/uielement/edittoolbarcontroller.cxx b/framework/source/uielement/edittoolbarcontroller.cxx index 2e6164181072..5b6cd39cd45d 100644 --- a/framework/source/uielement/edittoolbarcontroller.cxx +++ b/framework/source/uielement/edittoolbarcontroller.cxx @@ -189,20 +189,20 @@ bool EditToolbarController::PreNotify( NotifyEvent const & rNEvt ) void EditToolbarController::executeControlCommand( const css::frame::ControlCommand& rControlCommand ) { - if ( rControlCommand.Command.startsWith( "SetText" )) + if ( !rControlCommand.Command.startsWith( "SetText" )) + return; + + for ( sal_Int32 i = 0; i < rControlCommand.Arguments.getLength(); i++ ) { - for ( sal_Int32 i = 0; i < rControlCommand.Arguments.getLength(); i++ ) + if ( rControlCommand.Arguments[i].Name.startsWith( "Text" )) { - if ( rControlCommand.Arguments[i].Name.startsWith( "Text" )) - { - OUString aText; - rControlCommand.Arguments[i].Value >>= aText; - m_pEditControl->SetText( aText ); - - // send notification - notifyTextChanged( aText ); - break; - } + OUString aText; + rControlCommand.Arguments[i].Value >>= aText; + m_pEditControl->SetText( aText ); + + // send notification + notifyTextChanged( aText ); + break; } } } diff --git a/framework/source/uielement/fontmenucontroller.cxx b/framework/source/uielement/fontmenucontroller.cxx index 184626b2b1cb..50cc9d344534 100644 --- a/framework/source/uielement/fontmenucontroller.cxx +++ b/framework/source/uielement/fontmenucontroller.cxx @@ -84,31 +84,30 @@ void FontMenuController::fillPopupMenu( const Sequence< OUString >& rFontNameSeq if ( pPopupMenu ) pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); - if ( pVCLPopupMenu ) - { - vector<OUString> aVector; - aVector.reserve(rFontNameSeq.getLength()); - for ( sal_Int32 i = 0; i < rFontNameSeq.getLength(); i++ ) - { - aVector.push_back(MnemonicGenerator::EraseAllMnemonicChars(pFontNameArray[i])); - } - sort(aVector.begin(), aVector.end(), lcl_I18nCompareString ); + if ( !pVCLPopupMenu ) + return; - const OUString aFontNameCommandPrefix( ".uno:CharFontName?CharFontName.FamilyName:string=" ); - const sal_Int16 nCount = static_cast<sal_Int16>(aVector.size()); - for ( sal_Int16 i = 0; i < nCount; i++ ) - { - const OUString& rName = aVector[i]; - m_xPopupMenu->insertItem( i+1, rName, css::awt::MenuItemStyle::RADIOCHECK | css::awt::MenuItemStyle::AUTOCHECK, i ); - if ( rName == m_aFontFamilyName ) - m_xPopupMenu->checkItem( i+1, true ); - // use VCL popup menu pointer to set vital information that are not part of the awt implementation - OUStringBuffer aCommandBuffer( aFontNameCommandPrefix ); - aCommandBuffer.append( INetURLObject::encode( rName, INetURLObject::PART_HTTP_QUERY, INetURLObject::EncodeMechanism::All )); - OUString aFontNameCommand = aCommandBuffer.makeStringAndClear(); - pVCLPopupMenu->SetItemCommand( i+1, aFontNameCommand ); // Store font name into item command. - } + vector<OUString> aVector; + aVector.reserve(rFontNameSeq.getLength()); + for ( sal_Int32 i = 0; i < rFontNameSeq.getLength(); i++ ) + { + aVector.push_back(MnemonicGenerator::EraseAllMnemonicChars(pFontNameArray[i])); + } + sort(aVector.begin(), aVector.end(), lcl_I18nCompareString ); + const OUString aFontNameCommandPrefix( ".uno:CharFontName?CharFontName.FamilyName:string=" ); + const sal_Int16 nCount = static_cast<sal_Int16>(aVector.size()); + for ( sal_Int16 i = 0; i < nCount; i++ ) + { + const OUString& rName = aVector[i]; + m_xPopupMenu->insertItem( i+1, rName, css::awt::MenuItemStyle::RADIOCHECK | css::awt::MenuItemStyle::AUTOCHECK, i ); + if ( rName == m_aFontFamilyName ) + m_xPopupMenu->checkItem( i+1, true ); + // use VCL popup menu pointer to set vital information that are not part of the awt implementation + OUStringBuffer aCommandBuffer( aFontNameCommandPrefix ); + aCommandBuffer.append( INetURLObject::encode( rName, INetURLObject::PART_HTTP_QUERY, INetURLObject::EncodeMechanism::All )); + OUString aFontNameCommand = aCommandBuffer.makeStringAndClear(); + pVCLPopupMenu->SetItemCommand( i+1, aFontNameCommand ); // Store font name into item command. } } @@ -151,36 +150,36 @@ void SAL_CALL FontMenuController::itemActivated( const css::awt::MenuEvent& ) { osl::MutexGuard aLock( m_aMutex ); - if ( m_xPopupMenu.is() ) + if ( !m_xPopupMenu.is() ) + return; + + // find new font name and set check mark! + sal_uInt16 nChecked = 0; + sal_uInt16 nItemCount = m_xPopupMenu->getItemCount(); + for( sal_uInt16 i = 0; i < nItemCount; i++ ) { - // find new font name and set check mark! - sal_uInt16 nChecked = 0; - sal_uInt16 nItemCount = m_xPopupMenu->getItemCount(); - for( sal_uInt16 i = 0; i < nItemCount; i++ ) - { - sal_uInt16 nItemId = m_xPopupMenu->getItemId( i ); + sal_uInt16 nItemId = m_xPopupMenu->getItemId( i ); - if ( m_xPopupMenu->isItemChecked( nItemId ) ) - nChecked = nItemId; + if ( m_xPopupMenu->isItemChecked( nItemId ) ) + nChecked = nItemId; - OUString aText = m_xPopupMenu->getItemText( nItemId ); + OUString aText = m_xPopupMenu->getItemText( nItemId ); - // TODO: must be replaced by implementation of VCL, when available - sal_Int32 nIndex = aText.indexOf( '~' ); - if ( nIndex >= 0 ) - aText = aText.replaceAt( nIndex, 1, "" ); - // TODO: must be replaced by implementation of VCL, when available + // TODO: must be replaced by implementation of VCL, when available + sal_Int32 nIndex = aText.indexOf( '~' ); + if ( nIndex >= 0 ) + aText = aText.replaceAt( nIndex, 1, "" ); + // TODO: must be replaced by implementation of VCL, when available - if ( aText == m_aFontFamilyName ) - { - m_xPopupMenu->checkItem( nItemId, true ); - return; - } + if ( aText == m_aFontFamilyName ) + { + m_xPopupMenu->checkItem( nItemId, true ); + return; } - - if ( nChecked ) - m_xPopupMenu->checkItem( nChecked, false ); } + + if ( nChecked ) + m_xPopupMenu->checkItem( nChecked, false ); } // XPopupMenuController diff --git a/framework/source/uielement/fontsizemenucontroller.cxx b/framework/source/uielement/fontsizemenucontroller.cxx index 8bdcf5f6b038..5fa645d68a1a 100644 --- a/framework/source/uielement/fontsizemenucontroller.cxx +++ b/framework/source/uielement/fontsizemenucontroller.cxx @@ -128,57 +128,77 @@ void FontSizeMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu > co if ( pPopupMenu ) pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); - if ( pVCLPopupMenu ) - { - std::unique_ptr<FontList> pFontList; - ScopedVclPtr<Printer> pInfoPrinter; - OUString aPrinterName; + if ( !pVCLPopupMenu ) + return; - SolarMutexGuard aSolarMutexGuard; + std::unique_ptr<FontList> pFontList; + ScopedVclPtr<Printer> pInfoPrinter; + OUString aPrinterName; - // try to retrieve printer name of document - aPrinterName = retrievePrinterName( m_xFrame ); - if ( !aPrinterName.isEmpty() ) - { - pInfoPrinter.disposeAndReset(VclPtr<Printer>::Create( aPrinterName )); - if ( pInfoPrinter && pInfoPrinter->GetDevFontCount() > 0 ) - pFontList.reset(new FontList( pInfoPrinter.get() )); - } + SolarMutexGuard aSolarMutexGuard; + + // try to retrieve printer name of document + aPrinterName = retrievePrinterName( m_xFrame ); + if ( !aPrinterName.isEmpty() ) + { + pInfoPrinter.disposeAndReset(VclPtr<Printer>::Create( aPrinterName )); + if ( pInfoPrinter && pInfoPrinter->GetDevFontCount() > 0 ) + pFontList.reset(new FontList( pInfoPrinter.get() )); + } - if ( !pFontList ) - pFontList.reset(new FontList( Application::GetDefaultDevice() )); + if ( !pFontList ) + pFontList.reset(new FontList( Application::GetDefaultDevice() )); - FontMetric aFontMetric = pFontList->Get( m_aFontDescriptor.Name, m_aFontDescriptor.StyleName ); + FontMetric aFontMetric = pFontList->Get( m_aFontDescriptor.Name, m_aFontDescriptor.StyleName ); - // setup font size array - m_pHeightArray.reset(); + // setup font size array + m_pHeightArray.reset(); - const sal_IntPtr* pTempAry; - const sal_IntPtr* pAry = pFontList->GetSizeAry( aFontMetric ); - sal_uInt16 nSizeCount = 0; - while ( pAry[nSizeCount] ) - nSizeCount++; + const sal_IntPtr* pTempAry; + const sal_IntPtr* pAry = pFontList->GetSizeAry( aFontMetric ); + sal_uInt16 nSizeCount = 0; + while ( pAry[nSizeCount] ) + nSizeCount++; - sal_uInt16 nPos = 0; - const OUString aFontHeightCommand( ".uno:FontHeight?FontHeight.Height:float=" ); + sal_uInt16 nPos = 0; + const OUString aFontHeightCommand( ".uno:FontHeight?FontHeight.Height:float=" ); - // first insert font size names (for simplified/traditional chinese) - float fPoint; - FontSizeNames aFontSizeNames( Application::GetSettings().GetUILanguageTag().getLanguageType() ); - m_pHeightArray.reset( new long[nSizeCount+aFontSizeNames.Count()] ); - OUString aCommand; + // first insert font size names (for simplified/traditional chinese) + float fPoint; + FontSizeNames aFontSizeNames( Application::GetSettings().GetUILanguageTag().getLanguageType() ); + m_pHeightArray.reset( new long[nSizeCount+aFontSizeNames.Count()] ); + OUString aCommand; - if ( !aFontSizeNames.IsEmpty() ) + if ( !aFontSizeNames.IsEmpty() ) + { + if ( pAry == FontList::GetStdSizeAry() ) + { + // for scalable fonts all font size names + sal_Int32 nCount = aFontSizeNames.Count(); + for( sal_Int32 i = 0; i < nCount; i++ ) + { + OUString aSizeName = aFontSizeNames.GetIndexName( i ); + sal_Int32 nSize = aFontSizeNames.GetIndexSize( i ); + m_pHeightArray[nPos] = nSize; + nPos++; // Id is nPos+1 + pVCLPopupMenu->InsertItem( nPos, aSizeName, MenuItemBits::RADIOCHECK | MenuItemBits::AUTOCHECK ); + fPoint = float( m_pHeightArray[nPos-1] ) / 10; + + // Create dispatchable .uno command and set it + aCommand = aFontHeightCommand + OUString::number( fPoint ); + pVCLPopupMenu->SetItemCommand( nPos, aCommand ); + } + } + else { - if ( pAry == FontList::GetStdSizeAry() ) + // for fixed size fonts only selectable font size names + pTempAry = pAry; + while ( *pTempAry ) { - // for scalable fonts all font size names - sal_Int32 nCount = aFontSizeNames.Count(); - for( sal_Int32 i = 0; i < nCount; i++ ) + OUString aSizeName = aFontSizeNames.Size2Name( *pTempAry ); + if ( !aSizeName.isEmpty() ) { - OUString aSizeName = aFontSizeNames.GetIndexName( i ); - sal_Int32 nSize = aFontSizeNames.GetIndexSize( i ); - m_pHeightArray[nPos] = nSize; + m_pHeightArray[nPos] = *pTempAry; nPos++; // Id is nPos+1 pVCLPopupMenu->InsertItem( nPos, aSizeName, MenuItemBits::RADIOCHECK | MenuItemBits::AUTOCHECK ); fPoint = float( m_pHeightArray[nPos-1] ) / 10; @@ -187,49 +207,29 @@ void FontSizeMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu > co aCommand = aFontHeightCommand + OUString::number( fPoint ); pVCLPopupMenu->SetItemCommand( nPos, aCommand ); } - } - else - { - // for fixed size fonts only selectable font size names - pTempAry = pAry; - while ( *pTempAry ) - { - OUString aSizeName = aFontSizeNames.Size2Name( *pTempAry ); - if ( !aSizeName.isEmpty() ) - { - m_pHeightArray[nPos] = *pTempAry; - nPos++; // Id is nPos+1 - pVCLPopupMenu->InsertItem( nPos, aSizeName, MenuItemBits::RADIOCHECK | MenuItemBits::AUTOCHECK ); - fPoint = float( m_pHeightArray[nPos-1] ) / 10; - - // Create dispatchable .uno command and set it - aCommand = aFontHeightCommand + OUString::number( fPoint ); - pVCLPopupMenu->SetItemCommand( nPos, aCommand ); - } - pTempAry++; - } + pTempAry++; } } + } - // then insert numerical font size values - const vcl::I18nHelper& rI18nHelper = Application::GetSettings().GetUILocaleI18nHelper(); - pTempAry = pAry; - while ( *pTempAry ) - { - m_pHeightArray[nPos] = *pTempAry; - nPos++; // Id is nPos+1 - pVCLPopupMenu->InsertItem( nPos, rI18nHelper.GetNum( *pTempAry, 1, true, false ), MenuItemBits::RADIOCHECK | MenuItemBits::AUTOCHECK ); - fPoint = float( m_pHeightArray[nPos-1] ) / 10; - - // Create dispatchable .uno command and set it - aCommand = aFontHeightCommand + OUString::number( fPoint ); - pVCLPopupMenu->SetItemCommand( nPos, aCommand ); + // then insert numerical font size values + const vcl::I18nHelper& rI18nHelper = Application::GetSettings().GetUILocaleI18nHelper(); + pTempAry = pAry; + while ( *pTempAry ) + { + m_pHeightArray[nPos] = *pTempAry; + nPos++; // Id is nPos+1 + pVCLPopupMenu->InsertItem( nPos, rI18nHelper.GetNum( *pTempAry, 1, true, false ), MenuItemBits::RADIOCHECK | MenuItemBits::AUTOCHECK ); + fPoint = float( m_pHeightArray[nPos-1] ) / 10; - pTempAry++; - } + // Create dispatchable .uno command and set it + aCommand = aFontHeightCommand + OUString::number( fPoint ); + pVCLPopupMenu->SetItemCommand( nPos, aCommand ); - setCurHeight( long( m_aFontHeight.Height * 10), rPopupMenu ); + pTempAry++; } + + setCurHeight( long( m_aFontHeight.Height * 10), rPopupMenu ); } // XEventListener diff --git a/framework/source/uielement/generictoolbarcontroller.cxx b/framework/source/uielement/generictoolbarcontroller.cxx index 770f5860fbef..ec0f64c146f1 100644 --- a/framework/source/uielement/generictoolbarcontroller.cxx +++ b/framework/source/uielement/generictoolbarcontroller.cxx @@ -138,26 +138,26 @@ void SAL_CALL GenericToolbarController::execute( sal_Int16 KeyModifier ) } } - if ( xDispatch.is() ) - { - css::util::URL aTargetURL; - Sequence<PropertyValue> aArgs( 1 ); - - // Add key modifier to argument list - aArgs[0].Name = "KeyModifier"; - aArgs[0].Value <<= KeyModifier; - - aTargetURL.Complete = aCommandURL; - if ( m_xUrlTransformer.is() ) - m_xUrlTransformer->parseStrict( aTargetURL ); - - // Execute dispatch asynchronously - ExecuteInfo* pExecuteInfo = new ExecuteInfo; - pExecuteInfo->xDispatch = xDispatch; - pExecuteInfo->aTargetURL = aTargetURL; - pExecuteInfo->aArgs = aArgs; - Application::PostUserEvent( LINK(nullptr, GenericToolbarController , ExecuteHdl_Impl), pExecuteInfo ); - } + if ( !xDispatch.is() ) + return; + + css::util::URL aTargetURL; + Sequence<PropertyValue> aArgs( 1 ); + + // Add key modifier to argument list + aArgs[0].Name = "KeyModifier"; + aArgs[0].Value <<= KeyModifier; + + aTargetURL.Complete = aCommandURL; + if ( m_xUrlTransformer.is() ) + m_xUrlTransformer->parseStrict( aTargetURL ); + + // Execute dispatch asynchronously + ExecuteInfo* pExecuteInfo = new ExecuteInfo; + pExecuteInfo->xDispatch = xDispatch; + pExecuteInfo->aTargetURL = aTargetURL; + pExecuteInfo->aArgs = aArgs; + Application::PostUserEvent( LINK(nullptr, GenericToolbarController , ExecuteHdl_Impl), pExecuteInfo ); } void GenericToolbarController::statusChanged( const FeatureStateEvent& Event ) @@ -167,100 +167,100 @@ void GenericToolbarController::statusChanged( const FeatureStateEvent& Event ) if ( m_bDisposed ) return; - if ( m_xToolbar ) - { - m_xToolbar->EnableItem( m_nID, Event.IsEnabled ); + if ( !m_xToolbar ) + return; + + m_xToolbar->EnableItem( m_nID, Event.IsEnabled ); - ToolBoxItemBits nItemBits = m_xToolbar->GetItemBits( m_nID ); - nItemBits &= ~ToolBoxItemBits::CHECKABLE; - TriState eTri = TRISTATE_FALSE; + ToolBoxItemBits nItemBits = m_xToolbar->GetItemBits( m_nID ); + nItemBits &= ~ToolBoxItemBits::CHECKABLE; + TriState eTri = TRISTATE_FALSE; - bool bValue; - OUString aStrValue; - ItemStatus aItemState; - Visibility aItemVisibility; - ControlCommand aControlCommand; + bool bValue; + OUString aStrValue; + ItemStatus aItemState; + Visibility aItemVisibility; + ControlCommand aControlCommand; - if (( Event.State >>= bValue ) && !m_bEnumCommand ) + if (( Event.State >>= bValue ) && !m_bEnumCommand ) + { + // Boolean, treat it as checked/unchecked + if ( m_bMadeInvisible ) + m_xToolbar->ShowItem( m_nID ); + m_xToolbar->CheckItem( m_nID, bValue ); + if ( bValue ) + eTri = TRISTATE_TRUE; + nItemBits |= ToolBoxItemBits::CHECKABLE; + } + else if ( Event.State >>= aStrValue ) + { + if ( m_bEnumCommand ) { - // Boolean, treat it as checked/unchecked - if ( m_bMadeInvisible ) - m_xToolbar->ShowItem( m_nID ); + bValue = aStrValue == m_aEnumCommand; + m_xToolbar->CheckItem( m_nID, bValue ); if ( bValue ) eTri = TRISTATE_TRUE; nItemBits |= ToolBoxItemBits::CHECKABLE; } - else if ( Event.State >>= aStrValue ) + else { - if ( m_bEnumCommand ) + // Replacement for place holders + if ( aStrValue.startsWith("($1)") ) { - bValue = aStrValue == m_aEnumCommand; - - m_xToolbar->CheckItem( m_nID, bValue ); - if ( bValue ) - eTri = TRISTATE_TRUE; - nItemBits |= ToolBoxItemBits::CHECKABLE; + aStrValue = FwkResId(STR_UPDATEDOC) + " " + aStrValue.copy( 4 ); } - else + else if ( aStrValue.startsWith("($2)") ) { - // Replacement for place holders - if ( aStrValue.startsWith("($1)") ) - { - aStrValue = FwkResId(STR_UPDATEDOC) + " " + aStrValue.copy( 4 ); - } - else if ( aStrValue.startsWith("($2)") ) - { - aStrValue = FwkResId(STR_CLOSEDOC_ANDRETURN) + aStrValue.copy( 4 ); - } - else if ( aStrValue.startsWith("($3)") ) - { - aStrValue = FwkResId(STR_SAVECOPYDOC) + aStrValue.copy( 4 ); - } - m_xToolbar->SetItemText( m_nID, aStrValue ); - // tdf#124267 strip mnemonic from tooltip - m_xToolbar->SetQuickHelpText(m_nID, aStrValue.replaceFirst("~", "")); + aStrValue = FwkResId(STR_CLOSEDOC_ANDRETURN) + aStrValue.copy( 4 ); } - - if ( m_bMadeInvisible ) - m_xToolbar->ShowItem( m_nID ); - } - else if (( Event.State >>= aItemState ) && !m_bEnumCommand ) - { - eTri = TRISTATE_INDET; - nItemBits |= ToolBoxItemBits::CHECKABLE; - if ( m_bMadeInvisible ) - m_xToolbar->ShowItem( m_nID ); - } - else if ( Event.State >>= aItemVisibility ) - { - m_xToolbar->ShowItem( m_nID, aItemVisibility.bVisible ); - m_bMadeInvisible = !aItemVisibility.bVisible; + else if ( aStrValue.startsWith("($3)") ) + { + aStrValue = FwkResId(STR_SAVECOPYDOC) + aStrValue.copy( 4 ); + } + m_xToolbar->SetItemText( m_nID, aStrValue ); + // tdf#124267 strip mnemonic from tooltip + m_xToolbar->SetQuickHelpText(m_nID, aStrValue.replaceFirst("~", "")); } - else if ( Event.State >>= aControlCommand ) + + if ( m_bMadeInvisible ) + m_xToolbar->ShowItem( m_nID ); + } + else if (( Event.State >>= aItemState ) && !m_bEnumCommand ) + { + eTri = TRISTATE_INDET; + nItemBits |= ToolBoxItemBits::CHECKABLE; + if ( m_bMadeInvisible ) + m_xToolbar->ShowItem( m_nID ); + } + else if ( Event.State >>= aItemVisibility ) + { + m_xToolbar->ShowItem( m_nID, aItemVisibility.bVisible ); + m_bMadeInvisible = !aItemVisibility.bVisible; + } + else if ( Event.State >>= aControlCommand ) + { + if (aControlCommand.Command == "SetQuickHelpText") { - if (aControlCommand.Command == "SetQuickHelpText") + for (sal_Int32 i = 0; i < aControlCommand.Arguments.getLength(); i++) { - for (sal_Int32 i = 0; i < aControlCommand.Arguments.getLength(); i++) + if (aControlCommand.Arguments[i].Name == "HelpText") { - if (aControlCommand.Arguments[i].Name == "HelpText") - { - OUString aHelpText; - aControlCommand.Arguments[i].Value >>= aHelpText; - m_xToolbar->SetQuickHelpText(m_nID, aHelpText); - break; - } + OUString aHelpText; + aControlCommand.Arguments[i].Value >>= aHelpText; + m_xToolbar->SetQuickHelpText(m_nID, aHelpText); + break; } } - if ( m_bMadeInvisible ) - m_xToolbar->ShowItem( m_nID ); } - else if ( m_bMadeInvisible ) + if ( m_bMadeInvisible ) m_xToolbar->ShowItem( m_nID ); - - m_xToolbar->SetItemState( m_nID, eTri ); - m_xToolbar->SetItemBits( m_nID, nItemBits ); } + else if ( m_bMadeInvisible ) + m_xToolbar->ShowItem( m_nID ); + + m_xToolbar->SetItemState( m_nID, eTri ); + m_xToolbar->SetItemBits( m_nID, nItemBits ); } IMPL_STATIC_LINK( GenericToolbarController, ExecuteHdl_Impl, void*, p, void ) @@ -324,25 +324,25 @@ void MenuToolbarController::initialize( const css::uno::Sequence< css::uno::Any {} } - if ( xMenuContainer.is() && xMenuContainer->getCount() ) + if ( !(xMenuContainer.is() && xMenuContainer->getCount()) ) + return; + + Sequence< PropertyValue > aProps; + // drop down menu info is currently the first ( and only ) menu in the menusettings container + xMenuContainer->getByIndex(0) >>= aProps; + for ( const auto& aProp : std::as_const(aProps) ) { - Sequence< PropertyValue > aProps; - // drop down menu info is currently the first ( and only ) menu in the menusettings container - xMenuContainer->getByIndex(0) >>= aProps; - for ( const auto& aProp : std::as_const(aProps) ) + if ( aProp.Name == "ItemDescriptorContainer" ) { - if ( aProp.Name == "ItemDescriptorContainer" ) - { - aProp.Value >>= m_xMenuDesc; - break; - } + aProp.Value >>= m_xMenuDesc; + break; } - - ToolBox* pToolBox = nullptr; - sal_uInt16 nId = 0; - if ( getToolboxId( nId, &pToolBox ) ) - pToolBox->SetItemBits( nId, pToolBox->GetItemBits( nId ) | ToolBoxItemBits::DROPDOWNONLY ); } + + ToolBox* pToolBox = nullptr; + sal_uInt16 nId = 0; + if ( getToolboxId( nId, &pToolBox ) ) + pToolBox->SetItemBits( nId, pToolBox->GetItemBits( nId ) | ToolBoxItemBits::DROPDOWNONLY ); } Reference< XWindow > SAL_CALL diff --git a/framework/source/uielement/headermenucontroller.cxx b/framework/source/uielement/headermenucontroller.cxx index d45014becdc0..7e74ef99f506 100644 --- a/framework/source/uielement/headermenucontroller.cxx +++ b/framework/source/uielement/headermenucontroller.cxx @@ -80,100 +80,100 @@ void HeaderMenuController::fillPopupMenu( const Reference< css::frame::XModel >& pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); Reference< XStyleFamiliesSupplier > xStyleFamiliesSupplier( rModel, UNO_QUERY ); - if ( pVCLPopupMenu && xStyleFamiliesSupplier.is()) - { - Reference< XNameAccess > xStyleFamilies = xStyleFamiliesSupplier->getStyleFamilies(); + if ( !(pVCLPopupMenu && xStyleFamiliesSupplier.is())) + return; - OUString aCmd( ".uno:InsertPageHeader" ); - OUString aHeaderFooterIsOnStr( "HeaderIsOn" ); - if ( m_bFooter ) - { - aCmd = ".uno:InsertPageFooter"; - aHeaderFooterIsOnStr = "FooterIsOn"; - } - const OUString aIsPhysicalStr( "IsPhysical" ); - const OUString aDisplayNameStr( "DisplayName" ); + Reference< XNameAccess > xStyleFamilies = xStyleFamiliesSupplier->getStyleFamilies(); - try + OUString aCmd( ".uno:InsertPageHeader" ); + OUString aHeaderFooterIsOnStr( "HeaderIsOn" ); + if ( m_bFooter ) + { + aCmd = ".uno:InsertPageFooter"; + aHeaderFooterIsOnStr = "FooterIsOn"; + } + const OUString aIsPhysicalStr( "IsPhysical" ); + const OUString aDisplayNameStr( "DisplayName" ); + + try + { + Reference< XNameContainer > xNameContainer; + if ( xStyleFamilies->getByName("PageStyles") >>= xNameContainer ) { - Reference< XNameContainer > xNameContainer; - if ( xStyleFamilies->getByName("PageStyles") >>= xNameContainer ) + Sequence< OUString > aSeqNames = xNameContainer->getElementNames(); + + sal_uInt16 nId = 2; + sal_uInt16 nCount = 0; + bool bAllOneState( true ); + bool bLastCheck( true ); + bool bFirstChecked( false ); + bool bFirstItemInserted( false ); + for ( sal_Int32 n = 0; n < aSeqNames.getLength(); n++ ) { - Sequence< OUString > aSeqNames = xNameContainer->getElementNames(); - - sal_uInt16 nId = 2; - sal_uInt16 nCount = 0; - bool bAllOneState( true ); - bool bLastCheck( true ); - bool bFirstChecked( false ); - bool bFirstItemInserted( false ); - for ( sal_Int32 n = 0; n < aSeqNames.getLength(); n++ ) + OUString aName = aSeqNames[n]; + Reference< XPropertySet > xPropSet( xNameContainer->getByName( aName ), UNO_QUERY ); + if ( xPropSet.is() ) { - OUString aName = aSeqNames[n]; - Reference< XPropertySet > xPropSet( xNameContainer->getByName( aName ), UNO_QUERY ); - if ( xPropSet.is() ) + bool bIsPhysical( false ); + if (( xPropSet->getPropertyValue( aIsPhysicalStr ) >>= bIsPhysical ) && bIsPhysical ) { - bool bIsPhysical( false ); - if (( xPropSet->getPropertyValue( aIsPhysicalStr ) >>= bIsPhysical ) && bIsPhysical ) + OUString aDisplayName; + bool bHeaderIsOn( false ); + xPropSet->getPropertyValue( aDisplayNameStr ) >>= aDisplayName; + xPropSet->getPropertyValue( aHeaderFooterIsOnStr ) >>= bHeaderIsOn; + + OUStringBuffer aStrBuf( aCmd ); + aStrBuf.append( "?PageStyle:string="); + aStrBuf.append( aDisplayName ); + aStrBuf.append( "&On:bool=" ); + if ( !bHeaderIsOn ) + aStrBuf.append( "true" ); + else + aStrBuf.append( "false" ); + OUString aCommand( aStrBuf.makeStringAndClear() ); + pVCLPopupMenu->InsertItem( nId, aDisplayName, MenuItemBits::CHECKABLE ); + if ( !bFirstItemInserted ) { - OUString aDisplayName; - bool bHeaderIsOn( false ); - xPropSet->getPropertyValue( aDisplayNameStr ) >>= aDisplayName; - xPropSet->getPropertyValue( aHeaderFooterIsOnStr ) >>= bHeaderIsOn; - - OUStringBuffer aStrBuf( aCmd ); - aStrBuf.append( "?PageStyle:string="); - aStrBuf.append( aDisplayName ); - aStrBuf.append( "&On:bool=" ); - if ( !bHeaderIsOn ) - aStrBuf.append( "true" ); - else - aStrBuf.append( "false" ); - OUString aCommand( aStrBuf.makeStringAndClear() ); - pVCLPopupMenu->InsertItem( nId, aDisplayName, MenuItemBits::CHECKABLE ); - if ( !bFirstItemInserted ) - { - bFirstItemInserted = true; - bFirstChecked = bHeaderIsOn; - } - - pVCLPopupMenu->SetItemCommand( nId, aCommand ); - - if ( bHeaderIsOn ) - pVCLPopupMenu->CheckItem( nId ); - ++nId; - - // Check if all entries have the same state - if( bAllOneState && n && bHeaderIsOn != bLastCheck ) - bAllOneState = false; - bLastCheck = bHeaderIsOn; - ++nCount; + bFirstItemInserted = true; + bFirstChecked = bHeaderIsOn; } + + pVCLPopupMenu->SetItemCommand( nId, aCommand ); + + if ( bHeaderIsOn ) + pVCLPopupMenu->CheckItem( nId ); + ++nId; + + // Check if all entries have the same state + if( bAllOneState && n && bHeaderIsOn != bLastCheck ) + bAllOneState = false; + bLastCheck = bHeaderIsOn; + ++nCount; } } + } - if ( bAllOneState && ( nCount > 1 )) - { - // Insert special item for all command - pVCLPopupMenu->InsertItem( ALL_MENUITEM_ID, FwkResId(STR_MENU_HEADFOOTALL), MenuItemBits::NONE, OString(), 0 ); + if ( bAllOneState && ( nCount > 1 )) + { + // Insert special item for all command + pVCLPopupMenu->InsertItem( ALL_MENUITEM_ID, FwkResId(STR_MENU_HEADFOOTALL), MenuItemBits::NONE, OString(), 0 ); - OUStringBuffer aStrBuf( aCmd ); - aStrBuf.append( "?On:bool=" ); + OUStringBuffer aStrBuf( aCmd ); + aStrBuf.append( "?On:bool=" ); - // Command depends on check state of first menu item entry - if ( !bFirstChecked ) - aStrBuf.append( "true" ); - else - aStrBuf.append( "false" ); + // Command depends on check state of first menu item entry + if ( !bFirstChecked ) + aStrBuf.append( "true" ); + else + aStrBuf.append( "false" ); - pVCLPopupMenu->SetItemCommand( 1, aStrBuf.makeStringAndClear() ); - pVCLPopupMenu->InsertSeparator(OString(), 1); - } + pVCLPopupMenu->SetItemCommand( 1, aStrBuf.makeStringAndClear() ); + pVCLPopupMenu->InsertSeparator(OString(), 1); } } - catch ( const css::container::NoSuchElementException& ) - { - } + } + catch ( const css::container::NoSuchElementException& ) + { } } diff --git a/framework/source/uielement/imagebuttontoolbarcontroller.cxx b/framework/source/uielement/imagebuttontoolbarcontroller.cxx index 9ad5cc47885e..3d9997aaaa57 100644 --- a/framework/source/uielement/imagebuttontoolbarcontroller.cxx +++ b/framework/source/uielement/imagebuttontoolbarcontroller.cxx @@ -83,32 +83,32 @@ void ImageButtonToolbarController::executeControlCommand( const css::frame::Cont { SolarMutexGuard aSolarMutexGuard; // i73486 to be downward compatible use old and "wrong" also! - if( rControlCommand.Command == "SetImag" || - rControlCommand.Command == "SetImage" ) + if( !(rControlCommand.Command == "SetImag" || + rControlCommand.Command == "SetImage") ) + return; + + for ( sal_Int32 i = 0; i < rControlCommand.Arguments.getLength(); i++ ) { - for ( sal_Int32 i = 0; i < rControlCommand.Arguments.getLength(); i++ ) + if ( rControlCommand.Arguments[i].Name == "URL" ) { - if ( rControlCommand.Arguments[i].Name == "URL" ) + OUString aURL; + rControlCommand.Arguments[i].Value >>= aURL; + + SubstituteVariables( aURL ); + + Image aImage; + if ( ReadImageFromURL( SvtMiscOptions().AreCurrentSymbolsLarge(), + aURL, + aImage )) { - OUString aURL; - rControlCommand.Arguments[i].Value >>= aURL; - - SubstituteVariables( aURL ); - - Image aImage; - if ( ReadImageFromURL( SvtMiscOptions().AreCurrentSymbolsLarge(), - aURL, - aImage )) - { - m_xToolbar->SetItemImage( m_nID, aImage ); - - // send notification - uno::Sequence< beans::NamedValue > aInfo { { "URL", css::uno::makeAny(aURL) } }; - addNotifyInfo( "ImageChanged", - getDispatchFromCommand( m_aCommandURL ), - aInfo ); - break; - } + m_xToolbar->SetItemImage( m_nID, aImage ); + + // send notification + uno::Sequence< beans::NamedValue > aInfo { { "URL", css::uno::makeAny(aURL) } }; + addNotifyInfo( "ImageChanged", + getDispatchFromCommand( m_aCommandURL ), + aInfo ); + break; } } } diff --git a/framework/source/uielement/langselectionstatusbarcontroller.cxx b/framework/source/uielement/langselectionstatusbarcontroller.cxx index cc4ac14a2843..2e12c12fee26 100644 --- a/framework/source/uielement/langselectionstatusbarcontroller.cxx +++ b/framework/source/uielement/langselectionstatusbarcontroller.cxx @@ -202,72 +202,72 @@ void LangSelectionStatusbarController::LangMenu( css::awt::Rectangle aRect( aPos.X, aPos.Y, 0, 0 ); sal_Int16 nId = xPopupMenu->execute( xParent, aRect, css::awt::PopupMenuDirection::EXECUTE_UP+16 ); //click "More..." - if ( nId && m_xFrame.is() ) - { - OUStringBuffer aBuff; - //set selected language as current language for selection - const OUString aSelectedLang = aLangMap[nId]; + if ( !(nId && m_xFrame.is()) ) + return; - if (MID_LANG_SEL_1 <= nId && nId <= MID_LANG_SEL_9) - { - if (bWriter) - aBuff.append( ".uno:LanguageStatus?Language:string=Current_" ); - else - aBuff.append( ".uno:LanguageStatus?Language:string=Default_" ); + OUStringBuffer aBuff; + //set selected language as current language for selection + const OUString aSelectedLang = aLangMap[nId]; - aBuff.append( aSelectedLang ); - } - else if (nId == MID_LANG_SEL_NONE) - { - //set None as current language for selection - aBuff.append( ".uno:LanguageStatus?Language:string=Current_LANGUAGE_NONE" ); - } - else if (nId == MID_LANG_SEL_RESET) - { - // reset language attributes for selection - aBuff.append( ".uno:LanguageStatus?Language:string=Current_RESET_LANGUAGES" ); - } - else if (nId == MID_LANG_SEL_MORE) - { - //open the dialog "format/character" for current selection - aBuff.append( ".uno:FontDialog?Page:string=font" ); - } - else if (nId == MID_LANG_DEF_NONE) - { - aBuff.append( ".uno:LanguageStatus?Language:string=Default_LANGUAGE_NONE" ); - } - else if (nId == MID_LANG_DEF_RESET) - { - aBuff.append( ".uno:LanguageStatus?Language:string=Default_RESET_LANGUAGES" ); - } - else if (nId == MID_LANG_DEF_MORE) - { - aBuff.append( ".uno:LanguageStatus?Language:string=*" ); - } - else if (MID_LANG_PARA_1 <= nId && nId <= MID_LANG_PARA_9) - { - aBuff.append( ".uno:LanguageStatus?Language:string=Paragraph_" ); - aBuff.append( aSelectedLang ); - } - else if (nId == MID_LANG_PARA_NONE) - { - //set None as language for current paragraph - aBuff.append( ".uno:LanguageStatus?Language:string=Paragraph_LANGUAGE_NONE" ); - } - else if (nId == MID_LANG_PARA_RESET) - { - // reset language attributes for paragraph - aBuff.append( ".uno:LanguageStatus?Language:string=Paragraph_RESET_LANGUAGES" ); - } - else if (nId == MID_LANG_PARA_MORE) - { - //open the dialog "format/character" for current paragraph - aBuff.append( ".uno:FontDialogForParagraph" ); - } + if (MID_LANG_SEL_1 <= nId && nId <= MID_LANG_SEL_9) + { + if (bWriter) + aBuff.append( ".uno:LanguageStatus?Language:string=Current_" ); + else + aBuff.append( ".uno:LanguageStatus?Language:string=Default_" ); - const Sequence< beans::PropertyValue > aDummyArgs; - execute( aBuff.makeStringAndClear(), aDummyArgs ); + aBuff.append( aSelectedLang ); + } + else if (nId == MID_LANG_SEL_NONE) + { + //set None as current language for selection + aBuff.append( ".uno:LanguageStatus?Language:string=Current_LANGUAGE_NONE" ); } + else if (nId == MID_LANG_SEL_RESET) + { + // reset language attributes for selection + aBuff.append( ".uno:LanguageStatus?Language:string=Current_RESET_LANGUAGES" ); + } + else if (nId == MID_LANG_SEL_MORE) + { + //open the dialog "format/character" for current selection + aBuff.append( ".uno:FontDialog?Page:string=font" ); + } + else if (nId == MID_LANG_DEF_NONE) + { + aBuff.append( ".uno:LanguageStatus?Language:string=Default_LANGUAGE_NONE" ); + } + else if (nId == MID_LANG_DEF_RESET) + { + aBuff.append( ".uno:LanguageStatus?Language:string=Default_RESET_LANGUAGES" ); + } + else if (nId == MID_LANG_DEF_MORE) + { + aBuff.append( ".uno:LanguageStatus?Language:string=*" ); + } + else if (MID_LANG_PARA_1 <= nId && nId <= MID_LANG_PARA_9) + { + aBuff.append( ".uno:LanguageStatus?Language:string=Paragraph_" ); + aBuff.append( aSelectedLang ); + } + else if (nId == MID_LANG_PARA_NONE) + { + //set None as language for current paragraph + aBuff.append( ".uno:LanguageStatus?Language:string=Paragraph_LANGUAGE_NONE" ); + } + else if (nId == MID_LANG_PARA_RESET) + { + // reset language attributes for paragraph + aBuff.append( ".uno:LanguageStatus?Language:string=Paragraph_RESET_LANGUAGES" ); + } + else if (nId == MID_LANG_PARA_MORE) + { + //open the dialog "format/character" for current paragraph + aBuff.append( ".uno:FontDialogForParagraph" ); + } + + const Sequence< beans::PropertyValue > aDummyArgs; + execute( aBuff.makeStringAndClear(), aDummyArgs ); } void SAL_CALL LangSelectionStatusbarController::command( @@ -306,40 +306,40 @@ void SAL_CALL LangSelectionStatusbarController::statusChanged( const FeatureStat m_bShowMenu = true; m_nScriptType = SvtScriptType::LATIN | SvtScriptType::ASIAN | SvtScriptType::COMPLEX; //set the default value - if ( m_xStatusbarItem.is() ) - { - OUString aStrValue; - Sequence< OUString > aSeq; + if ( !m_xStatusbarItem.is() ) + return; - if ( Event.State >>= aStrValue ) - { - m_xStatusbarItem->setText( aStrValue ); - m_aCurLang = aStrValue; - } - else if ( Event.State >>= aSeq ) + OUString aStrValue; + Sequence< OUString > aSeq; + + if ( Event.State >>= aStrValue ) + { + m_xStatusbarItem->setText( aStrValue ); + m_aCurLang = aStrValue; + } + else if ( Event.State >>= aSeq ) + { + if ( aSeq.getLength() == 4 ) { - if ( aSeq.getLength() == 4 ) + OUString aStatusText = aSeq[0]; + if (aStatusText == "*") { - OUString aStatusText = aSeq[0]; - if (aStatusText == "*") - { - aStatusText = FwkResId(STR_LANGSTATUS_MULTIPLE_LANGUAGES); - } - m_xStatusbarItem->setText( aStatusText ); - - // Retrieve all other values from the sequence and - // store it members! - m_aCurLang = aSeq[0]; - m_nScriptType = static_cast< SvtScriptType >( aSeq[1].toInt32() ); - m_aKeyboardLang = aSeq[2]; - m_aGuessedTextLang = aSeq[3]; + aStatusText = FwkResId(STR_LANGSTATUS_MULTIPLE_LANGUAGES); } + m_xStatusbarItem->setText( aStatusText ); + + // Retrieve all other values from the sequence and + // store it members! + m_aCurLang = aSeq[0]; + m_nScriptType = static_cast< SvtScriptType >( aSeq[1].toInt32() ); + m_aKeyboardLang = aSeq[2]; + m_aGuessedTextLang = aSeq[3]; } - else if ( !Event.State.hasValue() ) - { - m_xStatusbarItem->setText( OUString() ); - m_bShowMenu = false; // no language -> no menu - } + } + else if ( !Event.State.hasValue() ) + { + m_xStatusbarItem->setText( OUString() ); + m_bShowMenu = false; // no language -> no menu } } diff --git a/framework/source/uielement/menubarmanager.cxx b/framework/source/uielement/menubarmanager.cxx index e0fbfe16c4e3..8be9c718e5ad 100644 --- a/framework/source/uielement/menubarmanager.cxx +++ b/framework/source/uielement/menubarmanager.cxx @@ -165,20 +165,20 @@ void MenuBarManager::Destroy() { SolarMutexGuard aGuard; - if ( !rBHelper.bDisposed ) - { - // stop asynchronous settings timer and - // release deferred item container reference - m_aAsyncSettingsTimer.Stop(); - m_xDeferedItemContainer.clear(); - RemoveListener(); + if ( rBHelper.bDisposed ) + return; - m_aMenuItemHandlerVector.clear(); + // stop asynchronous settings timer and + // release deferred item container reference + m_aAsyncSettingsTimer.Stop(); + m_xDeferedItemContainer.clear(); + RemoveListener(); - if ( m_bDeleteMenu ) - { - m_pVCLMenu.disposeAndClear(); - } + m_aMenuItemHandlerVector.clear(); + + if ( m_bDeleteMenu ) + { + m_pVCLMenu.disposeAndClear(); } } @@ -255,21 +255,21 @@ void SAL_CALL MenuBarManager::frameAction( const FrameActionEvent& Action ) if ( rBHelper.bDisposed || rBHelper.bInDispose ) throw css::lang::DisposedException(); - if ( Action.Action == FrameAction_CONTEXT_CHANGED ) + if ( Action.Action != FrameAction_CONTEXT_CHANGED ) + return; + + for (auto const& menuItemHandler : m_aMenuItemHandlerVector) { - for (auto const& menuItemHandler : m_aMenuItemHandlerVector) + // Clear dispatch reference as we will requery it later + if ( menuItemHandler->xMenuItemDispatch.is() ) { - // Clear dispatch reference as we will requery it later - if ( menuItemHandler->xMenuItemDispatch.is() ) - { - URL aTargetURL; - aTargetURL.Complete = menuItemHandler->aMenuItemURL; - m_xURLTransformer->parseStrict( aTargetURL ); + URL aTargetURL; + aTargetURL.Complete = menuItemHandler->aMenuItemURL; + m_xURLTransformer->parseStrict( aTargetURL ); - menuItemHandler->xMenuItemDispatch->removeStatusListener( this, aTargetURL ); - } - menuItemHandler->xMenuItemDispatch.clear(); + menuItemHandler->xMenuItemDispatch->removeStatusListener( this, aTargetURL ); } + menuItemHandler->xMenuItemDispatch.clear(); } } @@ -1185,22 +1185,22 @@ void MenuBarManager::impl_RetrieveShortcutsFromConfiguration( const Sequence< OUString >& rCommands, std::vector< std::unique_ptr<MenuItemHandler> >& aMenuShortCuts ) { - if ( rAccelCfg.is() ) + if ( !rAccelCfg.is() ) + return; + + try { - try - { - css::awt::KeyEvent aKeyEvent; - Sequence< Any > aSeqKeyCode = rAccelCfg->getPreferredKeyEventsForCommandList( rCommands ); - for ( sal_Int32 i = 0; i < aSeqKeyCode.getLength(); i++ ) - { - if ( aSeqKeyCode[i] >>= aKeyEvent ) - aMenuShortCuts[i]->aKeyCode = svt::AcceleratorExecute::st_AWTKey2VCLKey( aKeyEvent ); - } - } - catch ( const IllegalArgumentException& ) + css::awt::KeyEvent aKeyEvent; + Sequence< Any > aSeqKeyCode = rAccelCfg->getPreferredKeyEventsForCommandList( rCommands ); + for ( sal_Int32 i = 0; i < aSeqKeyCode.getLength(); i++ ) { + if ( aSeqKeyCode[i] >>= aKeyEvent ) + aMenuShortCuts[i]->aKeyCode = svt::AcceleratorExecute::st_AWTKey2VCLKey( aKeyEvent ); } } + catch ( const IllegalArgumentException& ) + { + } } void MenuBarManager::RetrieveShortcuts( std::vector< std::unique_ptr<MenuItemHandler> >& aMenuShortCuts ) @@ -1219,92 +1219,92 @@ void MenuBarManager::RetrieveShortcuts( std::vector< std::unique_ptr<MenuItemHan } } - if ( m_bModuleIdentified ) - { - Reference< XAcceleratorConfiguration > xDocAccelCfg( m_xDocAcceleratorManager ); - Reference< XAcceleratorConfiguration > xModuleAccelCfg( m_xModuleAcceleratorManager ); - Reference< XAcceleratorConfiguration > xGlobalAccelCfg( m_xGlobalAcceleratorManager ); + if ( !m_bModuleIdentified ) + return; + + Reference< XAcceleratorConfiguration > xDocAccelCfg( m_xDocAcceleratorManager ); + Reference< XAcceleratorConfiguration > xModuleAccelCfg( m_xModuleAcceleratorManager ); + Reference< XAcceleratorConfiguration > xGlobalAccelCfg( m_xGlobalAcceleratorManager ); - if ( !m_bAcceleratorCfg ) + if ( !m_bAcceleratorCfg ) + { + // Retrieve references on demand + m_bAcceleratorCfg = true; + if ( !xDocAccelCfg.is() ) { - // Retrieve references on demand - m_bAcceleratorCfg = true; - if ( !xDocAccelCfg.is() ) + Reference< XController > xController = m_xFrame->getController(); + Reference< XModel > xModel; + if ( xController.is() ) { - Reference< XController > xController = m_xFrame->getController(); - Reference< XModel > xModel; - if ( xController.is() ) + xModel = xController->getModel(); + if ( xModel.is() ) { - xModel = xController->getModel(); - if ( xModel.is() ) + Reference< XUIConfigurationManagerSupplier > xSupplier( xModel, UNO_QUERY ); + if ( xSupplier.is() ) { - Reference< XUIConfigurationManagerSupplier > xSupplier( xModel, UNO_QUERY ); - if ( xSupplier.is() ) + Reference< XUIConfigurationManager > xDocUICfgMgr = xSupplier->getUIConfigurationManager(); + if ( xDocUICfgMgr.is() ) { - Reference< XUIConfigurationManager > xDocUICfgMgr = xSupplier->getUIConfigurationManager(); - if ( xDocUICfgMgr.is() ) - { - xDocAccelCfg = xDocUICfgMgr->getShortCutManager(); - m_xDocAcceleratorManager = xDocAccelCfg; - } + xDocAccelCfg = xDocUICfgMgr->getShortCutManager(); + m_xDocAcceleratorManager = xDocAccelCfg; } } } } + } - if ( !xModuleAccelCfg.is() ) + if ( !xModuleAccelCfg.is() ) + { + Reference< XModuleUIConfigurationManagerSupplier > xModuleCfgMgrSupplier = + theModuleUIConfigurationManagerSupplier::get( m_xContext ); + try { - Reference< XModuleUIConfigurationManagerSupplier > xModuleCfgMgrSupplier = - theModuleUIConfigurationManagerSupplier::get( m_xContext ); - try - { - Reference< XUIConfigurationManager > xUICfgMgr = xModuleCfgMgrSupplier->getUIConfigurationManager( m_aModuleIdentifier ); - if ( xUICfgMgr.is() ) - { - xModuleAccelCfg = xUICfgMgr->getShortCutManager(); - m_xModuleAcceleratorManager = xModuleAccelCfg; - } - } - catch ( const RuntimeException& ) - { - throw; - } - catch ( const Exception& ) + Reference< XUIConfigurationManager > xUICfgMgr = xModuleCfgMgrSupplier->getUIConfigurationManager( m_aModuleIdentifier ); + if ( xUICfgMgr.is() ) { + xModuleAccelCfg = xUICfgMgr->getShortCutManager(); + m_xModuleAcceleratorManager = xModuleAccelCfg; } } - - if ( !xGlobalAccelCfg.is() ) try + catch ( const RuntimeException& ) { - xGlobalAccelCfg = GlobalAcceleratorConfiguration::create( m_xContext ); - m_xGlobalAcceleratorManager = xGlobalAccelCfg; + throw; } - catch ( const css::uno::DeploymentException& ) + catch ( const Exception& ) { - SAL_WARN("fwk.uielement", "GlobalAcceleratorConfiguration" - " not available. This should happen only on mobile platforms."); } } - vcl::KeyCode aEmptyKeyCode; - Sequence< OUString > aSeq( aMenuShortCuts.size() ); - const sal_uInt32 nCount = aMenuShortCuts.size(); - for ( sal_uInt32 i = 0; i < nCount; ++i ) + if ( !xGlobalAccelCfg.is() ) try { - OUString aItemURL = aMenuShortCuts[i]->aMenuItemURL; - if( aItemURL.isEmpty() && aMenuShortCuts[i]->xSubMenuManager.is()) - aItemURL = "-"; // tdf#99527 prevent throw in case of empty commands - aSeq[i] = aItemURL; - aMenuShortCuts[i]->aKeyCode = aEmptyKeyCode; + xGlobalAccelCfg = GlobalAcceleratorConfiguration::create( m_xContext ); + m_xGlobalAcceleratorManager = xGlobalAccelCfg; } + catch ( const css::uno::DeploymentException& ) + { + SAL_WARN("fwk.uielement", "GlobalAcceleratorConfiguration" + " not available. This should happen only on mobile platforms."); + } + } - if ( m_xGlobalAcceleratorManager.is() ) - impl_RetrieveShortcutsFromConfiguration( xGlobalAccelCfg, aSeq, aMenuShortCuts ); - if ( m_xModuleAcceleratorManager.is() ) - impl_RetrieveShortcutsFromConfiguration( xModuleAccelCfg, aSeq, aMenuShortCuts ); - if ( m_xDocAcceleratorManager.is() ) - impl_RetrieveShortcutsFromConfiguration( xDocAccelCfg, aSeq, aMenuShortCuts ); + vcl::KeyCode aEmptyKeyCode; + Sequence< OUString > aSeq( aMenuShortCuts.size() ); + const sal_uInt32 nCount = aMenuShortCuts.size(); + for ( sal_uInt32 i = 0; i < nCount; ++i ) + { + OUString aItemURL = aMenuShortCuts[i]->aMenuItemURL; + if( aItemURL.isEmpty() && aMenuShortCuts[i]->xSubMenuManager.is()) + aItemURL = "-"; // tdf#99527 prevent throw in case of empty commands + aSeq[i] = aItemURL; + aMenuShortCuts[i]->aKeyCode = aEmptyKeyCode; } + + if ( m_xGlobalAcceleratorManager.is() ) + impl_RetrieveShortcutsFromConfiguration( xGlobalAccelCfg, aSeq, aMenuShortCuts ); + if ( m_xModuleAcceleratorManager.is() ) + impl_RetrieveShortcutsFromConfiguration( xModuleAccelCfg, aSeq, aMenuShortCuts ); + if ( m_xDocAcceleratorManager.is() ) + impl_RetrieveShortcutsFromConfiguration( xDocAccelCfg, aSeq, aMenuShortCuts ); } void MenuBarManager::RetrieveImageManagers() @@ -1371,20 +1371,20 @@ void MenuBarManager::FillMenuWithConfiguration( rModuleIdentifier ); bool bHasDisabledEntries = SvtCommandOptions().HasEntries( SvtCommandOptions::CMDOPTION_DISABLED ); - if ( bHasDisabledEntries ) + if ( !bHasDisabledEntries ) + return; + + sal_uInt16 nCount = pMenu->GetItemCount(); + for ( sal_uInt16 i = 0; i < nCount; i++ ) { - sal_uInt16 nCount = pMenu->GetItemCount(); - for ( sal_uInt16 i = 0; i < nCount; i++ ) + sal_uInt16 nID = pMenu->GetItemId( i ); + if ( nID > 0 ) { - sal_uInt16 nID = pMenu->GetItemId( i ); - if ( nID > 0 ) + PopupMenu* pPopupMenu = pMenu->GetPopupMenu( nID ); + if ( pPopupMenu ) { - PopupMenu* pPopupMenu = pMenu->GetPopupMenu( nID ); - if ( pPopupMenu ) - { - if ( MustBeHidden( pPopupMenu, rTransformer )) - pMenu->HideItem( nId ); - } + if ( MustBeHidden( pPopupMenu, rTransformer )) + pMenu->HideItem( nId ); } } } diff --git a/framework/source/uielement/menubarwrapper.cxx b/framework/source/uielement/menubarwrapper.cxx index 4c0d243c0753..716bc77094e2 100644 --- a/framework/source/uielement/menubarwrapper.cxx +++ b/framework/source/uielement/menubarwrapper.cxx @@ -111,84 +111,84 @@ void SAL_CALL MenuBarWrapper::initialize( const Sequence< Any >& aArguments ) if ( m_bDisposed ) throw DisposedException(); - if ( !m_bInitialized ) + if ( m_bInitialized ) + return; + + OUString aModuleIdentifier; + UIConfigElementWrapperBase::initialize( aArguments ); + + Reference< XFrame > xFrame( m_xWeakFrame ); + if ( !(xFrame.is() && m_xConfigSource.is()) ) + return; + + // Create VCL menubar which will be filled with settings data + VclPtr<MenuBar> pVCLMenuBar; + VCLXMenuBar* pAwtMenuBar = nullptr; + { + SolarMutexGuard aSolarMutexGuard; + pVCLMenuBar = VclPtr<MenuBar>::Create(); + } + + Reference< XModuleManager2 > xModuleManager = ModuleManager::create( m_xContext ); + + try + { + aModuleIdentifier = xModuleManager->identify( xFrame ); + } + catch( const Exception& ) + { + } + + Reference< XURLTransformer > xTrans; + try + { + xTrans.set( URLTransformer::create(m_xContext) ); + m_xConfigData = m_xConfigSource->getSettings( m_aResourceURL, false ); + if ( m_xConfigData.is() ) + { + // Fill menubar with container contents + sal_uInt16 nId = 1; + MenuBarManager::FillMenuWithConfiguration( nId, pVCLMenuBar, aModuleIdentifier, m_xConfigData, xTrans ); + } + } + catch ( const NoSuchElementException& ) { - OUString aModuleIdentifier; - UIConfigElementWrapperBase::initialize( aArguments ); + } - Reference< XFrame > xFrame( m_xWeakFrame ); - if ( xFrame.is() && m_xConfigSource.is() ) + bool bMenuOnly( false ); + for ( sal_Int32 n = 0; n < aArguments.getLength(); n++ ) + { + PropertyValue aPropValue; + if ( aArguments[n] >>= aPropValue ) { - // Create VCL menubar which will be filled with settings data - VclPtr<MenuBar> pVCLMenuBar; - VCLXMenuBar* pAwtMenuBar = nullptr; - { - SolarMutexGuard aSolarMutexGuard; - pVCLMenuBar = VclPtr<MenuBar>::Create(); - } - - Reference< XModuleManager2 > xModuleManager = ModuleManager::create( m_xContext ); - - try - { - aModuleIdentifier = xModuleManager->identify( xFrame ); - } - catch( const Exception& ) - { - } - - Reference< XURLTransformer > xTrans; - try - { - xTrans.set( URLTransformer::create(m_xContext) ); - m_xConfigData = m_xConfigSource->getSettings( m_aResourceURL, false ); - if ( m_xConfigData.is() ) - { - // Fill menubar with container contents - sal_uInt16 nId = 1; - MenuBarManager::FillMenuWithConfiguration( nId, pVCLMenuBar, aModuleIdentifier, m_xConfigData, xTrans ); - } - } - catch ( const NoSuchElementException& ) - { - } - - bool bMenuOnly( false ); - for ( sal_Int32 n = 0; n < aArguments.getLength(); n++ ) - { - PropertyValue aPropValue; - if ( aArguments[n] >>= aPropValue ) - { - if ( aPropValue.Name == "MenuOnly" ) - aPropValue.Value >>= bMenuOnly; - } - } - - if ( !bMenuOnly ) - { - // Initialize menubar manager with our vcl menu bar. There are some situations where we only want to get the menu without any - // interaction which is done by the menu bar manager. This must be requested by a special property called "MenuOnly". Be careful - // a menu bar created with this property is not fully supported. It must be attached to a real menu bar manager to have full - // support. This feature is currently used for "Inplace editing"! - Reference< XDispatchProvider > xDispatchProvider; - - MenuBarManager* pMenuBarManager = new MenuBarManager( m_xContext, - xFrame, - xTrans, - xDispatchProvider, - aModuleIdentifier, - pVCLMenuBar, - false ); - - m_xMenuBarManager.set( static_cast< OWeakObject *>( pMenuBarManager ), UNO_QUERY ); - } - - // Initialize toolkit menu bar implementation to have awt::XMenuBar for data exchange. - // Don't use this toolkit menu bar or one of its functions. It is only used as a data container! - pAwtMenuBar = new VCLXMenuBar( pVCLMenuBar ); - m_xMenuBar = pAwtMenuBar; + if ( aPropValue.Name == "MenuOnly" ) + aPropValue.Value >>= bMenuOnly; } } + + if ( !bMenuOnly ) + { + // Initialize menubar manager with our vcl menu bar. There are some situations where we only want to get the menu without any + // interaction which is done by the menu bar manager. This must be requested by a special property called "MenuOnly". Be careful + // a menu bar created with this property is not fully supported. It must be attached to a real menu bar manager to have full + // support. This feature is currently used for "Inplace editing"! + Reference< XDispatchProvider > xDispatchProvider; + + MenuBarManager* pMenuBarManager = new MenuBarManager( m_xContext, + xFrame, + xTrans, + xDispatchProvider, + aModuleIdentifier, + pVCLMenuBar, + false ); + + m_xMenuBarManager.set( static_cast< OWeakObject *>( pMenuBarManager ), UNO_QUERY ); + } + + // Initialize toolkit menu bar implementation to have awt::XMenuBar for data exchange. + // Don't use this toolkit menu bar or one of its functions. It is only used as a data container! + pAwtMenuBar = new VCLXMenuBar( pVCLMenuBar ); + m_xMenuBar = pAwtMenuBar; } // XUIElementSettings @@ -199,27 +199,27 @@ void SAL_CALL MenuBarWrapper::updateSettings() if ( m_bDisposed ) throw DisposedException(); - if ( m_xMenuBarManager.is() ) + if ( !m_xMenuBarManager.is() ) + return; + + if ( m_xConfigSource.is() && m_bPersistent ) { - if ( m_xConfigSource.is() && m_bPersistent ) + try { - try - { - MenuBarManager* pMenuBarManager = static_cast< MenuBarManager *>( m_xMenuBarManager.get() ); - - m_xConfigData = m_xConfigSource->getSettings( m_aResourceURL, false ); - if ( m_xConfigData.is() ) - pMenuBarManager->SetItemContainer( m_xConfigData ); - } - catch ( const NoSuchElementException& ) - { - } + MenuBarManager* pMenuBarManager = static_cast< MenuBarManager *>( m_xMenuBarManager.get() ); + + m_xConfigData = m_xConfigSource->getSettings( m_aResourceURL, false ); + if ( m_xConfigData.is() ) + pMenuBarManager->SetItemContainer( m_xConfigData ); } - else if ( !m_bPersistent ) + catch ( const NoSuchElementException& ) { - // Transient menubar: do nothing } } + else if ( !m_bPersistent ) + { + // Transient menubar: do nothing + } } void MenuBarWrapper::impl_fillNewData() { diff --git a/framework/source/uielement/newmenucontroller.cxx b/framework/source/uielement/newmenucontroller.cxx index 5bb88b23842b..0bcd24982c47 100644 --- a/framework/source/uielement/newmenucontroller.cxx +++ b/framework/source/uielement/newmenucontroller.cxx @@ -124,24 +124,24 @@ void NewMenuController::determineAndSetNewDocAccel( PopupMenu* pPopupMenu, const } } - if ( !bFound ) + if ( bFound ) + return; + + // Search for the default module name + OUString aDefaultModuleName( SvtModuleOptions().GetDefaultModuleName() ); + if ( aDefaultModuleName.isEmpty() ) + return; + + for ( sal_uInt16 i = 0; i < nCount; i++ ) { - // Search for the default module name - OUString aDefaultModuleName( SvtModuleOptions().GetDefaultModuleName() ); - if ( !aDefaultModuleName.isEmpty() ) + if ( pPopupMenu->GetItemType( i ) != MenuItemType::SEPARATOR ) { - for ( sal_uInt16 i = 0; i < nCount; i++ ) + nId = pPopupMenu->GetItemId( i ); + aCommand = pPopupMenu->GetItemCommand( nId ); + if ( aCommand.indexOf( aDefaultModuleName ) >= 0 ) { - if ( pPopupMenu->GetItemType( i ) != MenuItemType::SEPARATOR ) - { - nId = pPopupMenu->GetItemId( i ); - aCommand = pPopupMenu->GetItemCommand( nId ); - if ( aCommand.indexOf( aDefaultModuleName ) >= 0 ) - { - pPopupMenu->SetAccelKey( nId, rKeyCode ); - break; - } - } + pPopupMenu->SetAccelKey( nId, rKeyCode ); + break; } } } @@ -149,110 +149,110 @@ void NewMenuController::determineAndSetNewDocAccel( PopupMenu* pPopupMenu, const void NewMenuController::setAccelerators( PopupMenu* pPopupMenu ) { - if ( m_bModuleIdentified ) - { - Reference< XAcceleratorConfiguration > xDocAccelCfg( m_xDocAcceleratorManager ); - Reference< XAcceleratorConfiguration > xModuleAccelCfg( m_xModuleAcceleratorManager ); - Reference< XAcceleratorConfiguration > xGlobalAccelCfg( m_xGlobalAcceleratorManager ); + if ( !m_bModuleIdentified ) + return; - if ( !m_bAcceleratorCfg ) + Reference< XAcceleratorConfiguration > xDocAccelCfg( m_xDocAcceleratorManager ); + Reference< XAcceleratorConfiguration > xModuleAccelCfg( m_xModuleAcceleratorManager ); + Reference< XAcceleratorConfiguration > xGlobalAccelCfg( m_xGlobalAcceleratorManager ); + + if ( !m_bAcceleratorCfg ) + { + // Retrieve references on demand + m_bAcceleratorCfg = true; + if ( !xDocAccelCfg.is() ) { - // Retrieve references on demand - m_bAcceleratorCfg = true; - if ( !xDocAccelCfg.is() ) + Reference< XController > xController = m_xFrame->getController(); + Reference< XModel > xModel; + if ( xController.is() ) { - Reference< XController > xController = m_xFrame->getController(); - Reference< XModel > xModel; - if ( xController.is() ) + xModel = xController->getModel(); + if ( xModel.is() ) { - xModel = xController->getModel(); - if ( xModel.is() ) + Reference< XUIConfigurationManagerSupplier > xSupplier( xModel, UNO_QUERY ); + if ( xSupplier.is() ) { - Reference< XUIConfigurationManagerSupplier > xSupplier( xModel, UNO_QUERY ); - if ( xSupplier.is() ) + Reference< XUIConfigurationManager > xDocUICfgMgr = xSupplier->getUIConfigurationManager(); + if ( xDocUICfgMgr.is() ) { - Reference< XUIConfigurationManager > xDocUICfgMgr = xSupplier->getUIConfigurationManager(); - if ( xDocUICfgMgr.is() ) - { - xDocAccelCfg = xDocUICfgMgr->getShortCutManager(); - m_xDocAcceleratorManager = xDocAccelCfg; - } + xDocAccelCfg = xDocUICfgMgr->getShortCutManager(); + m_xDocAcceleratorManager = xDocAccelCfg; } } } } + } - if ( !xModuleAccelCfg.is() ) + if ( !xModuleAccelCfg.is() ) + { + Reference< XModuleUIConfigurationManagerSupplier > xModuleCfgMgrSupplier = + theModuleUIConfigurationManagerSupplier::get( m_xContext ); + Reference< XUIConfigurationManager > xUICfgMgr = xModuleCfgMgrSupplier->getUIConfigurationManager( m_aModuleIdentifier ); + if ( xUICfgMgr.is() ) { - Reference< XModuleUIConfigurationManagerSupplier > xModuleCfgMgrSupplier = - theModuleUIConfigurationManagerSupplier::get( m_xContext ); - Reference< XUIConfigurationManager > xUICfgMgr = xModuleCfgMgrSupplier->getUIConfigurationManager( m_aModuleIdentifier ); - if ( xUICfgMgr.is() ) - { - xModuleAccelCfg = xUICfgMgr->getShortCutManager(); - m_xModuleAcceleratorManager = xModuleAccelCfg; - } + xModuleAccelCfg = xUICfgMgr->getShortCutManager(); + m_xModuleAcceleratorManager = xModuleAccelCfg; } + } - if ( !xGlobalAccelCfg.is() ) - { - xGlobalAccelCfg = GlobalAcceleratorConfiguration::create( m_xContext ); - m_xGlobalAcceleratorManager = xGlobalAccelCfg; - } + if ( !xGlobalAccelCfg.is() ) + { + xGlobalAccelCfg = GlobalAcceleratorConfiguration::create( m_xContext ); + m_xGlobalAcceleratorManager = xGlobalAccelCfg; } + } - vcl::KeyCode aEmptyKeyCode; - sal_uInt16 nItemCount( pPopupMenu->GetItemCount() ); - std::vector< vcl::KeyCode > aMenuShortCuts; - std::vector< OUString > aCmds; - std::vector< sal_uInt16 > aIds; - for ( sal_uInt16 i = 0; i < nItemCount; i++ ) + vcl::KeyCode aEmptyKeyCode; + sal_uInt16 nItemCount( pPopupMenu->GetItemCount() ); + std::vector< vcl::KeyCode > aMenuShortCuts; + std::vector< OUString > aCmds; + std::vector< sal_uInt16 > aIds; + for ( sal_uInt16 i = 0; i < nItemCount; i++ ) + { + if ( pPopupMenu->GetItemType( i ) != MenuItemType::SEPARATOR ) { - if ( pPopupMenu->GetItemType( i ) != MenuItemType::SEPARATOR ) - { - sal_uInt16 nId( pPopupMenu->GetItemId( i )); - aIds.push_back( nId ); - aMenuShortCuts.push_back( aEmptyKeyCode ); - aCmds.push_back( pPopupMenu->GetItemCommand( nId )); - } + sal_uInt16 nId( pPopupMenu->GetItemId( i )); + aIds.push_back( nId ); + aMenuShortCuts.push_back( aEmptyKeyCode ); + aCmds.push_back( pPopupMenu->GetItemCommand( nId )); } + } - sal_uInt32 nSeqCount( aIds.size() ); + sal_uInt32 nSeqCount( aIds.size() ); - if ( m_bNewMenu ) - nSeqCount+=1; + if ( m_bNewMenu ) + nSeqCount+=1; - Sequence< OUString > aSeq( nSeqCount ); + Sequence< OUString > aSeq( nSeqCount ); - // Add a special command for our "New" menu. - if ( m_bNewMenu ) - { - aSeq[nSeqCount-1] = m_aCommandURL; - aMenuShortCuts.push_back( aEmptyKeyCode ); - } + // Add a special command for our "New" menu. + if ( m_bNewMenu ) + { + aSeq[nSeqCount-1] = m_aCommandURL; + aMenuShortCuts.push_back( aEmptyKeyCode ); + } - const sal_uInt32 nCount = aCmds.size(); - for ( sal_uInt32 i = 0; i < nCount; i++ ) - aSeq[i] = aCmds[i]; + const sal_uInt32 nCount = aCmds.size(); + for ( sal_uInt32 i = 0; i < nCount; i++ ) + aSeq[i] = aCmds[i]; - if ( m_xGlobalAcceleratorManager.is() ) - retrieveShortcutsFromConfiguration( xGlobalAccelCfg, aSeq, aMenuShortCuts ); - if ( m_xModuleAcceleratorManager.is() ) - retrieveShortcutsFromConfiguration( xModuleAccelCfg, aSeq, aMenuShortCuts ); - if ( m_xDocAcceleratorManager.is() ) - retrieveShortcutsFromConfiguration( xDocAccelCfg, aSeq, aMenuShortCuts ); + if ( m_xGlobalAcceleratorManager.is() ) + retrieveShortcutsFromConfiguration( xGlobalAccelCfg, aSeq, aMenuShortCuts ); + if ( m_xModuleAcceleratorManager.is() ) + retrieveShortcutsFromConfiguration( xModuleAccelCfg, aSeq, aMenuShortCuts ); + if ( m_xDocAcceleratorManager.is() ) + retrieveShortcutsFromConfiguration( xDocAccelCfg, aSeq, aMenuShortCuts ); - const sal_uInt32 nCount2 = aIds.size(); - for ( sal_uInt32 i = 0; i < nCount2; i++ ) - pPopupMenu->SetAccelKey( aIds[i], aMenuShortCuts[i] ); + const sal_uInt32 nCount2 = aIds.size(); + for ( sal_uInt32 i = 0; i < nCount2; i++ ) + pPopupMenu->SetAccelKey( aIds[i], aMenuShortCuts[i] ); - // Special handling for "New" menu short-cut should be set at the - // document which will be opened using it. - if ( m_bNewMenu ) - { - if ( aMenuShortCuts[nSeqCount-1] != aEmptyKeyCode ) - determineAndSetNewDocAccel( pPopupMenu, aMenuShortCuts[nSeqCount-1] ); - } + // Special handling for "New" menu short-cut should be set at the + // document which will be opened using it. + if ( m_bNewMenu ) + { + if ( aMenuShortCuts[nSeqCount-1] != aEmptyKeyCode ) + determineAndSetNewDocAccel( pPopupMenu, aMenuShortCuts[nSeqCount-1] ); } } @@ -261,22 +261,22 @@ void NewMenuController::retrieveShortcutsFromConfiguration( const Sequence< OUString >& rCommands, std::vector< vcl::KeyCode >& aMenuShortCuts ) { - if ( rAccelCfg.is() ) + if ( !rAccelCfg.is() ) + return; + + try { - try - { - css::awt::KeyEvent aKeyEvent; - Sequence< Any > aSeqKeyCode = rAccelCfg->getPreferredKeyEventsForCommandList( rCommands ); - for ( sal_Int32 i = 0; i < aSeqKeyCode.getLength(); i++ ) - { - if ( aSeqKeyCode[i] >>= aKeyEvent ) - aMenuShortCuts[i] = svt::AcceleratorExecute::st_AWTKey2VCLKey( aKeyEvent ); - } - } - catch ( const IllegalArgumentException& ) + css::awt::KeyEvent aKeyEvent; + Sequence< Any > aSeqKeyCode = rAccelCfg->getPreferredKeyEventsForCommandList( rCommands ); + for ( sal_Int32 i = 0; i < aSeqKeyCode.getLength(); i++ ) { + if ( aSeqKeyCode[i] >>= aKeyEvent ) + aMenuShortCuts[i] = svt::AcceleratorExecute::st_AWTKey2VCLKey( aKeyEvent ); } } + catch ( const IllegalArgumentException& ) + { + } } NewMenuController::NewMenuController( const css::uno::Reference< css::uno::XComponentContext >& xContext ) : @@ -306,59 +306,59 @@ void NewMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu > const & if ( pPopupMenu ) pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); - if ( pVCLPopupMenu ) + if ( !pVCLPopupMenu ) + return; + + Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY ); + URL aTargetURL; + aTargetURL.Complete = OUString::createFromAscii(m_bNewMenu ? aSlotNewDocDirect : aSlotAutoPilot); + m_xURLTransformer->parseStrict( aTargetURL ); + Reference< XDispatch > xMenuItemDispatch = xDispatchProvider->queryDispatch( aTargetURL, OUString(), 0 ); + if(xMenuItemDispatch == nullptr) + return; + + const css::uno::Sequence< css::uno::Sequence< css::beans::PropertyValue > > aDynamicMenuEntries = + SvtDynamicMenuOptions().GetMenu( m_bNewMenu ? EDynamicMenuType::NewMenu : EDynamicMenuType::WizardMenu ); + + OUString aTitle; + OUString aURL; + OUString aTargetFrame; + OUString aImageId; + sal_uInt16 nItemId = 1; + + for ( const auto& aDynamicMenuEntry : aDynamicMenuEntries ) { - Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY ); - URL aTargetURL; - aTargetURL.Complete = OUString::createFromAscii(m_bNewMenu ? aSlotNewDocDirect : aSlotAutoPilot); - m_xURLTransformer->parseStrict( aTargetURL ); - Reference< XDispatch > xMenuItemDispatch = xDispatchProvider->queryDispatch( aTargetURL, OUString(), 0 ); - if(xMenuItemDispatch == nullptr) - return; - - const css::uno::Sequence< css::uno::Sequence< css::beans::PropertyValue > > aDynamicMenuEntries = - SvtDynamicMenuOptions().GetMenu( m_bNewMenu ? EDynamicMenuType::NewMenu : EDynamicMenuType::WizardMenu ); - - OUString aTitle; - OUString aURL; - OUString aTargetFrame; - OUString aImageId; - sal_uInt16 nItemId = 1; - - for ( const auto& aDynamicMenuEntry : aDynamicMenuEntries ) + for ( const auto& aProperty : aDynamicMenuEntry ) { - for ( const auto& aProperty : aDynamicMenuEntry ) - { - if ( aProperty.Name == DYNAMICMENU_PROPERTYNAME_URL ) - aProperty.Value >>= aURL; - else if ( aProperty.Name == DYNAMICMENU_PROPERTYNAME_TITLE ) - aProperty.Value >>= aTitle; - else if ( aProperty.Name == DYNAMICMENU_PROPERTYNAME_IMAGEIDENTIFIER ) - aProperty.Value >>= aImageId; - else if ( aProperty.Name == DYNAMICMENU_PROPERTYNAME_TARGETNAME ) - aProperty.Value >>= aTargetFrame; - } + if ( aProperty.Name == DYNAMICMENU_PROPERTYNAME_URL ) + aProperty.Value >>= aURL; + else if ( aProperty.Name == DYNAMICMENU_PROPERTYNAME_TITLE ) + aProperty.Value >>= aTitle; + else if ( aProperty.Name == DYNAMICMENU_PROPERTYNAME_IMAGEIDENTIFIER ) + aProperty.Value >>= aImageId; + else if ( aProperty.Name == DYNAMICMENU_PROPERTYNAME_TARGETNAME ) + aProperty.Value >>= aTargetFrame; + } - if ( aTitle.isEmpty() && aURL.isEmpty() ) - continue; + if ( aTitle.isEmpty() && aURL.isEmpty() ) + continue; - if ( aURL == "private:separator" ) - pVCLPopupMenu->InsertSeparator(); - else - { - pVCLPopupMenu->InsertItem( nItemId, aTitle ); - pVCLPopupMenu->SetItemCommand( nItemId, aURL ); + if ( aURL == "private:separator" ) + pVCLPopupMenu->InsertSeparator(); + else + { + pVCLPopupMenu->InsertItem( nItemId, aTitle ); + pVCLPopupMenu->SetItemCommand( nItemId, aURL ); - void* nAttributePtr = MenuAttributes::CreateAttribute( aTargetFrame, aImageId ); - pVCLPopupMenu->SetUserValue( nItemId, nAttributePtr, MenuAttributes::ReleaseAttribute ); + void* nAttributePtr = MenuAttributes::CreateAttribute( aTargetFrame, aImageId ); + pVCLPopupMenu->SetUserValue( nItemId, nAttributePtr, MenuAttributes::ReleaseAttribute ); - nItemId++; - } + nItemId++; } - - if ( m_bShowImages ) - setMenuImages( pVCLPopupMenu, m_bShowImages ); } + + if ( m_bShowImages ) + setMenuImages( pVCLPopupMenu, m_bShowImages ); } // XEventListener @@ -393,57 +393,57 @@ void SAL_CALL NewMenuController::itemSelected( const css::awt::MenuEvent& rEvent xContext = m_xContext; } - if ( xPopupMenu.is() ) - { - VCLXPopupMenu* pPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getUnoTunnelImplementation<VCLXMenu>( xPopupMenu )); - if ( pPopupMenu ) - { - OUString aURL; - OUString aTargetFrame( m_aTargetFrame ); + if ( !xPopupMenu.is() ) + return; - { - SolarMutexGuard aSolarMutexGuard; - PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); - aURL = pVCLPopupMenu->GetItemCommand(rEvent.MenuId); - void* nAttributePtr = pVCLPopupMenu->GetUserValue(rEvent.MenuId); - MenuAttributes* pAttributes = static_cast<MenuAttributes *>(nAttributePtr); - if (pAttributes) - aTargetFrame = pAttributes->aTargetFrame; - } + VCLXPopupMenu* pPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getUnoTunnelImplementation<VCLXMenu>( xPopupMenu )); + if ( !pPopupMenu ) + return; - Sequence< PropertyValue > aArgsList( 1 ); - aArgsList[0].Name = "Referer"; - aArgsList[0].Value <<= OUString( "private:user" ); + OUString aURL; + OUString aTargetFrame( m_aTargetFrame ); - dispatchCommand( aURL, aArgsList, aTargetFrame ); - } + { + SolarMutexGuard aSolarMutexGuard; + PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); + aURL = pVCLPopupMenu->GetItemCommand(rEvent.MenuId); + void* nAttributePtr = pVCLPopupMenu->GetUserValue(rEvent.MenuId); + MenuAttributes* pAttributes = static_cast<MenuAttributes *>(nAttributePtr); + if (pAttributes) + aTargetFrame = pAttributes->aTargetFrame; } + + Sequence< PropertyValue > aArgsList( 1 ); + aArgsList[0].Name = "Referer"; + aArgsList[0].Value <<= OUString( "private:user" ); + + dispatchCommand( aURL, aArgsList, aTargetFrame ); } void SAL_CALL NewMenuController::itemActivated( const css::awt::MenuEvent& ) { SolarMutexGuard aSolarMutexGuard; - if ( m_xFrame.is() && m_xPopupMenu.is() ) - { - VCLXPopupMenu* pPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getUnoTunnelImplementation<VCLXMenu>( m_xPopupMenu )); - if ( pPopupMenu ) - { - const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); - bool bShowImages( rSettings.GetUseImagesInMenus() ); - OUString aIconTheme( rSettings.DetermineIconTheme() ); + if ( !(m_xFrame.is() && m_xPopupMenu.is()) ) + return; - PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); + VCLXPopupMenu* pPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getUnoTunnelImplementation<VCLXMenu>( m_xPopupMenu )); + if ( !pPopupMenu ) + return; - if ( m_bShowImages != bShowImages || m_aIconTheme != aIconTheme ) - { - m_bShowImages = bShowImages; - m_aIconTheme = aIconTheme; - setMenuImages( pVCLPopupMenu, m_bShowImages ); - } + const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); + bool bShowImages( rSettings.GetUseImagesInMenus() ); + OUString aIconTheme( rSettings.DetermineIconTheme() ); - setAccelerators( pVCLPopupMenu ); - } + PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); + + if ( m_bShowImages != bShowImages || m_aIconTheme != aIconTheme ) + { + m_bShowImages = bShowImages; + m_aIconTheme = aIconTheme; + setMenuImages( pVCLPopupMenu, m_bShowImages ); } + + setAccelerators( pVCLPopupMenu ); } // XPopupMenuController @@ -492,18 +492,18 @@ void SAL_CALL NewMenuController::initialize( const Sequence< Any >& aArguments ) osl::MutexGuard aLock( m_aMutex ); bool bInitalized( m_bInitialized ); - if ( !bInitalized ) - { - svt::PopupMenuControllerBase::initialize( aArguments ); + if ( bInitalized ) + return; - if ( m_bInitialized ) - { - const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); + svt::PopupMenuControllerBase::initialize( aArguments ); - m_bShowImages = rSettings.GetUseImagesInMenus(); - m_aIconTheme = rSettings.DetermineIconTheme(); - m_bNewMenu = m_aCommandURL == aSlotNewDocDirect; - } + if ( m_bInitialized ) + { + const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); + + m_bShowImages = rSettings.GetUseImagesInMenus(); + m_aIconTheme = rSettings.DetermineIconTheme(); + m_bNewMenu = m_aCommandURL == aSlotNewDocDirect; } } diff --git a/framework/source/uielement/objectmenucontroller.cxx b/framework/source/uielement/objectmenucontroller.cxx index 05d217b7a06b..80215acb8d06 100644 --- a/framework/source/uielement/objectmenucontroller.cxx +++ b/framework/source/uielement/objectmenucontroller.cxx @@ -90,20 +90,20 @@ void ObjectMenuController::fillPopupMenu( const Sequence< css::embed::VerbDescri if ( pPopupMenu ) pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); - if ( pVCLPopupMenu ) + if ( !pVCLPopupMenu ) + return; + + const OUString aVerbCommand( ".uno:ObjectMenue?VerbID:short=" ); + for ( sal_Int32 i = 0; i < rVerbCommandSeq.getLength(); i++ ) { - const OUString aVerbCommand( ".uno:ObjectMenue?VerbID:short=" ); - for ( sal_Int32 i = 0; i < rVerbCommandSeq.getLength(); i++ ) + const css::embed::VerbDescriptor& rVerb = pVerbCommandArray[i]; + if ( rVerb.VerbAttributes & css::embed::VerbAttributes::MS_VERBATTR_ONCONTAINERMENU ) { - const css::embed::VerbDescriptor& rVerb = pVerbCommandArray[i]; - if ( rVerb.VerbAttributes & css::embed::VerbAttributes::MS_VERBATTR_ONCONTAINERMENU ) - { - m_xPopupMenu->insertItem( i+1, rVerb.VerbName, 0, i ); - // use VCL popup menu pointer to set vital information that are not part of the awt implementation - - OUString aCommand = aVerbCommand + OUString::number( rVerb.VerbID ); - pVCLPopupMenu->SetItemCommand( i+1, aCommand ); // Store verb command - } + m_xPopupMenu->insertItem( i+1, rVerb.VerbName, 0, i ); + // use VCL popup menu pointer to set vital information that are not part of the awt implementation + + OUString aCommand = aVerbCommand + OUString::number( rVerb.VerbID ); + pVCLPopupMenu->SetItemCommand( i+1, aCommand ); // Store verb command } } } diff --git a/framework/source/uielement/popuptoolbarcontroller.cxx b/framework/source/uielement/popuptoolbarcontroller.cxx index 9520ae8fc5d7..5c11600c31b9 100644 --- a/framework/source/uielement/popuptoolbarcontroller.cxx +++ b/framework/source/uielement/popuptoolbarcontroller.cxx @@ -355,28 +355,28 @@ void GenericPopupToolbarController::statusChanged( const css::frame::FeatureStat void GenericPopupToolbarController::functionExecuted( const OUString& rCommand ) { - if ( m_bReplaceWithLast ) - { - removeStatusListener( m_aCommandURL ); + if ( !m_bReplaceWithLast ) + return; - auto aProperties = vcl::CommandInfoProvider::GetCommandProperties(rCommand, m_sModuleName); - OUString aRealCommand( vcl::CommandInfoProvider::GetRealCommandForCommand(aProperties) ); - m_aCommandURL = aRealCommand.isEmpty() ? rCommand : aRealCommand; - addStatusListener( m_aCommandURL ); + removeStatusListener( m_aCommandURL ); - ToolBox* pToolBox = nullptr; - sal_uInt16 nId = 0; - if ( getToolboxId( nId, &pToolBox ) ) - { - pToolBox->SetItemCommand( nId, rCommand ); - pToolBox->SetHelpText( nId, OUString() ); // Will retrieve the new one from help. - pToolBox->SetItemText(nId, vcl::CommandInfoProvider::GetLabelForCommand(aProperties)); - pToolBox->SetQuickHelpText(nId, vcl::CommandInfoProvider::GetTooltipForCommand(rCommand, aProperties, m_xFrame)); - - Image aImage = vcl::CommandInfoProvider::GetImageForCommand(rCommand, m_xFrame, pToolBox->GetImageSize()); - if ( !!aImage ) - pToolBox->SetItemImage( nId, aImage ); - } + auto aProperties = vcl::CommandInfoProvider::GetCommandProperties(rCommand, m_sModuleName); + OUString aRealCommand( vcl::CommandInfoProvider::GetRealCommandForCommand(aProperties) ); + m_aCommandURL = aRealCommand.isEmpty() ? rCommand : aRealCommand; + addStatusListener( m_aCommandURL ); + + ToolBox* pToolBox = nullptr; + sal_uInt16 nId = 0; + if ( getToolboxId( nId, &pToolBox ) ) + { + pToolBox->SetItemCommand( nId, rCommand ); + pToolBox->SetHelpText( nId, OUString() ); // Will retrieve the new one from help. + pToolBox->SetItemText(nId, vcl::CommandInfoProvider::GetLabelForCommand(aProperties)); + pToolBox->SetQuickHelpText(nId, vcl::CommandInfoProvider::GetTooltipForCommand(rCommand, aProperties, m_xFrame)); + + Image aImage = vcl::CommandInfoProvider::GetImageForCommand(rCommand, m_xFrame, pToolBox->GetImageSize()); + if ( !!aImage ) + pToolBox->SetItemImage( nId, aImage ); } } diff --git a/framework/source/uielement/progressbarwrapper.cxx b/framework/source/uielement/progressbarwrapper.cxx index 3a0c04a262bd..537129b9632b 100644 --- a/framework/source/uielement/progressbarwrapper.cxx +++ b/framework/source/uielement/progressbarwrapper.cxx @@ -98,26 +98,26 @@ void ProgressBarWrapper::start( const OUString& Text, ::sal_Int32 Range ) nValue = m_nValue; } - if ( xWindow.is() ) + if ( !xWindow.is() ) + return; + + SolarMutexGuard aSolarMutexGuard; + VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( !(pWindow && pWindow->GetType() == WindowType::STATUSBAR) ) + return; + + StatusBar* pStatusBar = static_cast<StatusBar *>(pWindow.get()); + if ( !pStatusBar->IsProgressMode() ) + pStatusBar->StartProgressMode( Text ); + else { - SolarMutexGuard aSolarMutexGuard; - VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow && pWindow->GetType() == WindowType::STATUSBAR ) - { - StatusBar* pStatusBar = static_cast<StatusBar *>(pWindow.get()); - if ( !pStatusBar->IsProgressMode() ) - pStatusBar->StartProgressMode( Text ); - else - { - pStatusBar->SetUpdateMode( false ); - pStatusBar->EndProgressMode(); - pStatusBar->StartProgressMode( Text ); - pStatusBar->SetProgressValue( sal_uInt16( nValue )); - pStatusBar->SetUpdateMode( true ); - } - pStatusBar->Show( true, ShowFlags::NoFocusChange | ShowFlags::NoActivate ); - } + pStatusBar->SetUpdateMode( false ); + pStatusBar->EndProgressMode(); + pStatusBar->StartProgressMode( Text ); + pStatusBar->SetProgressValue( sal_uInt16( nValue )); + pStatusBar->SetUpdateMode( true ); } + pStatusBar->Show( true, ShowFlags::NoFocusChange | ShowFlags::NoActivate ); } void ProgressBarWrapper::end() @@ -164,25 +164,25 @@ void ProgressBarWrapper::setText( const OUString& Text ) nValue = m_nValue; } - if ( xWindow.is() ) + if ( !xWindow.is() ) + return; + + SolarMutexGuard aSolarMutexGuard; + VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( !(pWindow && pWindow->GetType() == WindowType::STATUSBAR) ) + return; + + StatusBar* pStatusBar = static_cast<StatusBar *>(pWindow.get()); + if( pStatusBar->IsProgressMode() ) { - SolarMutexGuard aSolarMutexGuard; - VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow && pWindow->GetType() == WindowType::STATUSBAR ) - { - StatusBar* pStatusBar = static_cast<StatusBar *>(pWindow.get()); - if( pStatusBar->IsProgressMode() ) - { - pStatusBar->SetUpdateMode( false ); - pStatusBar->EndProgressMode(); - pStatusBar->StartProgressMode( Text ); - pStatusBar->SetProgressValue( sal_uInt16( nValue )); - pStatusBar->SetUpdateMode( true ); - } - else - pStatusBar->SetText( Text ); - } + pStatusBar->SetUpdateMode( false ); + pStatusBar->EndProgressMode(); + pStatusBar->StartProgressMode( Text ); + pStatusBar->SetProgressValue( sal_uInt16( nValue )); + pStatusBar->SetUpdateMode( true ); } + else + pStatusBar->SetText( Text ); } void ProgressBarWrapper::setValue( ::sal_Int32 nValue ) diff --git a/framework/source/uielement/recentfilesmenucontroller.cxx b/framework/source/uielement/recentfilesmenucontroller.cxx index 395a72352ba0..24ceeb1cb506 100644 --- a/framework/source/uielement/recentfilesmenucontroller.cxx +++ b/framework/source/uielement/recentfilesmenucontroller.cxx @@ -124,135 +124,135 @@ void RecentFilesMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu > if ( pPopupMenu ) pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); - if ( pVCLPopupMenu ) - { - Sequence< Sequence< PropertyValue > > aHistoryList = SvtHistoryOptions().GetList( ePICKLIST ); + if ( !pVCLPopupMenu ) + return; + + Sequence< Sequence< PropertyValue > > aHistoryList = SvtHistoryOptions().GetList( ePICKLIST ); - int nPickListMenuItems = std::min<sal_Int32>( aHistoryList.getLength(), MAX_MENU_ITEMS ); - m_aRecentFilesItems.clear(); - if (( nPickListMenuItems > 0 ) && !m_bDisabled ) + int nPickListMenuItems = std::min<sal_Int32>( aHistoryList.getLength(), MAX_MENU_ITEMS ); + m_aRecentFilesItems.clear(); + if (( nPickListMenuItems > 0 ) && !m_bDisabled ) + { + for ( int i = 0; i < nPickListMenuItems; i++ ) { - for ( int i = 0; i < nPickListMenuItems; i++ ) - { - Sequence< PropertyValue >& rPickListEntry = aHistoryList[i]; - OUString aURL; + Sequence< PropertyValue >& rPickListEntry = aHistoryList[i]; + OUString aURL; - for ( int j = 0; j < rPickListEntry.getLength(); j++ ) + for ( int j = 0; j < rPickListEntry.getLength(); j++ ) + { + if ( rPickListEntry[j].Name == HISTORY_PROPERTYNAME_URL ) { - if ( rPickListEntry[j].Name == HISTORY_PROPERTYNAME_URL ) - { - rPickListEntry[j].Value >>= aURL; - break; - } + rPickListEntry[j].Value >>= aURL; + break; } - - m_aRecentFilesItems.push_back( aURL ); } + + m_aRecentFilesItems.push_back( aURL ); } + } - if ( !m_aRecentFilesItems.empty() ) + if ( !m_aRecentFilesItems.empty() ) + { + const sal_uInt32 nCount = m_aRecentFilesItems.size(); + for ( sal_uInt32 i = 0; i < nCount; i++ ) { - const sal_uInt32 nCount = m_aRecentFilesItems.size(); - for ( sal_uInt32 i = 0; i < nCount; i++ ) - { - OUStringBuffer aMenuShortCut; - if ( i <= 9 ) - { - if ( i == 9 ) - aMenuShortCut.append( "1~0. " ); - else - { - aMenuShortCut.append( "~N. " ); - aMenuShortCut[ 1 ] = sal_Unicode( i + '1' ); - } - } + OUStringBuffer aMenuShortCut; + if ( i <= 9 ) + { + if ( i == 9 ) + aMenuShortCut.append( "1~0. " ); else { - aMenuShortCut.append( sal_Int32( i + 1 ) ); - aMenuShortCut.append( ". " ); + aMenuShortCut.append( "~N. " ); + aMenuShortCut[ 1 ] = sal_Unicode( i + '1' ); } + } + else + { + aMenuShortCut.append( sal_Int32( i + 1 ) ); + aMenuShortCut.append( ". " ); + } - OUString aURLString = "vnd.sun.star.popup:RecentFileList?entry=" + OUString::number(i); + OUString aURLString = "vnd.sun.star.popup:RecentFileList?entry=" + OUString::number(i); - // Abbreviate URL - OUString aMenuTitle; - INetURLObject aURL( m_aRecentFilesItems[i] ); - OUString aTipHelpText( aURL.getFSysPath( FSysStyle::Detect ) ); + // Abbreviate URL + OUString aMenuTitle; + INetURLObject aURL( m_aRecentFilesItems[i] ); + OUString aTipHelpText( aURL.getFSysPath( FSysStyle::Detect ) ); - if ( aURL.GetProtocol() == INetProtocol::File ) - { - // Do handle file URL differently: don't show the protocol, just the file name - aMenuTitle = aURL.GetLastName(INetURLObject::DecodeMechanism::WithCharset); - } - else - { - // In all other URLs show the protocol name before the file name - aMenuTitle = INetURLObject::GetSchemeName(aURL.GetProtocol()) + ": " + aURL.getName(); - } + if ( aURL.GetProtocol() == INetProtocol::File ) + { + // Do handle file URL differently: don't show the protocol, just the file name + aMenuTitle = aURL.GetLastName(INetURLObject::DecodeMechanism::WithCharset); + } + else + { + // In all other URLs show the protocol name before the file name + aMenuTitle = INetURLObject::GetSchemeName(aURL.GetProtocol()) + ": " + aURL.getName(); + } - aMenuShortCut.append( aMenuTitle ); + aMenuShortCut.append( aMenuTitle ); - pVCLPopupMenu->InsertItem( sal_uInt16( i+1 ), aMenuShortCut.makeStringAndClear() ); - pVCLPopupMenu->SetTipHelpText( sal_uInt16( i+1 ), aTipHelpText ); - pVCLPopupMenu->SetItemCommand( sal_uInt16( i+1 ), aURLString ); - } + pVCLPopupMenu->InsertItem( sal_uInt16( i+1 ), aMenuShortCut.makeStringAndClear() ); + pVCLPopupMenu->SetTipHelpText( sal_uInt16( i+1 ), aTipHelpText ); + pVCLPopupMenu->SetItemCommand( sal_uInt16( i+1 ), aURLString ); + } + pVCLPopupMenu->InsertSeparator(); + // Clear List menu entry + pVCLPopupMenu->InsertItem( sal_uInt16( nCount + 1 ), + FwkResId(STR_CLEAR_RECENT_FILES) ); + pVCLPopupMenu->SetItemCommand( sal_uInt16( nCount + 1 ), + CMD_CLEAR_LIST ); + pVCLPopupMenu->SetHelpText( sal_uInt16( nCount + 1 ), + FwkResId(STR_CLEAR_RECENT_FILES_HELP) ); + + // Open remote menu entry + if ( m_bShowToolbarEntries ) + { pVCLPopupMenu->InsertSeparator(); - // Clear List menu entry - pVCLPopupMenu->InsertItem( sal_uInt16( nCount + 1 ), - FwkResId(STR_CLEAR_RECENT_FILES) ); - pVCLPopupMenu->SetItemCommand( sal_uInt16( nCount + 1 ), - CMD_CLEAR_LIST ); - pVCLPopupMenu->SetHelpText( sal_uInt16( nCount + 1 ), - FwkResId(STR_CLEAR_RECENT_FILES_HELP) ); - - // Open remote menu entry - if ( m_bShowToolbarEntries ) - { - pVCLPopupMenu->InsertSeparator(); - pVCLPopupMenu->InsertItem( CMD_OPEN_AS_TEMPLATE, m_xFrame ); - pVCLPopupMenu->InsertItem( CMD_OPEN_REMOTE, m_xFrame ); - } + pVCLPopupMenu->InsertItem( CMD_OPEN_AS_TEMPLATE, m_xFrame ); + pVCLPopupMenu->InsertItem( CMD_OPEN_REMOTE, m_xFrame ); + } + } + else + { + if ( m_bShowToolbarEntries ) + { + pVCLPopupMenu->InsertItem( CMD_OPEN_AS_TEMPLATE, m_xFrame ); + pVCLPopupMenu->InsertItem( CMD_OPEN_REMOTE, m_xFrame ); } else { - if ( m_bShowToolbarEntries ) - { - pVCLPopupMenu->InsertItem( CMD_OPEN_AS_TEMPLATE, m_xFrame ); - pVCLPopupMenu->InsertItem( CMD_OPEN_REMOTE, m_xFrame ); - } - else - { - // No recent documents => insert "no document" string - pVCLPopupMenu->InsertItem( 1, FwkResId(STR_NODOCUMENT) ); - // Do not disable it, otherwise the Toolbar controller and MenuButton - // will display SV_RESID_STRING_NOSELECTIONPOSSIBLE instead of STR_NODOCUMENT - pVCLPopupMenu->SetItemBits( 1, pVCLPopupMenu->GetItemBits( 1 ) | MenuItemBits::NOSELECT ); - } + // No recent documents => insert "no document" string + pVCLPopupMenu->InsertItem( 1, FwkResId(STR_NODOCUMENT) ); + // Do not disable it, otherwise the Toolbar controller and MenuButton + // will display SV_RESID_STRING_NOSELECTIONPOSSIBLE instead of STR_NODOCUMENT + pVCLPopupMenu->SetItemBits( 1, pVCLPopupMenu->GetItemBits( 1 ) | MenuItemBits::NOSELECT ); } } } void RecentFilesMenuController::executeEntry( sal_Int32 nIndex ) { - if (( nIndex >= 0 ) && - ( nIndex < sal::static_int_cast<sal_Int32>( m_aRecentFilesItems.size() ))) - { - Sequence< PropertyValue > aArgsList(3); - aArgsList[0].Name = "Referer"; - aArgsList[0].Value <<= OUString( "private:user" ); + if (!(( nIndex >= 0 ) && + ( nIndex < sal::static_int_cast<sal_Int32>( m_aRecentFilesItems.size() )))) + return; - // documents in the picklist will never be opened as templates - aArgsList[1].Name = "AsTemplate"; - aArgsList[1].Value <<= false; + Sequence< PropertyValue > aArgsList(3); + aArgsList[0].Name = "Referer"; + aArgsList[0].Value <<= OUString( "private:user" ); - // Type detection needs to know which app we are opening it from. - aArgsList[2].Name = "DocumentService"; - aArgsList[2].Value <<= m_aModuleName; + // documents in the picklist will never be opened as templates + aArgsList[1].Name = "AsTemplate"; + aArgsList[1].Value <<= false; - dispatchCommand( m_aRecentFilesItems[ nIndex ], aArgsList, "_default" ); - } + // Type detection needs to know which app we are opening it from. + aArgsList[2].Name = "DocumentService"; + aArgsList[2].Value <<= m_aModuleName; + + dispatchCommand( m_aRecentFilesItems[ nIndex ], aArgsList, "_default" ); } // XEventListener @@ -285,30 +285,30 @@ void SAL_CALL RecentFilesMenuController::itemSelected( const css::awt::MenuEvent xPopupMenu = m_xPopupMenu; } - if ( xPopupMenu.is() ) - { - const OUString aCommand( xPopupMenu->getCommand( rEvent.MenuId ) ); + if ( !xPopupMenu.is() ) + return; - if ( aCommand == CMD_CLEAR_LIST ) - { - SvtHistoryOptions().Clear( ePICKLIST ); - dispatchCommand( - "vnd.org.libreoffice.recentdocs:ClearRecentFileList", - css::uno::Sequence< css::beans::PropertyValue >() ); - } - else if ( aCommand == CMD_OPEN_REMOTE ) - { - Sequence< PropertyValue > aArgsList( 0 ); - dispatchCommand( CMD_OPEN_REMOTE, aArgsList ); - } - else if ( aCommand == CMD_OPEN_AS_TEMPLATE ) - { - Sequence< PropertyValue > aArgsList( 0 ); - dispatchCommand( CMD_OPEN_AS_TEMPLATE, aArgsList ); - } - else - executeEntry( rEvent.MenuId-1 ); + const OUString aCommand( xPopupMenu->getCommand( rEvent.MenuId ) ); + + if ( aCommand == CMD_CLEAR_LIST ) + { + SvtHistoryOptions().Clear( ePICKLIST ); + dispatchCommand( + "vnd.org.libreoffice.recentdocs:ClearRecentFileList", + css::uno::Sequence< css::beans::PropertyValue >() ); + } + else if ( aCommand == CMD_OPEN_REMOTE ) + { + Sequence< PropertyValue > aArgsList( 0 ); + dispatchCommand( CMD_OPEN_REMOTE, aArgsList ); + } + else if ( aCommand == CMD_OPEN_AS_TEMPLATE ) + { + Sequence< PropertyValue > aArgsList( 0 ); + dispatchCommand( CMD_OPEN_AS_TEMPLATE, aArgsList ); } + else + executeEntry( rEvent.MenuId-1 ); } void SAL_CALL RecentFilesMenuController::itemActivated( const css::awt::MenuEvent& ) @@ -349,30 +349,30 @@ void SAL_CALL RecentFilesMenuController::dispatch( throwIfDisposed(); - if ( aURL.Complete.startsWith( m_aBaseURL ) ) - { - // Parse URL to retrieve entry argument and its value - sal_Int32 nQueryPart = aURL.Complete.indexOf( '?', m_aBaseURL.getLength() ); - if ( nQueryPart > 0 ) - { - const OUString aEntryArgStr( "entry=" ); - sal_Int32 nEntryArg = aURL.Complete.indexOf( aEntryArgStr, nQueryPart ); - sal_Int32 nEntryPos = nEntryArg + aEntryArgStr.getLength(); - if (( nEntryArg > 0 ) && ( nEntryPos < aURL.Complete.getLength() )) - { - sal_Int32 nAddArgs = aURL.Complete.indexOf( '&', nEntryPos ); - OUString aEntryArg; + if ( !aURL.Complete.startsWith( m_aBaseURL ) ) + return; - if ( nAddArgs < 0 ) - aEntryArg = aURL.Complete.copy( nEntryPos ); - else - aEntryArg = aURL.Complete.copy( nEntryPos, nAddArgs-nEntryPos ); + // Parse URL to retrieve entry argument and its value + sal_Int32 nQueryPart = aURL.Complete.indexOf( '?', m_aBaseURL.getLength() ); + if ( nQueryPart <= 0 ) + return; - sal_Int32 nEntry = aEntryArg.toInt32(); - executeEntry( nEntry ); - } - } - } + const OUString aEntryArgStr( "entry=" ); + sal_Int32 nEntryArg = aURL.Complete.indexOf( aEntryArgStr, nQueryPart ); + sal_Int32 nEntryPos = nEntryArg + aEntryArgStr.getLength(); + if (!(( nEntryArg > 0 ) && ( nEntryPos < aURL.Complete.getLength() ))) + return; + + sal_Int32 nAddArgs = aURL.Complete.indexOf( '&', nEntryPos ); + OUString aEntryArg; + + if ( nAddArgs < 0 ) + aEntryArg = aURL.Complete.copy( nEntryPos ); + else + aEntryArg = aURL.Complete.copy( nEntryPos, nAddArgs-nEntryPos ); + + sal_Int32 nEntry = aEntryArg.toInt32(); + executeEntry( nEntry ); } } diff --git a/framework/source/uielement/statusbarmanager.cxx b/framework/source/uielement/statusbarmanager.cxx index b20abfd2ed99..9827e2e60bab 100644 --- a/framework/source/uielement/statusbarmanager.cxx +++ b/framework/source/uielement/statusbarmanager.cxx @@ -532,20 +532,20 @@ void StatusBarManager::UserDraw( const UserDrawEvent& rUDEvt ) sal_uInt16 nId( rUDEvt.GetItemId() ); StatusBarControllerMap::const_iterator it = m_aControllerMap.find( nId ); - if (( nId > 0 ) && ( it != m_aControllerMap.end() )) - { - uno::Reference< frame::XStatusbarController > xController( it->second ); - if (xController.is() && rUDEvt.GetRenderContext()) - { - uno::Reference< awt::XGraphics > xGraphics = rUDEvt.GetRenderContext()->CreateUnoGraphics(); + if (!(( nId > 0 ) && ( it != m_aControllerMap.end() ))) + return; - awt::Rectangle aRect( rUDEvt.GetRect().Left(), - rUDEvt.GetRect().Top(), - rUDEvt.GetRect().GetWidth(), - rUDEvt.GetRect().GetHeight() ); - aGuard.clear(); - xController->paint( xGraphics, aRect, rUDEvt.GetStyle() ); - } + uno::Reference< frame::XStatusbarController > xController( it->second ); + if (xController.is() && rUDEvt.GetRenderContext()) + { + uno::Reference< awt::XGraphics > xGraphics = rUDEvt.GetRenderContext()->CreateUnoGraphics(); + + awt::Rectangle aRect( rUDEvt.GetRect().Left(), + rUDEvt.GetRect().Top(), + rUDEvt.GetRect().GetWidth(), + rUDEvt.GetRect().GetHeight() ); + aGuard.clear(); + xController->paint( xGraphics, aRect, rUDEvt.GetStyle() ); } } @@ -556,20 +556,20 @@ void StatusBarManager::Command( const CommandEvent& rEvt ) if ( m_bDisposed ) return; - if ( rEvt.GetCommand() == CommandEventId::ContextMenu ) + if ( rEvt.GetCommand() != CommandEventId::ContextMenu ) + return; + + sal_uInt16 nId = m_pStatusBar->GetItemId( rEvt.GetMousePosPixel() ); + StatusBarControllerMap::const_iterator it = m_aControllerMap.find( nId ); + if (( nId > 0 ) && ( it != m_aControllerMap.end() )) { - sal_uInt16 nId = m_pStatusBar->GetItemId( rEvt.GetMousePosPixel() ); - StatusBarControllerMap::const_iterator it = m_aControllerMap.find( nId ); - if (( nId > 0 ) && ( it != m_aControllerMap.end() )) + uno::Reference< frame::XStatusbarController > xController( it->second ); + if ( xController.is() ) { - uno::Reference< frame::XStatusbarController > xController( it->second ); - if ( xController.is() ) - { - awt::Point aPos; - aPos.X = rEvt.GetMousePosPixel().X(); - aPos.Y = rEvt.GetMousePosPixel().Y(); - xController->command( aPos, awt::Command::CONTEXTMENU, true, uno::Any() ); - } + awt::Point aPos; + aPos.X = rEvt.GetMousePosPixel().X(); + aPos.Y = rEvt.GetMousePosPixel().Y(); + xController->command( aPos, awt::Command::CONTEXTMENU, true, uno::Any() ); } } } @@ -583,23 +583,23 @@ void StatusBarManager::MouseButton( const MouseEvent& rMEvt ,sal_Bool ( SAL_CALL { SolarMutexGuard g; - if ( !m_bDisposed ) + if ( m_bDisposed ) + return; + + sal_uInt16 nId = m_pStatusBar->GetItemId( rMEvt.GetPosPixel() ); + StatusBarControllerMap::const_iterator it = m_aControllerMap.find( nId ); + if (!(( nId > 0 ) && ( it != m_aControllerMap.end() ))) + return; + + uno::Reference< frame::XStatusbarController > xController( it->second ); + if ( xController.is() ) { - sal_uInt16 nId = m_pStatusBar->GetItemId( rMEvt.GetPosPixel() ); - StatusBarControllerMap::const_iterator it = m_aControllerMap.find( nId ); - if (( nId > 0 ) && ( it != m_aControllerMap.end() )) - { - uno::Reference< frame::XStatusbarController > xController( it->second ); - if ( xController.is() ) - { - css::awt::MouseEvent aMouseEvent; - aMouseEvent.Buttons = rMEvt.GetButtons(); - aMouseEvent.X = rMEvt.GetPosPixel().X(); - aMouseEvent.Y = rMEvt.GetPosPixel().Y(); - aMouseEvent.ClickCount = rMEvt.GetClicks(); - (xController.get()->*_pMethod)( aMouseEvent); - } - } + css::awt::MouseEvent aMouseEvent; + aMouseEvent.Buttons = rMEvt.GetButtons(); + aMouseEvent.X = rMEvt.GetPosPixel().X(); + aMouseEvent.Y = rMEvt.GetPosPixel().Y(); + aMouseEvent.ClickCount = rMEvt.GetClicks(); + (xController.get()->*_pMethod)( aMouseEvent); } } diff --git a/framework/source/uielement/statusbarwrapper.cxx b/framework/source/uielement/statusbarwrapper.cxx index 02c3b458821b..f22736f796a4 100644 --- a/framework/source/uielement/statusbarwrapper.cxx +++ b/framework/source/uielement/statusbarwrapper.cxx @@ -81,44 +81,44 @@ void SAL_CALL StatusBarWrapper::initialize( const Sequence< Any >& aArguments ) if ( m_bDisposed ) throw DisposedException(); - if ( !m_bInitialized ) + if ( m_bInitialized ) + return; + + UIConfigElementWrapperBase::initialize( aArguments ); + + Reference< XFrame > xFrame( m_xWeakFrame ); + if ( !(xFrame.is() && m_xConfigSource.is()) ) + return; + + // Create VCL based toolbar which will be filled with settings data + StatusBar* pStatusBar( nullptr ); + StatusBarManager* pStatusBarManager( nullptr ); { - UIConfigElementWrapperBase::initialize( aArguments ); + SolarMutexGuard aSolarMutexGuard; + VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xFrame->getContainerWindow() ); + if ( pWindow ) + { + sal_uLong nStyles = WinBits( WB_LEFT | WB_3DLOOK ); - Reference< XFrame > xFrame( m_xWeakFrame ); - if ( xFrame.is() && m_xConfigSource.is() ) + pStatusBar = VclPtr<FrameworkStatusBar>::Create( pWindow, nStyles ); + pStatusBarManager = new StatusBarManager( m_xContext, xFrame, pStatusBar ); + static_cast<FrameworkStatusBar*>(pStatusBar)->SetStatusBarManager( pStatusBarManager ); + m_xStatusBarManager.set( static_cast< OWeakObject *>( pStatusBarManager ), UNO_QUERY ); + } + } + + try + { + m_xConfigData = m_xConfigSource->getSettings( m_aResourceURL, false ); + if ( m_xConfigData.is() && pStatusBar && pStatusBarManager ) { - // Create VCL based toolbar which will be filled with settings data - StatusBar* pStatusBar( nullptr ); - StatusBarManager* pStatusBarManager( nullptr ); - { - SolarMutexGuard aSolarMutexGuard; - VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xFrame->getContainerWindow() ); - if ( pWindow ) - { - sal_uLong nStyles = WinBits( WB_LEFT | WB_3DLOOK ); - - pStatusBar = VclPtr<FrameworkStatusBar>::Create( pWindow, nStyles ); - pStatusBarManager = new StatusBarManager( m_xContext, xFrame, pStatusBar ); - static_cast<FrameworkStatusBar*>(pStatusBar)->SetStatusBarManager( pStatusBarManager ); - m_xStatusBarManager.set( static_cast< OWeakObject *>( pStatusBarManager ), UNO_QUERY ); - } - } - - try - { - m_xConfigData = m_xConfigSource->getSettings( m_aResourceURL, false ); - if ( m_xConfigData.is() && pStatusBar && pStatusBarManager ) - { - // Fill statusbar with container contents - pStatusBarManager->FillStatusBar( m_xConfigData ); - } - } - catch ( const NoSuchElementException& ) - { - } + // Fill statusbar with container contents + pStatusBarManager->FillStatusBar( m_xConfigData ); } } + catch ( const NoSuchElementException& ) + { + } } // XUIElementSettings @@ -129,21 +129,21 @@ void SAL_CALL StatusBarWrapper::updateSettings() if ( m_bDisposed ) throw DisposedException(); - if ( m_bPersistent && + if ( !(m_bPersistent && m_xConfigSource.is() && - m_xStatusBarManager.is() ) + m_xStatusBarManager.is()) ) + return; + + try { - try - { - StatusBarManager* pStatusBarManager = static_cast< StatusBarManager *>( m_xStatusBarManager.get() ); + StatusBarManager* pStatusBarManager = static_cast< StatusBarManager *>( m_xStatusBarManager.get() ); - m_xConfigData = m_xConfigSource->getSettings( m_aResourceURL, false ); - if ( m_xConfigData.is() ) - pStatusBarManager->FillStatusBar( m_xConfigData ); - } - catch ( const NoSuchElementException& ) - { - } + m_xConfigData = m_xConfigSource->getSettings( m_aResourceURL, false ); + if ( m_xConfigData.is() ) + pStatusBarManager->FillStatusBar( m_xConfigData ); + } + catch ( const NoSuchElementException& ) + { } } diff --git a/framework/source/uielement/subtoolbarcontroller.cxx b/framework/source/uielement/subtoolbarcontroller.cxx index e36ec92ea4aa..635ebfb90770 100644 --- a/framework/source/uielement/subtoolbarcontroller.cxx +++ b/framework/source/uielement/subtoolbarcontroller.cxx @@ -136,48 +136,48 @@ void SubToolBarController::statusChanged( const css::frame::FeatureStateEvent& E ToolBox* pToolBox = nullptr; sal_uInt16 nId = 0; - if ( getToolboxId( nId, &pToolBox ) ) + if ( !getToolboxId( nId, &pToolBox ) ) + return; + + ToolBoxItemBits nItemBits = pToolBox->GetItemBits( nId ); + nItemBits &= ~ToolBoxItemBits::CHECKABLE; + TriState eTri = TRISTATE_FALSE; + + if ( Event.FeatureURL.Complete == m_aCommandURL ) { - ToolBoxItemBits nItemBits = pToolBox->GetItemBits( nId ); - nItemBits &= ~ToolBoxItemBits::CHECKABLE; - TriState eTri = TRISTATE_FALSE; + pToolBox->EnableItem( nId, Event.IsEnabled ); - if ( Event.FeatureURL.Complete == m_aCommandURL ) + OUString aStrValue; + css::frame::status::Visibility aItemVisibility; + if ( Event.State >>= aStrValue ) { - pToolBox->EnableItem( nId, Event.IsEnabled ); - - OUString aStrValue; - css::frame::status::Visibility aItemVisibility; - if ( Event.State >>= aStrValue ) + // Enum command, such as the current custom shape, + // toggle checked state. + if ( m_aLastCommand == ( m_aCommandURL + "." + aStrValue ) ) { - // Enum command, such as the current custom shape, - // toggle checked state. - if ( m_aLastCommand == ( m_aCommandURL + "." + aStrValue ) ) - { - eTri = TRISTATE_TRUE; - nItemBits |= ToolBoxItemBits::CHECKABLE; - } - } - else if ( Event.State >>= aItemVisibility ) - { - pToolBox->ShowItem( nId, aItemVisibility.bVisible ); + eTri = TRISTATE_TRUE; + nItemBits |= ToolBoxItemBits::CHECKABLE; } } - else + else if ( Event.State >>= aItemVisibility ) { - bool bValue; - if ( Event.State >>= bValue ) - { - // Boolean, treat it as checked/unchecked - if ( bValue ) - eTri = TRISTATE_TRUE; - nItemBits |= ToolBoxItemBits::CHECKABLE; - } + pToolBox->ShowItem( nId, aItemVisibility.bVisible ); } - - pToolBox->SetItemState( nId, eTri ); - pToolBox->SetItemBits( nId, nItemBits ); } + else + { + bool bValue; + if ( Event.State >>= bValue ) + { + // Boolean, treat it as checked/unchecked + if ( bValue ) + eTri = TRISTATE_TRUE; + nItemBits |= ToolBoxItemBits::CHECKABLE; + } + } + + pToolBox->SetItemState( nId, eTri ); + pToolBox->SetItemBits( nId, nItemBits ); } void SubToolBarController::execute( sal_Int16 nKeyModifier ) @@ -345,49 +345,49 @@ void SubToolBarController::endPopupMode( const css::awt::EndPopupModeEvent& e ) m_xUIElement = nullptr; // if the toolbar was teared-off recreate it and place it at the given position - if( e.bTearoff ) - { - css::uno::Reference< css::ui::XUIElement > xUIElement; - css::uno::Reference< css::frame::XLayoutManager > xLayoutManager = getLayoutManager(); + if( !e.bTearoff ) + return; - if ( !xLayoutManager.is() ) - return; + css::uno::Reference< css::ui::XUIElement > xUIElement; + css::uno::Reference< css::frame::XLayoutManager > xLayoutManager = getLayoutManager(); - xLayoutManager->createElement( aSubToolBarResName ); - xUIElement = xLayoutManager->getElement( aSubToolBarResName ); - if ( xUIElement.is() ) + if ( !xLayoutManager.is() ) + return; + + xLayoutManager->createElement( aSubToolBarResName ); + xUIElement = xLayoutManager->getElement( aSubToolBarResName ); + if ( !xUIElement.is() ) + return; + + css::uno::Reference< css::awt::XWindow > xSubToolBar( xUIElement->getRealInterface(), css::uno::UNO_QUERY ); + css::uno::Reference< css::beans::XPropertySet > xProp( xUIElement, css::uno::UNO_QUERY ); + if ( !(xSubToolBar.is() && xProp.is()) ) + return; + + OUString aPersistentString( "Persistent" ); + try + { + VclPtr<vcl::Window> pTbxWindow = VCLUnoHelper::GetWindow( xSubToolBar ); + if ( pTbxWindow && pTbxWindow->GetType() == WindowType::TOOLBOX ) { - css::uno::Reference< css::awt::XWindow > xSubToolBar( xUIElement->getRealInterface(), css::uno::UNO_QUERY ); - css::uno::Reference< css::beans::XPropertySet > xProp( xUIElement, css::uno::UNO_QUERY ); - if ( xSubToolBar.is() && xProp.is() ) - { - OUString aPersistentString( "Persistent" ); - try - { - VclPtr<vcl::Window> pTbxWindow = VCLUnoHelper::GetWindow( xSubToolBar ); - if ( pTbxWindow && pTbxWindow->GetType() == WindowType::TOOLBOX ) - { - css::uno::Any a = xProp->getPropertyValue( aPersistentString ); - xProp->setPropertyValue( aPersistentString, css::uno::makeAny( false ) ); + css::uno::Any a = xProp->getPropertyValue( aPersistentString ); + xProp->setPropertyValue( aPersistentString, css::uno::makeAny( false ) ); - xLayoutManager->hideElement( aSubToolBarResName ); - xLayoutManager->floatWindow( aSubToolBarResName ); + xLayoutManager->hideElement( aSubToolBarResName ); + xLayoutManager->floatWindow( aSubToolBarResName ); - xLayoutManager->setElementPos( aSubToolBarResName, e.FloatingPosition ); - xLayoutManager->showElement( aSubToolBarResName ); + xLayoutManager->setElementPos( aSubToolBarResName, e.FloatingPosition ); + xLayoutManager->showElement( aSubToolBarResName ); - xProp->setPropertyValue("Persistent", a ); - } - } - catch ( css::uno::RuntimeException& ) - { - throw; - } - catch ( css::uno::Exception& ) - {} - } + xProp->setPropertyValue("Persistent", a ); } } + catch ( css::uno::RuntimeException& ) + { + throw; + } + catch ( css::uno::Exception& ) + {} } void SubToolBarController::disposing( const css::lang::EventObject& e ) diff --git a/framework/source/uielement/thesaurusmenucontroller.cxx b/framework/source/uielement/thesaurusmenucontroller.cxx index 8cc84c1bdf3b..492da8593ac2 100644 --- a/framework/source/uielement/thesaurusmenucontroller.cxx +++ b/framework/source/uielement/thesaurusmenucontroller.cxx @@ -84,61 +84,61 @@ void ThesaurusMenuController::fillPopupMenu() VCLXMenu* pAwtMenu = comphelper::getUnoTunnelImplementation<VCLXMenu>( m_xPopupMenu ); Menu* pVCLMenu = pAwtMenu->GetMenu(); pVCLMenu->SetMenuFlags( MenuFlags::NoAutoMnemonics ); - if ( !aSynonyms.empty() ) - { - SvtLinguConfig aCfg; - Image aImage; - OUString aThesImplName( getThesImplName( aLocale ) ); - OUString aSynonymsImageUrl( aCfg.GetSynonymsContextImage( aThesImplName ) ); - if ( !aThesImplName.isEmpty() && !aSynonymsImageUrl.isEmpty() ) - aImage = Image( aSynonymsImageUrl ); - - sal_uInt16 nId = 1; - for ( const auto& aSynonym : aSynonyms ) - { - OUString aItemText( linguistic::GetThesaurusReplaceText( aSynonym ) ); - pVCLMenu->InsertItem( nId, aItemText ); - pVCLMenu->SetItemCommand( nId, ".uno:ThesaurusFromContext?WordReplace:string=" + aItemText ); + if ( aSynonyms.empty() ) + return; - if ( !aSynonymsImageUrl.isEmpty() ) - pVCLMenu->SetItemImage( nId, aImage ); - nId++; - } + SvtLinguConfig aCfg; + Image aImage; + OUString aThesImplName( getThesImplName( aLocale ) ); + OUString aSynonymsImageUrl( aCfg.GetSynonymsContextImage( aThesImplName ) ); + if ( !aThesImplName.isEmpty() && !aSynonymsImageUrl.isEmpty() ) + aImage = Image( aSynonymsImageUrl ); - pVCLMenu->InsertSeparator(); - OUString aThesaurusDialogCmd( ".uno:ThesaurusDialog" ); - auto aProperties = vcl::CommandInfoProvider::GetCommandProperties(aThesaurusDialogCmd, m_aModuleName); - pVCLMenu->InsertItem( nId, vcl::CommandInfoProvider::GetPopupLabelForCommand(aProperties) ); - pVCLMenu->SetItemCommand( nId, aThesaurusDialogCmd ); + sal_uInt16 nId = 1; + for ( const auto& aSynonym : aSynonyms ) + { + OUString aItemText( linguistic::GetThesaurusReplaceText( aSynonym ) ); + pVCLMenu->InsertItem( nId, aItemText ); + pVCLMenu->SetItemCommand( nId, ".uno:ThesaurusFromContext?WordReplace:string=" + aItemText ); + + if ( !aSynonymsImageUrl.isEmpty() ) + pVCLMenu->SetItemImage( nId, aImage ); + nId++; } + + pVCLMenu->InsertSeparator(); + OUString aThesaurusDialogCmd( ".uno:ThesaurusDialog" ); + auto aProperties = vcl::CommandInfoProvider::GetCommandProperties(aThesaurusDialogCmd, m_aModuleName); + pVCLMenu->InsertItem( nId, vcl::CommandInfoProvider::GetPopupLabelForCommand(aProperties) ); + pVCLMenu->SetItemCommand( nId, aThesaurusDialogCmd ); } void ThesaurusMenuController::getMeanings( std::vector< OUString >& rSynonyms, const OUString& rWord, const css::lang::Locale& rLocale, size_t nMaxSynonms ) { rSynonyms.clear(); - if ( m_xThesaurus.is() && m_xThesaurus->hasLocale( rLocale ) && !rWord.isEmpty() && nMaxSynonms > 0 ) + if ( !(m_xThesaurus.is() && m_xThesaurus->hasLocale( rLocale ) && !rWord.isEmpty() && nMaxSynonms > 0) ) + return; + + try { - try - { - const css::uno::Sequence< css::uno::Reference< css::linguistic2::XMeaning > > aMeaningSeq( - m_xThesaurus->queryMeanings( rWord, rLocale, css::uno::Sequence< css::beans::PropertyValue >() ) ); + const css::uno::Sequence< css::uno::Reference< css::linguistic2::XMeaning > > aMeaningSeq( + m_xThesaurus->queryMeanings( rWord, rLocale, css::uno::Sequence< css::beans::PropertyValue >() ) ); - for ( const auto& xMeaning : aMeaningSeq ) + for ( const auto& xMeaning : aMeaningSeq ) + { + const css::uno::Sequence< OUString > aSynonymSeq( xMeaning->querySynonyms() ); + for ( const auto& aSynonym : aSynonymSeq ) { - const css::uno::Sequence< OUString > aSynonymSeq( xMeaning->querySynonyms() ); - for ( const auto& aSynonym : aSynonymSeq ) - { - rSynonyms.push_back( aSynonym ); - if ( rSynonyms.size() == nMaxSynonms ) - return; - } + rSynonyms.push_back( aSynonym ); + if ( rSynonyms.size() == nMaxSynonms ) + return; } } - catch ( const css::uno::Exception& ) - { - SAL_WARN( "fwk.uielement", "Failed to get synonyms" ); - } + } + catch ( const css::uno::Exception& ) + { + SAL_WARN( "fwk.uielement", "Failed to get synonyms" ); } } diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx index d224cfc2a955..9aa20b7933e5 100644 --- a/framework/source/uielement/toolbarmanager.cxx +++ b/framework/source/uielement/toolbarmanager.cxx @@ -563,48 +563,48 @@ void ToolBarManager::impl_elementChanged(bool const isRemove, sal_Int16 nImageType = sal_Int16(); sal_Int16 nCurrentImageType = getCurrentImageType(); - if (( Event.aInfo >>= nImageType ) && + if (!(( Event.aInfo >>= nImageType ) && ( nImageType == nCurrentImageType ) && - ( Event.Element >>= xNameAccess )) - { - sal_Int16 nImageInfo( 1 ); - Reference< XInterface > xIfacDocImgMgr( m_xDocImageManager, UNO_QUERY ); - if ( xIfacDocImgMgr == Event.Source ) - nImageInfo = 0; + ( Event.Element >>= xNameAccess ))) + return; - Sequence< OUString > aSeq = xNameAccess->getElementNames(); - for ( sal_Int32 i = 0; i < aSeq.getLength(); i++ ) + sal_Int16 nImageInfo( 1 ); + Reference< XInterface > xIfacDocImgMgr( m_xDocImageManager, UNO_QUERY ); + if ( xIfacDocImgMgr == Event.Source ) + nImageInfo = 0; + + Sequence< OUString > aSeq = xNameAccess->getElementNames(); + for ( sal_Int32 i = 0; i < aSeq.getLength(); i++ ) + { + CommandToInfoMap::iterator pIter = m_aCommandMap.find( aSeq[i] ); + if ( pIter != m_aCommandMap.end() && ( pIter->second.nImageInfo >= nImageInfo )) { - CommandToInfoMap::iterator pIter = m_aCommandMap.find( aSeq[i] ); - if ( pIter != m_aCommandMap.end() && ( pIter->second.nImageInfo >= nImageInfo )) + if (isRemove) { - if (isRemove) + Image aImage; + if (( pIter->second.nImageInfo == 0 ) && ( pIter->second.nImageInfo == nImageInfo )) { - Image aImage; - if (( pIter->second.nImageInfo == 0 ) && ( pIter->second.nImageInfo == nImageInfo )) - { - // Special case: An image from the document image manager has been removed. - // It is possible that we have an image at our module image manager. Before - // we can remove our image we have to ask our module image manager. - Sequence< OUString > aCmdURLSeq( 1 ); - Sequence< Reference< XGraphic > > aGraphicSeq; - aCmdURLSeq[0] = pIter->first; - aGraphicSeq = m_xModuleImageManager->getImages( nImageType, aCmdURLSeq ); - aImage = Image( aGraphicSeq[0] ); - } + // Special case: An image from the document image manager has been removed. + // It is possible that we have an image at our module image manager. Before + // we can remove our image we have to ask our module image manager. + Sequence< OUString > aCmdURLSeq( 1 ); + Sequence< Reference< XGraphic > > aGraphicSeq; + aCmdURLSeq[0] = pIter->first; + aGraphicSeq = m_xModuleImageManager->getImages( nImageType, aCmdURLSeq ); + aImage = Image( aGraphicSeq[0] ); + } - setToolBarImage(aImage,pIter); - } // if (isRemove) - else + setToolBarImage(aImage,pIter); + } // if (isRemove) + else + { + Reference< XGraphic > xGraphic; + if ( xNameAccess->getByName( aSeq[i] ) >>= xGraphic ) { - Reference< XGraphic > xGraphic; - if ( xNameAccess->getByName( aSeq[i] ) >>= xGraphic ) - { - Image aImage( xGraphic ); - setToolBarImage(aImage,pIter); - } - pIter->second.nImageInfo = nImageInfo; + Image aImage( xGraphic ); + setToolBarImage(aImage,pIter); } + pIter->second.nImageInfo = nImageInfo; } } } @@ -1155,18 +1155,18 @@ void ToolBarManager::FillToolbar( const Reference< XIndexAccess >& rItemContaine // Try to retrieve UIName from the container property set and set it as the title // if it is not empty. Reference< XPropertySet > xPropSet( rItemContainer, UNO_QUERY ); - if ( xPropSet.is() ) + if ( !xPropSet.is() ) + return; + + try + { + OUString aUIName; + xPropSet->getPropertyValue("UIName") >>= aUIName; + if ( !aUIName.isEmpty() ) + m_pToolBar->SetText( aUIName ); + } + catch (const Exception&) { - try - { - OUString aUIName; - xPropSet->getPropertyValue("UIName") >>= aUIName; - if ( !aUIName.isEmpty() ) - m_pToolBar->SetText( aUIName ); - } - catch (const Exception&) - { - } } } @@ -1280,37 +1280,37 @@ void ToolBarManager::RequestImages() void ToolBarManager::notifyRegisteredControllers( const OUString& aUIElementName, const OUString& aCommand ) { SolarMutexClearableGuard aGuard; - if ( !m_aSubToolBarControllerMap.empty() ) - { - SubToolBarToSubToolBarControllerMap::const_iterator pIter = - m_aSubToolBarControllerMap.find( aUIElementName ); + if ( m_aSubToolBarControllerMap.empty() ) + return; - if ( pIter != m_aSubToolBarControllerMap.end() ) - { - const SubToolBarControllerVector& rSubToolBarVector = pIter->second; - if ( !rSubToolBarVector.empty() ) - { - SubToolBarControllerVector aNotifyVector = rSubToolBarVector; - aGuard.clear(); + SubToolBarToSubToolBarControllerMap::const_iterator pIter = + m_aSubToolBarControllerMap.find( aUIElementName ); - const sal_uInt32 nCount = aNotifyVector.size(); - for ( sal_uInt32 i=0; i < nCount; i++ ) - { - try - { - Reference< XSubToolbarController > xController = aNotifyVector[i]; - if ( xController.is() ) - xController->functionSelected( aCommand ); - } - catch (const RuntimeException&) - { - throw; - } - catch (const Exception&) - { - } - } - } + if ( pIter == m_aSubToolBarControllerMap.end() ) + return; + + const SubToolBarControllerVector& rSubToolBarVector = pIter->second; + if ( rSubToolBarVector.empty() ) + return; + + SubToolBarControllerVector aNotifyVector = rSubToolBarVector; + aGuard.clear(); + + const sal_uInt32 nCount = aNotifyVector.size(); + for ( sal_uInt32 i=0; i < nCount; i++ ) + { + try + { + Reference< XSubToolbarController > xController = aNotifyVector[i]; + if ( xController.is() ) + xController->functionSelected( aCommand ); + } + catch (const RuntimeException&) + { + throw; + } + catch (const Exception&) + { } } } diff --git a/framework/source/uielement/toolbarmodemenucontroller.cxx b/framework/source/uielement/toolbarmodemenucontroller.cxx index 15596a091335..2cc438ebb9e9 100644 --- a/framework/source/uielement/toolbarmodemenucontroller.cxx +++ b/framework/source/uielement/toolbarmodemenucontroller.cxx @@ -168,43 +168,43 @@ void SAL_CALL ToolbarModeMenuController::statusChanged( const FeatureStateEvent& Reference< css::awt::XPopupMenu > xPopupMenu( m_xPopupMenu ); aLock.clear(); - if ( xPopupMenu.is() ) - { - SolarMutexGuard aGuard; - VCLXPopupMenu* pXPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getUnoTunnelImplementation<VCLXMenu>( xPopupMenu )); - PopupMenu* pVCLPopupMenu = pXPopupMenu ? static_cast<PopupMenu *>(pXPopupMenu->GetMenu()) : nullptr; + if ( !xPopupMenu.is() ) + return; - SAL_WARN_IF(!pVCLPopupMenu, "fwk.uielement", "worrying lack of popup menu"); - if (!pVCLPopupMenu) - return; + SolarMutexGuard aGuard; + VCLXPopupMenu* pXPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getUnoTunnelImplementation<VCLXMenu>( xPopupMenu )); + PopupMenu* pVCLPopupMenu = pXPopupMenu ? static_cast<PopupMenu *>(pXPopupMenu->GetMenu()) : nullptr; + + SAL_WARN_IF(!pVCLPopupMenu, "fwk.uielement", "worrying lack of popup menu"); + if (!pVCLPopupMenu) + return; + + bool bSetCheckmark = false; + bool bCheckmark = false; + for ( sal_uInt16 i = 0; i < pVCLPopupMenu->GetItemCount(); i++ ) + { + sal_uInt16 nId = pVCLPopupMenu->GetItemId( i ); + if ( nId == 0 ) + continue; - bool bSetCheckmark = false; - bool bCheckmark = false; - for ( sal_uInt16 i = 0; i < pVCLPopupMenu->GetItemCount(); i++ ) + OUString aCmd = pVCLPopupMenu->GetItemCommand( nId ); + if ( aCmd == aFeatureURL ) { - sal_uInt16 nId = pVCLPopupMenu->GetItemId( i ); - if ( nId == 0 ) - continue; + // Enable/disable item + pVCLPopupMenu->EnableItem( nId, Event.IsEnabled ); - OUString aCmd = pVCLPopupMenu->GetItemCommand( nId ); - if ( aCmd == aFeatureURL ) + // Checkmark + if ( Event.State >>= bCheckmark ) + bSetCheckmark = true; + + if ( bSetCheckmark ) + pVCLPopupMenu->CheckItem( nId, bCheckmark ); + else { - // Enable/disable item - pVCLPopupMenu->EnableItem( nId, Event.IsEnabled ); - - // Checkmark - if ( Event.State >>= bCheckmark ) - bSetCheckmark = true; - - if ( bSetCheckmark ) - pVCLPopupMenu->CheckItem( nId, bCheckmark ); - else - { - OUString aItemText; - - if ( Event.State >>= aItemText ) - pVCLPopupMenu->SetItemText( nId, aItemText ); - } + OUString aItemText; + + if ( Event.State >>= aItemText ) + pVCLPopupMenu->SetItemText( nId, aItemText ); } } } @@ -224,54 +224,54 @@ void SAL_CALL ToolbarModeMenuController::itemSelected( const css::awt::MenuEvent xFrame = m_xFrame; } - if ( xPopupMenu.is() ) - { - VCLXPopupMenu* pPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getUnoTunnelImplementation<VCLXMenu>( xPopupMenu )); - if ( pPopupMenu ) - { - SolarMutexGuard aSolarMutexGuard; - PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); - OUString aCmd( pVCLPopupMenu->GetItemCommand( rEvent.MenuId )); + if ( !xPopupMenu.is() ) + return; - { - URL aTargetURL; - Sequence<PropertyValue> aArgs; - - aTargetURL.Complete = ".uno:Notebookbar?File:string=" + aCmd; - xURLTransformer->parseStrict( aTargetURL ); - Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY ); - if ( xDispatchProvider.is() ) - { - Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch( - aTargetURL, OUString(), 0 ); - - ExecuteInfo* pExecuteInfo = new ExecuteInfo; - pExecuteInfo->xDispatch = xDispatch; - pExecuteInfo->aTargetURL = aTargetURL; - pExecuteInfo->aArgs = aArgs; - Application::PostUserEvent( LINK(nullptr,ToolbarModeMenuController, ExecuteHdl_Impl), pExecuteInfo ); - } - } + VCLXPopupMenu* pPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getUnoTunnelImplementation<VCLXMenu>( xPopupMenu )); + if ( !pPopupMenu ) + return; - URL aTargetURL; - Sequence<PropertyValue> aArgs; + SolarMutexGuard aSolarMutexGuard; + PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); + OUString aCmd( pVCLPopupMenu->GetItemCommand( rEvent.MenuId )); - aTargetURL.Complete = ".uno:ToolbarMode?Mode:string=" + aCmd; - xURLTransformer->parseStrict( aTargetURL ); - Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY ); - if ( xDispatchProvider.is() ) - { - Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch( - aTargetURL, OUString(), 0 ); - - ExecuteInfo* pExecuteInfo = new ExecuteInfo; - pExecuteInfo->xDispatch = xDispatch; - pExecuteInfo->aTargetURL = aTargetURL; - pExecuteInfo->aArgs = aArgs; - Application::PostUserEvent( LINK(nullptr, ToolbarModeMenuController, ExecuteHdl_Impl), pExecuteInfo ); - } + { + URL aTargetURL; + Sequence<PropertyValue> aArgs; + + aTargetURL.Complete = ".uno:Notebookbar?File:string=" + aCmd; + xURLTransformer->parseStrict( aTargetURL ); + Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY ); + if ( xDispatchProvider.is() ) + { + Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch( + aTargetURL, OUString(), 0 ); + + ExecuteInfo* pExecuteInfo = new ExecuteInfo; + pExecuteInfo->xDispatch = xDispatch; + pExecuteInfo->aTargetURL = aTargetURL; + pExecuteInfo->aArgs = aArgs; + Application::PostUserEvent( LINK(nullptr,ToolbarModeMenuController, ExecuteHdl_Impl), pExecuteInfo ); } } + + URL aTargetURL; + Sequence<PropertyValue> aArgs; + + aTargetURL.Complete = ".uno:ToolbarMode?Mode:string=" + aCmd; + xURLTransformer->parseStrict( aTargetURL ); + Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY ); + if ( xDispatchProvider.is() ) + { + Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch( + aTargetURL, OUString(), 0 ); + + ExecuteInfo* pExecuteInfo = new ExecuteInfo; + pExecuteInfo->xDispatch = xDispatch; + pExecuteInfo->aTargetURL = aTargetURL; + pExecuteInfo->aArgs = aArgs; + Application::PostUserEvent( LINK(nullptr, ToolbarModeMenuController, ExecuteHdl_Impl), pExecuteInfo ); + } } void SAL_CALL ToolbarModeMenuController::itemActivated( const css::awt::MenuEvent& ) diff --git a/framework/source/uielement/toolbarsmenucontroller.cxx b/framework/source/uielement/toolbarsmenucontroller.cxx index 3640f11f8e7e..d8febf95b4bf 100644 --- a/framework/source/uielement/toolbarsmenucontroller.cxx +++ b/framework/source/uielement/toolbarsmenucontroller.cxx @@ -303,157 +303,157 @@ void ToolbarsMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu > co Reference< XLayoutManager > xLayoutManager( getLayoutManagerFromFrame( m_xFrame )); m_bResetActive = false; - if ( xLayoutManager.is() ) - { - ToolbarHashMap aToolbarHashMap; + if ( !xLayoutManager.is() ) + return; - if ( m_xDocCfgMgr.is() ) - { - Sequence< Sequence< css::beans::PropertyValue > > aSeqDocToolBars = - m_xDocCfgMgr->getUIElementsInfo( UIElementType::TOOLBAR ); - fillHashMap( aSeqDocToolBars, aToolbarHashMap ); - } + ToolbarHashMap aToolbarHashMap; - if ( m_xModuleCfgMgr.is() ) - { - Sequence< Sequence< css::beans::PropertyValue > > aSeqToolBars = - m_xModuleCfgMgr->getUIElementsInfo( UIElementType::TOOLBAR ); - fillHashMap( aSeqToolBars, aToolbarHashMap ); - } + if ( m_xDocCfgMgr.is() ) + { + Sequence< Sequence< css::beans::PropertyValue > > aSeqDocToolBars = + m_xDocCfgMgr->getUIElementsInfo( UIElementType::TOOLBAR ); + fillHashMap( aSeqDocToolBars, aToolbarHashMap ); + } + + if ( m_xModuleCfgMgr.is() ) + { + Sequence< Sequence< css::beans::PropertyValue > > aSeqToolBars = + m_xModuleCfgMgr->getUIElementsInfo( UIElementType::TOOLBAR ); + fillHashMap( aSeqToolBars, aToolbarHashMap ); + } - std::vector< ToolBarEntry > aSortedTbs; - OUString aStaticCmdPart( STATIC_CMD_PART ); + std::vector< ToolBarEntry > aSortedTbs; + OUString aStaticCmdPart( STATIC_CMD_PART ); - Sequence< Sequence< css::beans::PropertyValue > > aSeqFrameToolBars = getLayoutManagerToolbars( xLayoutManager ); - fillHashMap( aSeqFrameToolBars, aToolbarHashMap ); + Sequence< Sequence< css::beans::PropertyValue > > aSeqFrameToolBars = getLayoutManagerToolbars( xLayoutManager ); + fillHashMap( aSeqFrameToolBars, aToolbarHashMap ); - for (auto const& toolbar : aToolbarHashMap) + for (auto const& toolbar : aToolbarHashMap) + { + OUString aUIName = toolbar.second; + bool bHideFromMenu( false ); + bool bContextSensitive( false ); + if ( aUIName.isEmpty() && + m_xPersistentWindowState.is() ) { - OUString aUIName = toolbar.second; - bool bHideFromMenu( false ); - bool bContextSensitive( false ); - if ( aUIName.isEmpty() && - m_xPersistentWindowState.is() ) + bool bVisible( false ); + + try { - bool bVisible( false ); + Sequence< PropertyValue > aWindowState; + Any a( m_xPersistentWindowState->getByName( toolbar.first )); - try + if ( a >>= aWindowState ) { - Sequence< PropertyValue > aWindowState; - Any a( m_xPersistentWindowState->getByName( toolbar.first )); - - if ( a >>= aWindowState ) + for ( sal_Int32 i = 0; i < aWindowState.getLength(); i++ ) { - for ( sal_Int32 i = 0; i < aWindowState.getLength(); i++ ) - { - if ( aWindowState[i].Name == WINDOWSTATE_PROPERTY_UINAME ) - aWindowState[i].Value >>= aUIName; - else if ( aWindowState[i].Name == WINDOWSTATE_PROPERTY_HIDEFROMENU ) - aWindowState[i].Value >>= bHideFromMenu; - else if ( aWindowState[i].Name == WINDOWSTATE_PROPERTY_CONTEXT ) - aWindowState[i].Value >>= bContextSensitive; - else if ( aWindowState[i].Name == WINDOWSTATE_PROPERTY_VISIBLE ) - aWindowState[i].Value >>= bVisible; - } + if ( aWindowState[i].Name == WINDOWSTATE_PROPERTY_UINAME ) + aWindowState[i].Value >>= aUIName; + else if ( aWindowState[i].Name == WINDOWSTATE_PROPERTY_HIDEFROMENU ) + aWindowState[i].Value >>= bHideFromMenu; + else if ( aWindowState[i].Name == WINDOWSTATE_PROPERTY_CONTEXT ) + aWindowState[i].Value >>= bContextSensitive; + else if ( aWindowState[i].Name == WINDOWSTATE_PROPERTY_VISIBLE ) + aWindowState[i].Value >>= bVisible; } } - catch ( const Exception& ) - { - } - - // Check if we have to enable/disable "Reset" menu item - if ( bContextSensitive && !bVisible ) - m_bResetActive = true; - } - - if ( !aUIName.isEmpty() && !bHideFromMenu ) + catch ( const Exception& ) { - ToolBarEntry aTbEntry; - aTbEntry.aUIName = aUIName; - aTbEntry.aCommand = toolbar.first; - aTbEntry.bVisible = xLayoutManager->isElementVisible( toolbar.first ); - aTbEntry.bContextSensitive = bContextSensitive; - aTbEntry.pCollatorWrapper = m_aIntlWrapper.getCaseCollator(); - aSortedTbs.push_back( aTbEntry ); } + + // Check if we have to enable/disable "Reset" menu item + if ( bContextSensitive && !bVisible ) + m_bResetActive = true; + } - // sort toolbars - std::sort( aSortedTbs.begin(), aSortedTbs.end(), CompareToolBarEntry ); + if ( !aUIName.isEmpty() && !bHideFromMenu ) + { + ToolBarEntry aTbEntry; + aTbEntry.aUIName = aUIName; + aTbEntry.aCommand = toolbar.first; + aTbEntry.bVisible = xLayoutManager->isElementVisible( toolbar.first ); + aTbEntry.bContextSensitive = bContextSensitive; + aTbEntry.pCollatorWrapper = m_aIntlWrapper.getCaseCollator(); + aSortedTbs.push_back( aTbEntry ); + } + } + + // sort toolbars + std::sort( aSortedTbs.begin(), aSortedTbs.end(), CompareToolBarEntry ); + + sal_Int16 nIndex( 1 ); + const sal_uInt32 nCount = aSortedTbs.size(); + for ( sal_uInt32 i = 0; i < nCount; i++ ) + { + sal_uInt16 nItemCount = m_xPopupMenu->getItemCount(); + m_xPopupMenu->insertItem( nIndex, aSortedTbs[i].aUIName, css::awt::MenuItemStyle::CHECKABLE, nItemCount ); + if ( aSortedTbs[i].bVisible ) + m_xPopupMenu->checkItem( nIndex, true ); - sal_Int16 nIndex( 1 ); - const sal_uInt32 nCount = aSortedTbs.size(); - for ( sal_uInt32 i = 0; i < nCount; i++ ) { - sal_uInt16 nItemCount = m_xPopupMenu->getItemCount(); - m_xPopupMenu->insertItem( nIndex, aSortedTbs[i].aUIName, css::awt::MenuItemStyle::CHECKABLE, nItemCount ); - if ( aSortedTbs[i].bVisible ) - m_xPopupMenu->checkItem( nIndex, true ); + SolarMutexGuard aGuard; + VCLXPopupMenu* pXPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getUnoTunnelImplementation<VCLXMenu>( m_xPopupMenu )); + PopupMenu* pVCLPopupMenu = pXPopupMenu ? static_cast<PopupMenu *>(pXPopupMenu->GetMenu()) : nullptr; + assert(pVCLPopupMenu); + if (pVCLPopupMenu) + pVCLPopupMenu->SetUserValue( nIndex, reinterpret_cast<void*>( aSortedTbs[i].bContextSensitive ? 1 : 0 )); + } - { - SolarMutexGuard aGuard; - VCLXPopupMenu* pXPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getUnoTunnelImplementation<VCLXMenu>( m_xPopupMenu )); - PopupMenu* pVCLPopupMenu = pXPopupMenu ? static_cast<PopupMenu *>(pXPopupMenu->GetMenu()) : nullptr; - assert(pVCLPopupMenu); - if (pVCLPopupMenu) - pVCLPopupMenu->SetUserValue( nIndex, reinterpret_cast<void*>( aSortedTbs[i].bContextSensitive ? 1 : 0 )); - } + // use VCL popup menu pointer to set vital information that are not part of the awt implementation + OUStringBuffer aStrBuf( aStaticCmdPart ); - // use VCL popup menu pointer to set vital information that are not part of the awt implementation - OUStringBuffer aStrBuf( aStaticCmdPart ); + sal_Int32 n = aSortedTbs[i].aCommand.lastIndexOf( '/' ); + if (( n > 0 ) && (( n+1 ) < aSortedTbs[i].aCommand.getLength() )) + aStrBuf.append( std::u16string_view(aSortedTbs[i].aCommand).substr(n+1) ); - sal_Int32 n = aSortedTbs[i].aCommand.lastIndexOf( '/' ); - if (( n > 0 ) && (( n+1 ) < aSortedTbs[i].aCommand.getLength() )) - aStrBuf.append( std::u16string_view(aSortedTbs[i].aCommand).substr(n+1) ); + OUString aCmd( aStrBuf.makeStringAndClear() ); - OUString aCmd( aStrBuf.makeStringAndClear() ); + // Store complete uno-command so it can also be dispatched. This is necessary to support + // the test tool! + rPopupMenu->setCommand( nIndex, aCmd ); + ++nIndex; + } - // Store complete uno-command so it can also be dispatched. This is necessary to support - // the test tool! - rPopupMenu->setCommand( nIndex, aCmd ); - ++nIndex; - } + // Create commands for non-toolbars - // Create commands for non-toolbars - - bool bAddCommand( true ); - SvtCommandOptions aCmdOptions; + bool bAddCommand( true ); + SvtCommandOptions aCmdOptions; - if ( aCmdOptions.HasEntries( SvtCommandOptions::CMDOPTION_DISABLED )) - { - if ( aCmdOptions.Lookup( SvtCommandOptions::CMDOPTION_DISABLED, - "ConfigureDialog")) - bAddCommand = false; - } + if ( aCmdOptions.HasEntries( SvtCommandOptions::CMDOPTION_DISABLED )) + { + if ( aCmdOptions.Lookup( SvtCommandOptions::CMDOPTION_DISABLED, + "ConfigureDialog")) + bAddCommand = false; + } - if ( bAddCommand ) + if ( bAddCommand ) + { + // Create command for configure + if ( m_xPopupMenu->getItemCount() > 0 ) { - // Create command for configure - if ( m_xPopupMenu->getItemCount() > 0 ) - { - sal_uInt16 nItemCount = m_xPopupMenu->getItemCount(); - m_xPopupMenu->insertSeparator( nItemCount+1 ); - } - - addCommand( m_xPopupMenu, ".uno:ConfigureDialog", "" ); + sal_uInt16 nItemCount = m_xPopupMenu->getItemCount(); + m_xPopupMenu->insertSeparator( nItemCount+1 ); } - // Add separator if no configure has been added - if ( !bAddCommand ) + addCommand( m_xPopupMenu, ".uno:ConfigureDialog", "" ); + } + + // Add separator if no configure has been added + if ( !bAddCommand ) + { + // Create command for configure + if ( m_xPopupMenu->getItemCount() > 0 ) { - // Create command for configure - if ( m_xPopupMenu->getItemCount() > 0 ) - { - sal_uInt16 nItemCount = m_xPopupMenu->getItemCount(); - m_xPopupMenu->insertSeparator( nItemCount+1 ); - } + sal_uInt16 nItemCount = m_xPopupMenu->getItemCount(); + m_xPopupMenu->insertSeparator( nItemCount+1 ); } - - OUString aLabelStr(FwkResId(STR_RESTORE_TOOLBARS)); - OUString aRestoreCmd( CMD_RESTOREVISIBILITY ); - addCommand( m_xPopupMenu, aRestoreCmd, aLabelStr ); } + + OUString aLabelStr(FwkResId(STR_RESTORE_TOOLBARS)); + OUString aRestoreCmd( CMD_RESTOREVISIBILITY ); + addCommand( m_xPopupMenu, aRestoreCmd, aLabelStr ); } // XEventListener @@ -483,43 +483,43 @@ void SAL_CALL ToolbarsMenuController::statusChanged( const FeatureStateEvent& Ev Reference< css::awt::XPopupMenu > xPopupMenu( m_xPopupMenu ); aLock.clear(); - if ( xPopupMenu.is() ) - { - SolarMutexGuard aGuard; - VCLXPopupMenu* pXPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getUnoTunnelImplementation<VCLXMenu>( xPopupMenu )); - PopupMenu* pVCLPopupMenu = pXPopupMenu ? static_cast<PopupMenu *>(pXPopupMenu->GetMenu()) : nullptr; + if ( !xPopupMenu.is() ) + return; - SAL_WARN_IF(!pVCLPopupMenu, "fwk.uielement", "worrying lack of popup menu"); - if (!pVCLPopupMenu) - return; + SolarMutexGuard aGuard; + VCLXPopupMenu* pXPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getUnoTunnelImplementation<VCLXMenu>( xPopupMenu )); + PopupMenu* pVCLPopupMenu = pXPopupMenu ? static_cast<PopupMenu *>(pXPopupMenu->GetMenu()) : nullptr; - bool bSetCheckmark = false; - bool bCheckmark = false; - for ( sal_uInt16 i = 0; i < pVCLPopupMenu->GetItemCount(); i++ ) - { - sal_uInt16 nId = pVCLPopupMenu->GetItemId( i ); - if ( nId == 0 ) - continue; + SAL_WARN_IF(!pVCLPopupMenu, "fwk.uielement", "worrying lack of popup menu"); + if (!pVCLPopupMenu) + return; - OUString aCmd = pVCLPopupMenu->GetItemCommand( nId ); - if ( aCmd == aFeatureURL ) - { - // Enable/disable item - pVCLPopupMenu->EnableItem( nId, Event.IsEnabled ); + bool bSetCheckmark = false; + bool bCheckmark = false; + for ( sal_uInt16 i = 0; i < pVCLPopupMenu->GetItemCount(); i++ ) + { + sal_uInt16 nId = pVCLPopupMenu->GetItemId( i ); + if ( nId == 0 ) + continue; - // Checkmark - if ( Event.State >>= bCheckmark ) - bSetCheckmark = true; + OUString aCmd = pVCLPopupMenu->GetItemCommand( nId ); + if ( aCmd == aFeatureURL ) + { + // Enable/disable item + pVCLPopupMenu->EnableItem( nId, Event.IsEnabled ); - if ( bSetCheckmark ) - pVCLPopupMenu->CheckItem( nId, bCheckmark ); - else - { - OUString aItemText; + // Checkmark + if ( Event.State >>= bCheckmark ) + bSetCheckmark = true; - if ( Event.State >>= aItemText ) - pVCLPopupMenu->SetItemText( nId, aItemText ); - } + if ( bSetCheckmark ) + pVCLPopupMenu->CheckItem( nId, bCheckmark ); + else + { + OUString aItemText; + + if ( Event.State >>= aItemText ) + pVCLPopupMenu->SetItemText( nId, aItemText ); } } } @@ -543,143 +543,143 @@ void SAL_CALL ToolbarsMenuController::itemSelected( const css::awt::MenuEvent& r xPersistentWindowState = m_xPersistentWindowState; } - if ( xPopupMenu.is() ) + if ( !xPopupMenu.is() ) + return; + + VCLXPopupMenu* pPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getUnoTunnelImplementation<VCLXMenu>( xPopupMenu )); + if ( !pPopupMenu ) + return; + + SolarMutexGuard aSolarMutexGuard; + PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); + + OUString aCmd( pVCLPopupMenu->GetItemCommand( rEvent.MenuId )); + if ( aCmd.startsWith( STATIC_INTERNAL_CMD_PART ) ) { - VCLXPopupMenu* pPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getUnoTunnelImplementation<VCLXMenu>( xPopupMenu )); - if ( pPopupMenu ) + // Command to restore the visibility of all context sensitive toolbars + Reference< XNameReplace > xNameReplace( xPersistentWindowState, UNO_QUERY ); + if ( xPersistentWindowState.is() && xNameReplace.is() ) { - SolarMutexGuard aSolarMutexGuard; - PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); - - OUString aCmd( pVCLPopupMenu->GetItemCommand( rEvent.MenuId )); - if ( aCmd.startsWith( STATIC_INTERNAL_CMD_PART ) ) + try { - // Command to restore the visibility of all context sensitive toolbars - Reference< XNameReplace > xNameReplace( xPersistentWindowState, UNO_QUERY ); - if ( xPersistentWindowState.is() && xNameReplace.is() ) + Sequence< OUString > aElementNames = xPersistentWindowState->getElementNames(); + sal_Int32 nCount = aElementNames.getLength(); + bool bRefreshToolbars( false ); + + for ( sal_Int32 i = 0; i < nCount; i++ ) { try { - Sequence< OUString > aElementNames = xPersistentWindowState->getElementNames(); - sal_Int32 nCount = aElementNames.getLength(); - bool bRefreshToolbars( false ); + OUString aElementName = aElementNames[i]; + Sequence< PropertyValue > aWindowState; - for ( sal_Int32 i = 0; i < nCount; i++ ) + if ( xPersistentWindowState->getByName( aElementName ) >>= aWindowState ) { - try + bool bVisible( false ); + bool bContextSensitive( false ); + sal_Int32 nVisibleIndex( -1 ); + for ( sal_Int32 j = 0; j < aWindowState.getLength(); j++ ) { - OUString aElementName = aElementNames[i]; - Sequence< PropertyValue > aWindowState; - - if ( xPersistentWindowState->getByName( aElementName ) >>= aWindowState ) + if ( aWindowState[j].Name == WINDOWSTATE_PROPERTY_VISIBLE ) { - bool bVisible( false ); - bool bContextSensitive( false ); - sal_Int32 nVisibleIndex( -1 ); - for ( sal_Int32 j = 0; j < aWindowState.getLength(); j++ ) - { - if ( aWindowState[j].Name == WINDOWSTATE_PROPERTY_VISIBLE ) - { - aWindowState[j].Value >>= bVisible; - nVisibleIndex = j; - } - else if ( aWindowState[j].Name == WINDOWSTATE_PROPERTY_CONTEXT ) - aWindowState[j].Value >>= bContextSensitive; - } - - if ( !bVisible && bContextSensitive && nVisibleIndex >= 0 ) - { - // Default is: Every context sensitive toolbar is visible - aWindowState[nVisibleIndex].Value <<= true; - xNameReplace->replaceByName( aElementName, makeAny( aWindowState )); - bRefreshToolbars = true; - } + aWindowState[j].Value >>= bVisible; + nVisibleIndex = j; } + else if ( aWindowState[j].Name == WINDOWSTATE_PROPERTY_CONTEXT ) + aWindowState[j].Value >>= bContextSensitive; } - catch ( const NoSuchElementException& ) - { - } - } - if ( bRefreshToolbars ) - { - Reference< XLayoutManager > xLayoutManager( getLayoutManagerFromFrame( xFrame )); - if ( xLayoutManager.is() ) + if ( !bVisible && bContextSensitive && nVisibleIndex >= 0 ) { - Reference< XPropertySet > xPropSet( xLayoutManager, UNO_QUERY ); - if ( xPropSet.is() ) - { - try - { - xPropSet->setPropertyValue("RefreshContextToolbarVisibility", makeAny( true )); - } - catch ( const RuntimeException& ) - { - } - catch ( const Exception& ) - { - } - } + // Default is: Every context sensitive toolbar is visible + aWindowState[nVisibleIndex].Value <<= true; + xNameReplace->replaceByName( aElementName, makeAny( aWindowState )); + bRefreshToolbars = true; } - RefreshToolbars( xFrame ); } } - catch ( const RuntimeException& ) + catch ( const NoSuchElementException& ) { - throw; } - catch ( const Exception& ) + } + + if ( bRefreshToolbars ) + { + Reference< XLayoutManager > xLayoutManager( getLayoutManagerFromFrame( xFrame )); + if ( xLayoutManager.is() ) { + Reference< XPropertySet > xPropSet( xLayoutManager, UNO_QUERY ); + if ( xPropSet.is() ) + { + try + { + xPropSet->setPropertyValue("RefreshContextToolbarVisibility", makeAny( true )); + } + catch ( const RuntimeException& ) + { + } + catch ( const Exception& ) + { + } + } } + RefreshToolbars( xFrame ); } } - else if ( aCmd.indexOf( STATIC_CMD_PART ) < 0 ) + catch ( const RuntimeException& ) + { + throw; + } + catch ( const Exception& ) + { + } + } + } + else if ( aCmd.indexOf( STATIC_CMD_PART ) < 0 ) + { + URL aTargetURL; + Sequence<PropertyValue> aArgs; + + aTargetURL.Complete = aCmd; + xURLTransformer->parseStrict( aTargetURL ); + Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY ); + if ( xDispatchProvider.is() ) + { + Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch( + aTargetURL, OUString(), 0 ); + + ExecuteInfo* pExecuteInfo = new ExecuteInfo; + pExecuteInfo->xDispatch = xDispatch; + pExecuteInfo->aTargetURL = aTargetURL; + pExecuteInfo->aArgs = aArgs; + Application::PostUserEvent( LINK(nullptr, ToolbarsMenuController, ExecuteHdl_Impl), pExecuteInfo ); + } + } + else + { + Reference< XLayoutManager > xLayoutManager( getLayoutManagerFromFrame( xFrame )); + if ( xLayoutManager.is() ) + { + // Extract toolbar name from the combined uno-command. + sal_Int32 nIndex = aCmd.indexOf( '=' ); + if (( nIndex > 0 ) && (( nIndex+1 ) < aCmd.getLength() )) { - URL aTargetURL; - Sequence<PropertyValue> aArgs; + OUStringBuffer aBuf( "private:resource/toolbar/" ); + aBuf.append( std::u16string_view(aCmd).substr(nIndex+1) ); - aTargetURL.Complete = aCmd; - xURLTransformer->parseStrict( aTargetURL ); - Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY ); - if ( xDispatchProvider.is() ) + bool bShow( !pVCLPopupMenu->IsItemChecked( rEvent.MenuId )); + OUString aToolBarResName( aBuf.makeStringAndClear() ); + if ( bShow ) { - Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch( - aTargetURL, OUString(), 0 ); - - ExecuteInfo* pExecuteInfo = new ExecuteInfo; - pExecuteInfo->xDispatch = xDispatch; - pExecuteInfo->aTargetURL = aTargetURL; - pExecuteInfo->aArgs = aArgs; - Application::PostUserEvent( LINK(nullptr, ToolbarsMenuController, ExecuteHdl_Impl), pExecuteInfo ); + xLayoutManager->createElement( aToolBarResName ); + xLayoutManager->showElement( aToolBarResName ); } - } - else - { - Reference< XLayoutManager > xLayoutManager( getLayoutManagerFromFrame( xFrame )); - if ( xLayoutManager.is() ) + else { - // Extract toolbar name from the combined uno-command. - sal_Int32 nIndex = aCmd.indexOf( '=' ); - if (( nIndex > 0 ) && (( nIndex+1 ) < aCmd.getLength() )) - { - OUStringBuffer aBuf( "private:resource/toolbar/" ); - aBuf.append( std::u16string_view(aCmd).substr(nIndex+1) ); - - bool bShow( !pVCLPopupMenu->IsItemChecked( rEvent.MenuId )); - OUString aToolBarResName( aBuf.makeStringAndClear() ); - if ( bShow ) - { - xLayoutManager->createElement( aToolBarResName ); - xLayoutManager->showElement( aToolBarResName ); - } - else - { - // closing means: - // hide and destroy element - xLayoutManager->hideElement( aToolBarResName ); - xLayoutManager->destroyElement( aToolBarResName ); - } - } + // closing means: + // hide and destroy element + xLayoutManager->hideElement( aToolBarResName ); + xLayoutManager->destroyElement( aToolBarResName ); } } } @@ -749,42 +749,42 @@ void SAL_CALL ToolbarsMenuController::initialize( const Sequence< Any >& aArgume { osl::MutexGuard aLock( m_aMutex ); bool bInitalized( m_bInitialized ); - if ( !bInitalized ) - { - svt::PopupMenuControllerBase::initialize(aArguments); + if ( bInitalized ) + return; - if ( m_bInitialized ) - { - Reference< XModuleManager2 > xModuleManager = ModuleManager::create( m_xContext ); - Reference< XNameAccess > xPersistentWindowStateSupplier = css::ui::theWindowStateConfiguration::get( m_xContext ); + svt::PopupMenuControllerBase::initialize(aArguments); - // Retrieve persistent window state reference for our module - OUString aModuleIdentifier; - try - { - aModuleIdentifier = xModuleManager->identify( m_xFrame ); - xPersistentWindowStateSupplier->getByName( aModuleIdentifier ) >>= m_xPersistentWindowState; - - Reference< XModuleUIConfigurationManagerSupplier > xModuleCfgSupplier = - theModuleUIConfigurationManagerSupplier::get( m_xContext ); - m_xModuleCfgMgr = xModuleCfgSupplier->getUIConfigurationManager( aModuleIdentifier ); - - Reference< XController > xController = m_xFrame->getController(); - Reference< XModel > xModel; - if ( xController.is() ) - xModel = xController->getModel(); - if ( xModel.is() ) - { - Reference< XUIConfigurationManagerSupplier > xUIConfigurationManagerSupplier( xModel, UNO_QUERY ); - if ( xUIConfigurationManagerSupplier.is() ) - m_xDocCfgMgr = xUIConfigurationManagerSupplier->getUIConfigurationManager(); - } - } - catch ( const Exception& ) - { - } + if ( !m_bInitialized ) + return; + + Reference< XModuleManager2 > xModuleManager = ModuleManager::create( m_xContext ); + Reference< XNameAccess > xPersistentWindowStateSupplier = css::ui::theWindowStateConfiguration::get( m_xContext ); + + // Retrieve persistent window state reference for our module + OUString aModuleIdentifier; + try + { + aModuleIdentifier = xModuleManager->identify( m_xFrame ); + xPersistentWindowStateSupplier->getByName( aModuleIdentifier ) >>= m_xPersistentWindowState; + + Reference< XModuleUIConfigurationManagerSupplier > xModuleCfgSupplier = + theModuleUIConfigurationManagerSupplier::get( m_xContext ); + m_xModuleCfgMgr = xModuleCfgSupplier->getUIConfigurationManager( aModuleIdentifier ); + + Reference< XController > xController = m_xFrame->getController(); + Reference< XModel > xModel; + if ( xController.is() ) + xModel = xController->getModel(); + if ( xModel.is() ) + { + Reference< XUIConfigurationManagerSupplier > xUIConfigurationManagerSupplier( xModel, UNO_QUERY ); + if ( xUIConfigurationManagerSupplier.is() ) + m_xDocCfgMgr = xUIConfigurationManagerSupplier->getUIConfigurationManager(); } } + catch ( const Exception& ) + { + } } IMPL_STATIC_LINK( ToolbarsMenuController, ExecuteHdl_Impl, void*, p, void ) diff --git a/framework/source/uielement/toolbarwrapper.cxx b/framework/source/uielement/toolbarwrapper.cxx index fec3138dc78e..3e1706ed0b17 100644 --- a/framework/source/uielement/toolbarwrapper.cxx +++ b/framework/source/uielement/toolbarwrapper.cxx @@ -108,77 +108,77 @@ void SAL_CALL ToolBarWrapper::initialize( const Sequence< Any >& aArguments ) if ( m_bDisposed ) throw DisposedException(); - if ( !m_bInitialized ) + if ( m_bInitialized ) + return; + + UIConfigElementWrapperBase::initialize( aArguments ); + + bool bPopupMode( false ); + Reference< XWindow > xParentWindow; + for ( sal_Int32 i = 0; i < aArguments.getLength(); i++ ) { - UIConfigElementWrapperBase::initialize( aArguments ); + PropertyValue aPropValue; + if ( aArguments[i] >>= aPropValue ) + { + if ( aPropValue.Name == "PopupMode" ) + aPropValue.Value >>= bPopupMode; + else if ( aPropValue.Name == "ParentWindow" ) + xParentWindow.set( aPropValue.Value, UNO_QUERY ); + } + } + + Reference< XFrame > xFrame( m_xWeakFrame ); + if ( !(xFrame.is() && m_xConfigSource.is()) ) + return; - bool bPopupMode( false ); - Reference< XWindow > xParentWindow; - for ( sal_Int32 i = 0; i < aArguments.getLength(); i++ ) + // Create VCL based toolbar which will be filled with settings data + VclPtr<ToolBox> pToolBar; + ToolBarManager* pToolBarManager = nullptr; + { + SolarMutexGuard aSolarMutexGuard; + if ( !xParentWindow.is() ) + xParentWindow.set( xFrame->getContainerWindow() ); + VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xParentWindow ); + if ( pWindow ) { - PropertyValue aPropValue; - if ( aArguments[i] >>= aPropValue ) - { - if ( aPropValue.Name == "PopupMode" ) - aPropValue.Value >>= bPopupMode; - else if ( aPropValue.Name == "ParentWindow" ) - xParentWindow.set( aPropValue.Value, UNO_QUERY ); - } + sal_uLong nStyles = WB_BORDER | WB_SCROLL | WB_MOVEABLE | WB_3DLOOK | WB_DOCKABLE | WB_SIZEABLE | WB_CLOSEABLE; + + pToolBar = VclPtr<ToolBox>::Create( pWindow, nStyles ); + pToolBar->SetLineSpacing(true); + pToolBarManager = new ToolBarManager( m_xContext, xFrame, m_aResourceURL, pToolBar ); + m_xToolBarManager.set( static_cast< OWeakObject *>( pToolBarManager ), UNO_QUERY ); + pToolBar->WillUsePopupMode( bPopupMode ); } + } - Reference< XFrame > xFrame( m_xWeakFrame ); - if ( xFrame.is() && m_xConfigSource.is() ) + try + { + m_xConfigData = m_xConfigSource->getSettings( m_aResourceURL, false ); + if ( m_xConfigData.is() && pToolBar && pToolBarManager ) { - // Create VCL based toolbar which will be filled with settings data - VclPtr<ToolBox> pToolBar; - ToolBarManager* pToolBarManager = nullptr; - { - SolarMutexGuard aSolarMutexGuard; - if ( !xParentWindow.is() ) - xParentWindow.set( xFrame->getContainerWindow() ); - VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xParentWindow ); - if ( pWindow ) - { - sal_uLong nStyles = WB_BORDER | WB_SCROLL | WB_MOVEABLE | WB_3DLOOK | WB_DOCKABLE | WB_SIZEABLE | WB_CLOSEABLE; - - pToolBar = VclPtr<ToolBox>::Create( pWindow, nStyles ); - pToolBar->SetLineSpacing(true); - pToolBarManager = new ToolBarManager( m_xContext, xFrame, m_aResourceURL, pToolBar ); - m_xToolBarManager.set( static_cast< OWeakObject *>( pToolBarManager ), UNO_QUERY ); - pToolBar->WillUsePopupMode( bPopupMode ); - } - } - - try - { - m_xConfigData = m_xConfigSource->getSettings( m_aResourceURL, false ); - if ( m_xConfigData.is() && pToolBar && pToolBarManager ) - { - // Fill toolbar with container contents - pToolBarManager->FillToolbar( m_xConfigData ); - pToolBar->SetOutStyle( SvtMiscOptions().GetToolboxStyle() ); - pToolBar->EnableCustomize(); - ::Size aActSize( pToolBar->GetSizePixel() ); - ::Size aSize( pToolBar->CalcWindowSizePixel() ); - aSize.setWidth( aActSize.Width() ); - pToolBar->SetOutputSizePixel( aSize ); - } - } - catch ( const NoSuchElementException& ) - { - // No settings in our configuration manager. This means we are - // a transient toolbar which has no persistent settings. - m_bPersistent = false; - if ( pToolBar && pToolBarManager ) - { - pToolBar->SetOutStyle( SvtMiscOptions().GetToolboxStyle() ); - pToolBar->EnableCustomize(); - ::Size aActSize( pToolBar->GetSizePixel() ); - ::Size aSize( pToolBar->CalcWindowSizePixel() ); - aSize.setWidth( aActSize.Width() ); - pToolBar->SetOutputSizePixel( aSize ); - } - } + // Fill toolbar with container contents + pToolBarManager->FillToolbar( m_xConfigData ); + pToolBar->SetOutStyle( SvtMiscOptions().GetToolboxStyle() ); + pToolBar->EnableCustomize(); + ::Size aActSize( pToolBar->GetSizePixel() ); + ::Size aSize( pToolBar->CalcWindowSizePixel() ); + aSize.setWidth( aActSize.Width() ); + pToolBar->SetOutputSizePixel( aSize ); + } + } + catch ( const NoSuchElementException& ) + { + // No settings in our configuration manager. This means we are + // a transient toolbar which has no persistent settings. + m_bPersistent = false; + if ( pToolBar && pToolBarManager ) + { + pToolBar->SetOutStyle( SvtMiscOptions().GetToolboxStyle() ); + pToolBar->EnableCustomize(); + ::Size aActSize( pToolBar->GetSizePixel() ); + ::Size aSize( pToolBar->CalcWindowSizePixel() ); + aSize.setWidth( aActSize.Width() ); + pToolBar->SetOutputSizePixel( aSize ); } } } @@ -210,27 +210,27 @@ void SAL_CALL ToolBarWrapper::updateSettings() if ( m_bDisposed ) throw DisposedException(); - if ( m_xToolBarManager.is() ) + if ( !m_xToolBarManager.is() ) + return; + + if ( m_xConfigSource.is() && m_bPersistent ) { - if ( m_xConfigSource.is() && m_bPersistent ) + try { - try - { - ToolBarManager* pToolBarManager = static_cast< ToolBarManager *>( m_xToolBarManager.get() ); - - m_xConfigData = m_xConfigSource->getSettings( m_aResourceURL, false ); - if ( m_xConfigData.is() ) - pToolBarManager->FillToolbar( m_xConfigData ); - } - catch ( const NoSuchElementException& ) - { - } + ToolBarManager* pToolBarManager = static_cast< ToolBarManager *>( m_xToolBarManager.get() ); + + m_xConfigData = m_xConfigSource->getSettings( m_aResourceURL, false ); + if ( m_xConfigData.is() ) + pToolBarManager->FillToolbar( m_xConfigData ); } - else if ( !m_bPersistent ) + catch ( const NoSuchElementException& ) { - // Transient toolbar: do nothing } } + else if ( !m_bPersistent ) + { + // Transient toolbar: do nothing + } } void ToolBarWrapper::impl_fillNewData() @@ -285,26 +285,26 @@ void SAL_CALL ToolBarWrapper::setFastPropertyValue_NoBroadcast( sal_Int32 nHandl aLock.reset(); bool bNewNoClose( m_bNoClose ); - if ( m_xToolBarManager.is() && !m_bDisposed && ( bNewNoClose != bNoClose )) + if ( !(m_xToolBarManager.is() && !m_bDisposed && ( bNewNoClose != bNoClose ))) + return; + + ToolBarManager* pToolBarManager = static_cast< ToolBarManager *>( m_xToolBarManager.get() ); + if ( !pToolBarManager ) + return; + + ToolBox* pToolBox = pToolBarManager->GetToolBar(); + if ( !pToolBox ) + return; + + if ( bNewNoClose ) { - ToolBarManager* pToolBarManager = static_cast< ToolBarManager *>( m_xToolBarManager.get() ); - if ( pToolBarManager ) - { - ToolBox* pToolBox = pToolBarManager->GetToolBar(); - if ( pToolBox ) - { - if ( bNewNoClose ) - { - pToolBox->SetStyle( pToolBox->GetStyle() & ~WB_CLOSEABLE ); - pToolBox->SetFloatStyle( pToolBox->GetFloatStyle() & ~WB_CLOSEABLE ); - } - else - { - pToolBox->SetStyle( pToolBox->GetStyle() | WB_CLOSEABLE ); - pToolBox->SetFloatStyle( pToolBox->GetFloatStyle() | WB_CLOSEABLE ); - } - } - } + pToolBox->SetStyle( pToolBox->GetStyle() & ~WB_CLOSEABLE ); + pToolBox->SetFloatStyle( pToolBox->GetFloatStyle() & ~WB_CLOSEABLE ); + } + else + { + pToolBox->SetStyle( pToolBox->GetStyle() | WB_CLOSEABLE ); + pToolBox->SetFloatStyle( pToolBox->GetFloatStyle() | WB_CLOSEABLE ); } } diff --git a/framework/source/uielement/uicommanddescription.cxx b/framework/source/uielement/uicommanddescription.cxx index 77b8e13193f0..d81591ac3876 100644 --- a/framework/source/uielement/uicommanddescription.cxx +++ b/framework/source/uielement/uicommanddescription.cxx @@ -286,45 +286,45 @@ void ConfigurationAccess_UICommand::impl_fill(const Reference< XNameAccess >& _x std::vector< OUString >& aImageRotateVector, std::vector< OUString >& aImageMirrorVector) { - if ( _xConfigAccess.is() ) + if ( !_xConfigAccess.is() ) + return; + + Sequence< OUString> aNameSeq = _xConfigAccess->getElementNames(); + const sal_Int32 nCount = aNameSeq.getLength(); + for ( sal_Int32 i = 0; i < nCount; i++ ) { - Sequence< OUString> aNameSeq = _xConfigAccess->getElementNames(); - const sal_Int32 nCount = aNameSeq.getLength(); - for ( sal_Int32 i = 0; i < nCount; i++ ) + try { - try - { - Reference< XNameAccess > xNameAccess(_xConfigAccess->getByName( aNameSeq[i] ),UNO_QUERY); - if ( xNameAccess.is() ) - { - CmdToInfoMap aCmdToInfo; - - aCmdToInfo.bPopup = _bPopup; - xNameAccess->getByName( "Label" ) >>= aCmdToInfo.aLabel; - xNameAccess->getByName( "ContextLabel" ) >>= aCmdToInfo.aContextLabel; - xNameAccess->getByName( "PopupLabel" ) >>= aCmdToInfo.aPopupLabel; - xNameAccess->getByName( "TooltipLabel" ) >>= aCmdToInfo.aTooltipLabel; - xNameAccess->getByName( "TargetURL" ) >>= aCmdToInfo.aTargetURL; - xNameAccess->getByName( "IsExperimental" ) >>= aCmdToInfo.bIsExperimental; - xNameAccess->getByName( m_aPropProperties ) >>= aCmdToInfo.nProperties; - - m_aCmdInfoCache.emplace( aNameSeq[i], aCmdToInfo ); - - if ( aCmdToInfo.nProperties & COMMAND_PROPERTY_IMAGE ) - aImageCommandVector.push_back( aNameSeq[i] ); - if ( aCmdToInfo.nProperties & COMMAND_PROPERTY_ROTATE ) - aImageRotateVector.push_back( aNameSeq[i] ); - if ( aCmdToInfo.nProperties & COMMAND_PROPERTY_MIRROR ) - aImageMirrorVector.push_back( aNameSeq[i] ); - } - } - catch (const css::lang::WrappedTargetException&) - { - } - catch (const css::container::NoSuchElementException&) + Reference< XNameAccess > xNameAccess(_xConfigAccess->getByName( aNameSeq[i] ),UNO_QUERY); + if ( xNameAccess.is() ) { + CmdToInfoMap aCmdToInfo; + + aCmdToInfo.bPopup = _bPopup; + xNameAccess->getByName( "Label" ) >>= aCmdToInfo.aLabel; + xNameAccess->getByName( "ContextLabel" ) >>= aCmdToInfo.aContextLabel; + xNameAccess->getByName( "PopupLabel" ) >>= aCmdToInfo.aPopupLabel; + xNameAccess->getByName( "TooltipLabel" ) >>= aCmdToInfo.aTooltipLabel; + xNameAccess->getByName( "TargetURL" ) >>= aCmdToInfo.aTargetURL; + xNameAccess->getByName( "IsExperimental" ) >>= aCmdToInfo.bIsExperimental; + xNameAccess->getByName( m_aPropProperties ) >>= aCmdToInfo.nProperties; + + m_aCmdInfoCache.emplace( aNameSeq[i], aCmdToInfo ); + + if ( aCmdToInfo.nProperties & COMMAND_PROPERTY_IMAGE ) + aImageCommandVector.push_back( aNameSeq[i] ); + if ( aCmdToInfo.nProperties & COMMAND_PROPERTY_ROTATE ) + aImageRotateVector.push_back( aNameSeq[i] ); + if ( aCmdToInfo.nProperties & COMMAND_PROPERTY_MIRROR ) + aImageMirrorVector.push_back( aNameSeq[i] ); } } + catch (const css::lang::WrappedTargetException&) + { + } + catch (const css::container::NoSuchElementException&) + { + } } } void ConfigurationAccess_UICommand::fillCache() @@ -349,39 +349,39 @@ void ConfigurationAccess_UICommand::fillCache() void ConfigurationAccess_UICommand::addGenericInfoToCache() { - if ( m_xGenericUICommands.is() && !m_bGenericDataRetrieved ) - { - Sequence< OUString > aCommandNameSeq; - try - { - if ( m_xGenericUICommands->getByName( - UICOMMANDDESCRIPTION_NAMEACCESS_COMMANDROTATEIMAGELIST ) >>= aCommandNameSeq ) - m_aCommandRotateImageList = comphelper::concatSequences< OUString >( m_aCommandRotateImageList, aCommandNameSeq ); - } - catch (const RuntimeException&) - { - throw; - } - catch (const Exception&) - { - } + if ( !(m_xGenericUICommands.is() && !m_bGenericDataRetrieved) ) + return; - try - { - if ( m_xGenericUICommands->getByName( - UICOMMANDDESCRIPTION_NAMEACCESS_COMMANDMIRRORIMAGELIST ) >>= aCommandNameSeq ) - m_aCommandMirrorImageList = comphelper::concatSequences< OUString >( m_aCommandMirrorImageList, aCommandNameSeq ); - } - catch (const RuntimeException&) - { - throw; - } - catch (const Exception&) - { - } + Sequence< OUString > aCommandNameSeq; + try + { + if ( m_xGenericUICommands->getByName( + UICOMMANDDESCRIPTION_NAMEACCESS_COMMANDROTATEIMAGELIST ) >>= aCommandNameSeq ) + m_aCommandRotateImageList = comphelper::concatSequences< OUString >( m_aCommandRotateImageList, aCommandNameSeq ); + } + catch (const RuntimeException&) + { + throw; + } + catch (const Exception&) + { + } - m_bGenericDataRetrieved = true; + try + { + if ( m_xGenericUICommands->getByName( + UICOMMANDDESCRIPTION_NAMEACCESS_COMMANDMIRRORIMAGELIST ) >>= aCommandNameSeq ) + m_aCommandMirrorImageList = comphelper::concatSequences< OUString >( m_aCommandMirrorImageList, aCommandNameSeq ); } + catch (const RuntimeException&) + { + throw; + } + catch (const Exception&) + { + } + + m_bGenericDataRetrieved = true; } Any ConfigurationAccess_UICommand::getInfoFromCommand( const OUString& rCommandURL ) diff --git a/framework/source/uifactory/factoryconfiguration.cxx b/framework/source/uifactory/factoryconfiguration.cxx index 421ae5034e75..f67cea50d3db 100644 --- a/framework/source/uifactory/factoryconfiguration.cxx +++ b/framework/source/uifactory/factoryconfiguration.cxx @@ -201,56 +201,56 @@ void ConfigurationAccess_ControllerFactory::readConfigurationData() m_bConfigAccessInitialized = true; } - if ( m_xConfigAccess.is() ) - { - // Read and update configuration data - updateConfigurationData(); + if ( !m_xConfigAccess.is() ) + return; - uno::Reference< container::XContainer > xContainer( m_xConfigAccess, uno::UNO_QUERY ); - // UNSAFE - aLock.clear(); + // Read and update configuration data + updateConfigurationData(); - if ( xContainer.is() ) - { - m_xConfigAccessListener = new WeakContainerListener(this); - xContainer->addContainerListener(m_xConfigAccessListener); - } + uno::Reference< container::XContainer > xContainer( m_xConfigAccess, uno::UNO_QUERY ); + // UNSAFE + aLock.clear(); + + if ( xContainer.is() ) + { + m_xConfigAccessListener = new WeakContainerListener(this); + xContainer->addContainerListener(m_xConfigAccessListener); } } void ConfigurationAccess_ControllerFactory::updateConfigurationData() { osl::MutexGuard g(m_mutex); - if ( m_xConfigAccess.is() ) - { - Sequence< OUString > aPopupMenuControllers = m_xConfigAccess->getElementNames(); + if ( !m_xConfigAccess.is() ) + return; + + Sequence< OUString > aPopupMenuControllers = m_xConfigAccess->getElementNames(); - OUString aCommand; - OUString aModule; - OUString aService; - OUString aHashKey; - OUString aValue; + OUString aCommand; + OUString aModule; + OUString aService; + OUString aHashKey; + OUString aValue; - m_aMenuControllerMap.clear(); - for ( sal_Int32 i = 0; i < aPopupMenuControllers.getLength(); i++ ) + m_aMenuControllerMap.clear(); + for ( sal_Int32 i = 0; i < aPopupMenuControllers.getLength(); i++ ) + { + try { - try - { - if ( impl_getElementProps( m_xConfigAccess->getByName( aPopupMenuControllers[i] ), aCommand, aModule, aService,aValue )) - { - // Create hash key from command and module as they are together a primary key to - // the UNO service that implements the popup menu controller. - aHashKey = getHashKeyFromStrings( aCommand, aModule ); - m_aMenuControllerMap.emplace( aHashKey, ControllerInfo(aService,aValue) ); - } - } - catch ( const NoSuchElementException& ) - { - } - catch ( const WrappedTargetException& ) + if ( impl_getElementProps( m_xConfigAccess->getByName( aPopupMenuControllers[i] ), aCommand, aModule, aService,aValue )) { + // Create hash key from command and module as they are together a primary key to + // the UNO service that implements the popup menu controller. + aHashKey = getHashKeyFromStrings( aCommand, aModule ); + m_aMenuControllerMap.emplace( aHashKey, ControllerInfo(aService,aValue) ); } } + catch ( const NoSuchElementException& ) + { + } + catch ( const WrappedTargetException& ) + { + } } } diff --git a/framework/source/uifactory/uielementfactorymanager.cxx b/framework/source/uifactory/uielementfactorymanager.cxx index 5794fb044b0f..e58493e8f7e3 100644 --- a/framework/source/uifactory/uielementfactorymanager.cxx +++ b/framework/source/uifactory/uielementfactorymanager.cxx @@ -276,32 +276,32 @@ void ConfigurationAccess_FactoryManager::readConfigurationData() m_bConfigAccessInitialized = true; } - if ( m_xConfigAccess.is() ) + if ( !m_xConfigAccess.is() ) + return; + + Sequence< OUString > aUIElementFactories = m_xConfigAccess->getElementNames(); + + OUString aType; + OUString aName; + OUString aModule; + OUString aService; + OUString aHashKey; + for ( sal_Int32 i = 0; i < aUIElementFactories.getLength(); i++ ) { - Sequence< OUString > aUIElementFactories = m_xConfigAccess->getElementNames(); - - OUString aType; - OUString aName; - OUString aModule; - OUString aService; - OUString aHashKey; - for ( sal_Int32 i = 0; i < aUIElementFactories.getLength(); i++ ) + if ( impl_getElementProps( m_xConfigAccess->getByName( aUIElementFactories[i] ), aType, aName, aModule, aService )) { - if ( impl_getElementProps( m_xConfigAccess->getByName( aUIElementFactories[i] ), aType, aName, aModule, aService )) - { - // Create hash key from type, name and module as they are together a primary key to - // the UNO service that implements the user interface element factory. - aHashKey = getHashKeyFromStrings( aType, aName, aModule ); - m_aFactoryManagerMap.emplace( aHashKey, aService ); - } + // Create hash key from type, name and module as they are together a primary key to + // the UNO service that implements the user interface element factory. + aHashKey = getHashKeyFromStrings( aType, aName, aModule ); + m_aFactoryManagerMap.emplace( aHashKey, aService ); } + } - Reference< XContainer > xContainer( m_xConfigAccess, UNO_QUERY ); - if ( xContainer.is() ) - { - m_xConfigListener = new WeakContainerListener(this); - xContainer->addContainerListener(m_xConfigListener); - } + Reference< XContainer > xContainer( m_xConfigAccess, UNO_QUERY ); + if ( xContainer.is() ) + { + m_xConfigListener = new WeakContainerListener(this); + xContainer->addContainerListener(m_xConfigListener); } } diff --git a/framework/source/xml/imagesdocumenthandler.cxx b/framework/source/xml/imagesdocumenthandler.cxx index 45a5387186b9..51352b0296d4 100644 --- a/framework/source/xml/imagesdocumenthandler.cxx +++ b/framework/source/xml/imagesdocumenthandler.cxx @@ -144,87 +144,87 @@ void SAL_CALL OReadImagesDocumentHandler::startElement( SolarMutexGuard g; ImageHashMap::const_iterator pImageEntry = m_aImageMap.find( aName ); - if ( pImageEntry != m_aImageMap.end() ) + if ( pImageEntry == m_aImageMap.end() ) + return; + + switch ( pImageEntry->second ) { - switch ( pImageEntry->second ) + case IMG_ELEMENT_IMAGECONTAINER: { - case IMG_ELEMENT_IMAGECONTAINER: + // image:imagecontainer element (container element for all further image elements) + if ( m_bImageContainerStartFound ) { - // image:imagecontainer element (container element for all further image elements) - if ( m_bImageContainerStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "Element 'image:imagecontainer' cannot be embedded into 'image:imagecontainer'!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - - m_bImageContainerStartFound = true; + OUString aErrorMessage = getErrorLineString() + "Element 'image:imagecontainer' cannot be embedded into 'image:imagecontainer'!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; - case IMG_ELEMENT_IMAGES: - { - if ( !m_bImageContainerStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "Element 'image:images' must be embedded into element 'image:imagecontainer'!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + m_bImageContainerStartFound = true; + } + break; - if ( m_bImagesStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "Element 'image:images' cannot be embedded into 'image:images'!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + case IMG_ELEMENT_IMAGES: + { + if ( !m_bImageContainerStartFound ) + { + OUString aErrorMessage = getErrorLineString() + "Element 'image:images' must be embedded into element 'image:imagecontainer'!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); + } - m_bImagesStartFound = true; + if ( m_bImagesStartFound ) + { + OUString aErrorMessage = getErrorLineString() + "Element 'image:images' cannot be embedded into 'image:images'!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; - case IMG_ELEMENT_ENTRY: + m_bImagesStartFound = true; + } + break; + + case IMG_ELEMENT_ENTRY: + { + // Check that image:entry is embedded into image:images! + if ( !m_bImagesStartFound ) { - // Check that image:entry is embedded into image:images! - if ( !m_bImagesStartFound ) - { - OUString aErrorMessage = getErrorLineString() + "Element 'image:entry' must be embedded into element 'image:images'!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } + OUString aErrorMessage = getErrorLineString() + "Element 'image:entry' must be embedded into element 'image:images'!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); + } - // Create new image item descriptor - ImageItemDescriptor aItem; + // Create new image item descriptor + ImageItemDescriptor aItem; - // Read attributes for this image definition - for ( sal_Int16 n = 0; n < xAttribs->getLength(); n++ ) + // Read attributes for this image definition + for ( sal_Int16 n = 0; n < xAttribs->getLength(); n++ ) + { + pImageEntry = m_aImageMap.find( xAttribs->getNameByIndex( n ) ); + if ( pImageEntry != m_aImageMap.end() ) { - pImageEntry = m_aImageMap.find( xAttribs->getNameByIndex( n ) ); - if ( pImageEntry != m_aImageMap.end() ) + switch ( pImageEntry->second ) { - switch ( pImageEntry->second ) + case IMG_ATTRIBUTE_COMMAND: { - case IMG_ATTRIBUTE_COMMAND: - { - aItem.aCommandURL = xAttribs->getValueByIndex( n ); - } - break; - - default: - break; + aItem.aCommandURL = xAttribs->getValueByIndex( n ); } - } - } + break; - // Check required attribute "command" - if ( aItem.aCommandURL.isEmpty() ) - { - OUString aErrorMessage = getErrorLineString() + "Required attribute 'image:command' must have a value!"; - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); + default: + break; + } } + } - m_rImageList.push_back( aItem ); + // Check required attribute "command" + if ( aItem.aCommandURL.isEmpty() ) + { + OUString aErrorMessage = getErrorLineString() + "Required attribute 'image:command' must have a value!"; + throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); } - break; - default: - break; + m_rImageList.push_back( aItem ); } + break; + + default: + break; } } @@ -233,24 +233,24 @@ void SAL_CALL OReadImagesDocumentHandler::endElement(const OUString& aName) SolarMutexGuard g; ImageHashMap::const_iterator pImageEntry = m_aImageMap.find( aName ); - if ( pImageEntry != m_aImageMap.end() ) + if ( pImageEntry == m_aImageMap.end() ) + return; + + switch ( pImageEntry->second ) { - switch ( pImageEntry->second ) + case IMG_ELEMENT_IMAGECONTAINER: { - case IMG_ELEMENT_IMAGECONTAINER: - { - m_bImageContainerEndFound = true; - } - break; - - case IMG_ELEMENT_IMAGES: - { - m_bImagesStartFound = false; - } - break; + m_bImageContainerEndFound = true; + } + break; - default: break; + case IMG_ELEMENT_IMAGES: + { + m_bImagesStartFound = false; } + break; + + default: break; } } |