kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #00629
Mac & "invalid context"
Hi again,
I've been digging deeper into this issue and think I found the cause
of my problems with invalid graphic contexts:
The Mac port of wxWidgets does not support having nested contexts
(wxDC instances).
In short, this means that the following is illegal and any draw
command will fail:
{
wxClientDC dc(this);
wxClientDC dc2(this);
<- draw something here;
}
One example of where this is done in KiCad (this seems to be done all
over the place):
WinEDA_PcbFrame::Files_io()
{
[...]
wxClientDC dc( DrawPanel );
This function eventually calls
WinEDA_BasePcbFrame::Compile_Ratsnest( wxDC* DC ...), which again
calls WinEDA_MsgPanel::EraseMsgBox(), which creates a new context:
wxClientDC dc( this );
[...]
}
This one is easy to fix, but there are more, to an unknown extent.
In general (I'm not familiar with wxWidgets), it's considered nice to
only draw stuff on the paint event itself. I guess this school of
thought is not followed in KiCad, either accidentally or for some
reason.
I'm wondering if anyone has any insights, ideas etc. about what to do
about this?
Regards,
~/= Marius
--
We are Elektropeople for a better living.
Follow ups