← Back to team overview

kicad-developers team mailing list archive

issues in GAL mode with event manager.

 

Hi Orson and Tomasz,

Sorry to give you a bit of work, but I found issues which are outside my knowledge.

Recently, a grid sub-menu was added to the router tool context menu.
And I found issues when using it.
But issues are due to the events are managed in GAL mode, not due to this sub-menu.

First (both on W7 and Linux):
The submenu exists in other context menus, and does not show a problem.
Especially, the current grid selection appears checked in context menu grid list, but not in the
ROUTER_TOOL_MENU context menu.
First time I saw that, I was thinking it is just a cosmetic issue.
But after more investigations, I am pretty sure this is a much more serious issue.

Second, but only on Windows:
During investigations, I found a much more annoying behavior in GAL dispatch events.
This happens only on W7 (32bits for me), not on Linux. (I don't know on OSX)

I saw EventHandler( const wxMenuEvent& aEvent ) living in many menus are called at least once,
regardless the menuid of the corresponding menu.

I did not tested (obviously) all menus, but I tested:
CONTEXT_TRACK_WIDTH_MENU::EventHandler
ZOOM_MENU::EventHandler
GRID_MENU::EventHandler
(just add in these methods a call to a wxMessageBox: the result is very interesting)

In context menus where both zoom and grid menu exist, and when you select a new grid or zoom, zoom
and grid EventHandler are called, regardless the menu clicked, then the right menu is called a
second time.
(Therefore the right handler is called twice. Usually, this is not a problem, but...)

Especially, the CONTEXT_TRACK_WIDTH_MENU::EventHandler is called when a new grid is selected from
the router tool context menu.
And because the menuid is not expected in this handler, the width of tracks created after this
selection is very strange.

(I have a fix for this menu in one of my working copy, but the best is to fix the source of issues)


Besides:
in many case, assert is used, instead of wxASSERT in sources.
At least on Windows, it makes the debug not usable (dbg is just closed, and you have no trace and no
message).
And when you have to debug an issue which happens only on Windows, this is a bit annoying.

Thanks.

-- 
Jean-Pierre CHARRAS


Follow ups