I'm trying to subclass a DrawingArea and am getting a warning saying
it isn't realized. Here's the relevant section of code:


class Canvas(gtk.DrawingArea):

    def __init__(self, parent, width, height):

        gtk.DrawingArea.__init__(self)
        self.the_parent = parent
        self.configured = 0
        self.realized = 0
        self.set_double_buffered(1)
        self.set_size_request(width, height)
        self.connect_after('realize', self.on_realize)
        self.connect('configure_event', self.on_configure)
        self.connect('expose_event', self.on_expose)
        self.connect('button_press_event', self.on_button_press)
        self.connect('motion_notify_event', self.on_motion_notify)
        parent.add(self)
        self.show()
        
    #------------------------------------------------------------------

    def on_realize(self, *args):

        print 'on_realize', self.flags(), gtk.REALIZED
        if self.flags() & gtk.REALIZED:
            print self.flags() & gtk.REALIZED 
            print 'it is realized'
            self.set_events(gtk.gdk.EXPOSURE_MASK
                            | gtk.gdk.LEAVE_NOTIFY_MASK
                            | gtk.gdk.BUTTON_PRESS_MASK
                            | gtk.gdk.POINTER_MOTION_MASK
                            | gtk.gdk.POINTER_MOTION_HINT_MASK)
            self.realized = 1
        #return gtk.TRUE

When I run it, I get:
on_configure
on_realize 2164288 64
64
it is realized

(TestCanvas.py:17300): Gtk-CRITICAL **: file gtkwidget.c: line 5209
(gtk_widget_set_events): assertion `!GTK_WIDGET_REALIZED (widget)'
failed

The self.set_events line is the only call to set_events so it has to
be that line. Looking at the GTK_WIDGET_REALIZED macro in gtkwidget.h
I don't see how my if test can be true and still have the assertion
fail.

Any ideas on what I'm doing wrong? This is gtk/pygtk 2.x.

Thanks,
Dave


_______________________________________________
pygtk mailing list   [EMAIL PROTECTED]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/

Reply via email to