Browse Source

Architecturally-simpler fix for grid context menu unit changes.

Fixes: lp:1777519
* https://bugs.launchpad.net/kicad/+bug/1777519
pull/17/head
Jeff Young 7 years ago
parent
commit
79e0bb08d0
  1. 21
      common/tool/grid_menu.cpp
  2. 2
      include/tool/context_menu.h
  3. 2
      include/tool/grid_menu.h

21
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
}
}

2
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.

2
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
{

Loading…
Cancel
Save