← Back to team overview

kicad-developers team mailing list archive

Re: Strange eeschema behavior at zoom 0.7


Le 01/04/2011 19:33, Dick Hollenbeck a écrit :

Require a wxWidgets version that works?  Seems especially do-able on MS
Windows, where the builder person can pick what wxWidgets version to compile
(the *required* version.)

So based on my limited information, a path to success on MS Windows is to
fix what else is wrong with wxWidgets 2.9.x, and get THIS zoom fix for free.

Since the MS Windows builder person has to compile the wxWidgets library, it
can be patched before compiling quite easily, as a means of fixing the other

My $ 0.02

If it were easy to do a static link of Kicad to a debug build of the
wxWidgets library, then:

If so, a person could step into the library from Kicad and maybe see what's
up with the floating point comma issue.  That seems like a patch or fix that
needs to happen in any case.


Your fix is the best fix found until now.
So I switch to wxWidgets 2.9.1 (wxWidgets 2.9.2 is expected soon)) at least under Windows.
For me, wxWidgets 2.9.1 works fine.

There is specific value in requiring a specific version of wxWidgets.  It
provides consistency and predictability.

The cost on linux is too high, because package management offers a pre-built

However, the cost on MS Windows is zilch, yielding an attractive
cost/benefit ratio on Windows.

Besides, why hack up Kicad with "work arounds" when the piece with the bug
is already fixed?

Getting the exact version of wxWidgets "required" can be made *very easy* by
using CMake's "external project" support.  But that means spending a half
day embellishing the CMakeLists.txt file specifically for MS Windows developers.

I believe I found what is wrong in wxWidgets 2.9.1:
WxWidgets 2.9.1 seems call setlocale( LC_NUMERIC, "" )
when wxConfig read doubles stored in config, but forget to back to current locale.
So, setlocale( LC_NUMERIC, "" ) remains after this read.

So the fix is easy in kicad:
call SetLocaleTo_Default() after reading a parameter (call to config->Read(..., ...)) if a double is read.

Jean-Pierre CHARRAS

Follow ups