diff --git a/common/tool/grid_menu.cpp b/common/tool/grid_menu.cpp index 25979f9878..24bde69014 100644 --- a/common/tool/grid_menu.cpp +++ b/common/tool/grid_menu.cpp @@ -51,13 +51,6 @@ GRID_MENU::GRID_MENU( EDA_DRAW_FRAME* aParent ) : m_parent( aParent ) } -CONTEXT_MENU* GRID_MENU::Clone() const -{ - // Just return a fresh menu. This keeps the units up-to-date. - return create(); -} - - OPT_TOOL_EVENT GRID_MENU::eventHandler( const wxMenuEvent& aEvent ) { OPT_TOOL_EVENT event( ACTIONS::gridPreset.MakeEvent() ); @@ -70,9 +63,17 @@ OPT_TOOL_EVENT GRID_MENU::eventHandler( const wxMenuEvent& aEvent ) void GRID_MENU::update() { + BASE_SCREEN* screen = m_parent->GetScreen(); + int currentId = screen->GetGridCmdId(); + wxArrayString gridsList; + + screen->BuildGridsChoiceList( gridsList, g_UserUnit != INCHES ); + for( unsigned int i = 0; i < GetMenuItemCount(); ++i ) - Check( ID_POPUP_GRID_SELECT + 1 + i, false ); + { + int menuId = ID_POPUP_GRID_SELECT + 1 + i; - // Check the current grid size - Check( m_parent->GetScreen()->GetGridCmdId(), true ); + SetLabel( menuId, gridsList[i] ); // Refresh label in case units have changed + Check( menuId, menuId == currentId ); // Refresh checkmark + } } diff --git a/include/tool/context_menu.h b/include/tool/context_menu.h index f58bab55fe..cdbc33576a 100644 --- a/include/tool/context_menu.h +++ b/include/tool/context_menu.h @@ -142,7 +142,7 @@ public: /** * Creates a deep, recursive copy of this CONTEXT_MENU. */ - virtual CONTEXT_MENU* Clone() const; + CONTEXT_MENU* Clone() const; protected: ///> Returns an instance of this class. It has to be overridden in inheriting classes. diff --git a/include/tool/grid_menu.h b/include/tool/grid_menu.h index 18d2bbee6c..1067303ee1 100644 --- a/include/tool/grid_menu.h +++ b/include/tool/grid_menu.h @@ -34,8 +34,6 @@ class GRID_MENU : public CONTEXT_MENU public: GRID_MENU( EDA_DRAW_FRAME* aParent ); - CONTEXT_MENU* Clone() const override; - private: CONTEXT_MENU* create() const override {