From c2d72180f824a9be5200b72f269414a68ade9bfb Mon Sep 17 00:00:00 2001 From: Seth Hillbrand Date: Mon, 11 Apr 2022 11:03:19 -0700 Subject: [PATCH] Revert "Change the behavior of ACTION_MENU::Add to require clones if required outside the function" This reverts commit 651f50a26d52e64d90438c033af14669b52be1c0. --- common/tool/action_menu.cpp | 11 ++++++----- eeschema/menubar.cpp | 2 +- gerbview/menubar.cpp | 8 ++++---- kicad/menubar.cpp | 2 +- pagelayout_editor/menubar.cpp | 2 +- pcbnew/menubar_pcb_editor.cpp | 2 +- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/common/tool/action_menu.cpp b/common/tool/action_menu.cpp index ea4e0ca6e2..897709581b 100644 --- a/common/tool/action_menu.cpp +++ b/common/tool/action_menu.cpp @@ -183,20 +183,21 @@ wxMenuItem* ACTION_MENU::Add( const TOOL_ACTION& aAction, bool aIsCheckmarkEntry wxMenuItem* ACTION_MENU::Add( ACTION_MENU* aMenu ) { - m_submenus.push_back( aMenu ); + ACTION_MENU* menuCopy = aMenu->Clone(); + m_submenus.push_back( menuCopy ); - wxASSERT_MSG( !aMenu->m_title.IsEmpty(), wxT( "Set a title for ACTION_MENU using SetTitle()" ) ); + wxASSERT_MSG( !menuCopy->m_title.IsEmpty(), wxT( "Set a title for ACTION_MENU using SetTitle()" ) ); if( !!aMenu->m_icon ) { - wxMenuItem* newItem = new wxMenuItem( this, -1, aMenu->m_title ); + wxMenuItem* newItem = new wxMenuItem( this, -1, menuCopy->m_title ); AddBitmapToMenuItem( newItem, KiBitmap( aMenu->m_icon ) ); - newItem->SetSubMenu( aMenu ); + newItem->SetSubMenu( menuCopy ); return Append( newItem ); } else { - return AppendSubMenu( aMenu, aMenu->m_title ); + return AppendSubMenu( menuCopy, menuCopy->m_title ); } } diff --git a/eeschema/menubar.cpp b/eeschema/menubar.cpp index bbea599815..3843f615e8 100644 --- a/eeschema/menubar.cpp +++ b/eeschema/menubar.cpp @@ -72,7 +72,7 @@ void SCH_EDIT_FRAME::ReCreateMenuBar() fileMenu->Add( ACTIONS::doNew ); fileMenu->Add( ACTIONS::open ); - wxMenuItem* item = fileMenu->Add( openRecentMenu->Clone() ); + wxMenuItem* item = fileMenu->Add( openRecentMenu ); // Add the file menu condition here since it needs the item ID for the submenu ACTION_CONDITIONS cond; diff --git a/gerbview/menubar.cpp b/gerbview/menubar.cpp index 2adf7b6494..c1985ccfc0 100644 --- a/gerbview/menubar.cpp +++ b/gerbview/menubar.cpp @@ -73,7 +73,7 @@ void GERBVIEW_FRAME::ReCreateMenuBar() } fileMenu->Add( GERBVIEW_ACTIONS::openGerber ); - wxMenuItem* gbrItem = fileMenu->Add( openRecentGbrMenu->Clone() ); + wxMenuItem* gbrItem = fileMenu->Add( openRecentGbrMenu ); RegisterUIUpdateHandler( gbrItem->GetId(), FileHistoryCond( recentGbrFiles) ); @@ -91,7 +91,7 @@ void GERBVIEW_FRAME::ReCreateMenuBar() } fileMenu->Add( GERBVIEW_ACTIONS::openDrillFile ); - wxMenuItem* drillItem = fileMenu->Add( openRecentDrlMenu->Clone() ); + wxMenuItem* drillItem = fileMenu->Add( openRecentDrlMenu ); RegisterUIUpdateHandler( drillItem->GetId(), FileHistoryCond( m_drillFileHistory ) ); @@ -109,7 +109,7 @@ void GERBVIEW_FRAME::ReCreateMenuBar() } fileMenu->Add( GERBVIEW_ACTIONS::openJobFile ); - wxMenuItem* jobItem = fileMenu->Add( openRecentJobMenu->Clone() ); + wxMenuItem* jobItem = fileMenu->Add( openRecentJobMenu ); RegisterUIUpdateHandler( jobItem->GetId(), FileHistoryCond( m_jobFileHistory ) ); @@ -127,7 +127,7 @@ void GERBVIEW_FRAME::ReCreateMenuBar() } fileMenu->Add( GERBVIEW_ACTIONS::openZipFile ); - wxMenuItem* zipItem = fileMenu->Add( openRecentZipMenu->Clone() ); + wxMenuItem* zipItem = fileMenu->Add( openRecentZipMenu ); RegisterUIUpdateHandler( zipItem->GetId(), FileHistoryCond( m_zipFileHistory ) ); #undef FileHistoryCond diff --git a/kicad/menubar.cpp b/kicad/menubar.cpp index 4c4390e215..734753c131 100644 --- a/kicad/menubar.cpp +++ b/kicad/menubar.cpp @@ -79,7 +79,7 @@ void KICAD_MANAGER_FRAME::ReCreateMenuBar() fileMenu->Add( KICAD_MANAGER_ACTIONS::openProject ); - wxMenuItem* item = fileMenu->Add( openRecentMenu->Clone() ); + wxMenuItem* item = fileMenu->Add( openRecentMenu ); // Add the file menu condition here since it needs the item ID for the submenu ACTION_CONDITIONS cond; diff --git a/pagelayout_editor/menubar.cpp b/pagelayout_editor/menubar.cpp index 80b7f5239d..c4994daec2 100644 --- a/pagelayout_editor/menubar.cpp +++ b/pagelayout_editor/menubar.cpp @@ -68,7 +68,7 @@ void PL_EDITOR_FRAME::ReCreateMenuBar() fileMenu->Add( ACTIONS::doNew ); fileMenu->Add( ACTIONS::open ); - wxMenuItem* item = fileMenu->Add( openRecentMenu->Clone() ); + wxMenuItem* item = fileMenu->Add( openRecentMenu ); // Add the file menu condition here since it needs the item ID for the submenu ACTION_CONDITIONS cond; diff --git a/pcbnew/menubar_pcb_editor.cpp b/pcbnew/menubar_pcb_editor.cpp index c6bda35868..e34cc02c03 100644 --- a/pcbnew/menubar_pcb_editor.cpp +++ b/pcbnew/menubar_pcb_editor.cpp @@ -74,7 +74,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar() fileMenu->Add( ACTIONS::doNew ); fileMenu->Add( ACTIONS::open ); - wxMenuItem* item = fileMenu->Add( openRecentMenu->Clone() ); + wxMenuItem* item = fileMenu->Add( openRecentMenu ); // Add the file menu condition here since it needs the item ID for the submenu ACTION_CONDITIONS cond;