Am Freitag, den 26.06.2009, 14:46 -0400 schrieb José Alburquerque: > On Fri, 2009-06-26 at 18:11 +0200, Daniel Elstner wrote:
> > You override the expose_event handler of the Gtk::Image and set a new > > pixbuf from in there? > > > > That's bold. :-) > > > > I'd try hooking into size_allocate() instead. > > For learning purposes, am I wrong in thinking that by the time the > Gtk::Image is exposed, its size has been allocated? Is it the case that > in the allocation phase the widget is informed what its size must be > while in the expose phase the size has already been determined? Yep, that's absolutely correct. For the expose event to occur, the size must have been allocated already. Also, the Gdk::Window must exist. (Or the Gdk::Window of the parent in case of a NO_WINDOW widget.) So, yes, Murray's approach is fine in that regard. The code also avoids rescaling the image if the widget size hasn't changed, so there is no performance difference either. I called it "bold" purely on my gut feeling that changing the logical state of a widget while it is being drawn is asking for trouble. The expose event handler is supposed to draw a representation of the current logical widget content, and not change the content. Changing the logical content invalidates the widget area. It doesn't enter infinite recursion because invalidating a window only queues the expose event for that area, instead of starting to draw right away. But my gut tells me it's not a good idea to do that sort of thing if you don't have to. :-) --Daniel _______________________________________________ gtkmm-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gtkmm-list
