Bug in matplotlib_gtk ?

[snip ...]

It is slightly obscure - why would you write a callback to display an
widget in a notebook tab which is not visible? However, the
FigureCanvasGTK should be able to handle this case so it is a bug.

The problem is with the "canvas2.draw()" line.
When you run the test the second canvas widget is not immediately
displayed, so it does not get realized() and its gdk.Window has not been
created which causes problems with code which uses the gdk.Window. The
expose_event() code checks for this case with
    if GTK_WIDGET_DRAWABLE(self):
but FigureCanvasGTK.draw() was missing this check.

Its fixed now in CVS (I also simplified the draw() code a little).

Steve

Send instant messages to your online friends http://au.messenger.yahoo.com

···

On Sun, 2006-02-19 at 22:09 -0800, matplotlib-devel-request@lists.sourceforge.net wrote:

Here is a quick and dirty minimal code reproducing the problem.

David

Thanks for the fix. I’ll try the CVS version ASAP.

The small example I sent was just to reproduce the problem.
I was not able to trace the problem myself as I’m a just a poor
scientist and not a software engineer (even if I like programming)
To make my need a bit more clear:
Roughly, I have a notebook to display my data 3 different ways, each in one notebook tabs.
Data processing is controlled in the first notebook so after changes I have to update the plots in the others tabs.
I could update the plot each time I make a tab visible but it will unnecessarily slow down the switching in between tabs.

Again thank you very much for your help.
And thanks to all matplotlib developers for their great work!
Hope, Numpy/Scipy/Matplotlib/Pytables/Pyvisa/pygtk will attract more and more users.
I strongly suggest all scientist to try this combination, it’s amazingly powerful.

David

2006/2/20, Steve Chaplin <stevech1097@…49…>:

···

On Sun, 2006-02-19 at 22:09 -0800, > matplotlib-devel-request@lists.sourceforge.net wrote:

Here is a quick and dirty minimal code reproducing the problem.

David
[snip …]

It is slightly obscure - why would you write a callback to display an
widget in a notebook tab which is not visible? However, the
FigureCanvasGTK should be able to handle this case so it is a bug.

The problem is with the “canvas2.draw()” line.
When you run the test the second canvas widget is not immediately
displayed, so it does not get realized() and its gdk.Window has not been
created which causes problems with code which uses the gdk.Window. The
expose_event() code checks for this case with
if GTK_WIDGET_DRAWABLE(self):
but FigureCanvasGTK.draw() was missing this check.

Its fixed now in CVS (I also simplified the draw() code a little).

Steve

Send instant messages to your online friends http://au.messenger.yahoo.com