diff options
author | Caolán McNamara <caolanm@redhat.com> | 2014-12-08 12:10:37 +0000 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2014-12-15 13:55:35 +0200 |
commit | 459e5033dc80285bfc807776d59ee3a3095b90ec (patch) | |
tree | 2b65dbe4fa1c3610cd31a20cea073c7c2abf5740 | |
parent | in ScFormulaCell dtor remove cell also from FormulaTrack (diff) | |
download | core-459e5033dc80285bfc807776d59ee3a3095b90ec.tar.gz core-459e5033dc80285bfc807776d59ee3a3095b90ec.zip |
Resolves: fdo#86820 executing toolbar menu entry can destroy menu
Change-Id: Ide0ea8f8ff145d487e409b0091918b59f1f83405
(cherry picked from commit eae0dda3e2eddb55b4e2032136541c15ba87fa09)
Reviewed-on: https://gerrit.libreoffice.org/13378
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | framework/source/uielement/toolbarmanager.cxx | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx index 4f11ff3dc079..c9bc41f67bc9 100644 --- a/framework/source/uielement/toolbarmanager.cxx +++ b/framework/source/uielement/toolbarmanager.cxx @@ -1791,17 +1791,24 @@ IMPL_LINK( ToolBarManager, Command, CommandEvent*, pCmdEvt ) // overflow and context menus). If we set these Hdls permanently rather // than just when the context menu is showing, then events are duplicated // when the menu is being used as an overflow menu. - m_pToolBar->GetMenu()->SetSelectHdl( LINK( this, ToolBarManager, MenuSelect ) ); - m_pToolBar->GetMenu()->SetDeactivateHdl( LINK( this, ToolBarManager, MenuDeactivate ) ); + Menu *pManagerMenu = m_pToolBar->GetMenu(); + pManagerMenu->SetSelectHdl( LINK( this, ToolBarManager, MenuSelect ) ); + pManagerMenu->SetDeactivateHdl( LINK( this, ToolBarManager, MenuDeactivate ) ); // make sure all disabled entries will be shown pMenu->SetMenuFlags( pMenu->GetMenuFlags() | MENU_FLAG_ALWAYSSHOWDISABLEDENTRIES ); ::Point aPoint( pCmdEvt->GetMousePosPixel() ); pMenu->Execute( m_pToolBar, aPoint ); - // Unlink our listeners again -- see above for why. - m_pToolBar->GetMenu()->SetSelectHdl( Link() ); - m_pToolBar->GetMenu()->SetDeactivateHdl( Link() ); + //fdo#86820 We may have been disposed and so have a NULL m_pToolBar by + //executing a menu entry, e.g. inserting a chart replaces the toolbars + pManagerMenu = m_bDisposed ? NULL : m_pToolBar->GetMenu(); + if (pManagerMenu) + { + // Unlink our listeners again -- see above for why. + pManagerMenu->SetSelectHdl( Link() ); + pManagerMenu->SetDeactivateHdl( Link() ); + } } return 0; |