Re: gtk_widget_queue_resize() forgetting allocation
- From: Tim Janik <timj gtk org>
- To: Owen Taylor <otaylor redhat com>
- Cc: Gtk+ Developers <gtk-devel-list gnome org>, 9sjb qlink queensu ca, Gtk+ MList <gtk-list gnome org>
- Subject: Re: gtk_widget_queue_resize() forgetting allocation
- Date: Tue, 5 Oct 2004 21:10:52 +0200 (CEST)
On Tue, 5 Oct 2004, Owen Taylor wrote:
The way I'd think of this is that calling gtk_widget_size_request()
sets the REQUEST_NEEDED flag, and we have a set of invariants:
1) If REQUEST_NEEDED is set on a widget, REQUEST_NEEDED is set on
all parents up to the resize container
2) If REQUEST_NEEDED is set on the resize container, the resize
container has an idle queued on it.
3) If REQUEST_NEEDED is set on a widget, ALLOC_NEEDED will be
set on a widget.
With the idle sizer behavior of calling request() than allocate()
on the toplevel, I think this gives the correct behavior that
queue_resize(widget) ensures ::request followed by ::allocate on
the widget.
As far as I can see, calls to gtk_widget_size_request() during
size_allocate() still will handle 1) and 2) fine. The only problem
comes with 3), which my patch should fix up.
ok, i tried hard, but after my initial example fell apart (idle sizer
without size-request as discussed on irc), i can't come up with a scenrio
to break the invariants with your patch at the moment. and since your
patch does indeed fix my resizing bug, i gave you the benfit of a
doubt and applied your patch.
you agree on merging it down to 2.4?
Regards,
Owen
---
ciaoTJ
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]