summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2014-12-08 12:10:37 +0000
committerTor Lillqvist <tml@collabora.com>2014-12-15 13:55:35 +0200
commit459e5033dc80285bfc807776d59ee3a3095b90ec (patch)
tree2b65dbe4fa1c3610cd31a20cea073c7c2abf5740
parent85eb80bfa306bd40abc5a6e687503f58279e8ffe (diff)
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.cxx17
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;