John C Atkeson <[EMAIL PROTECTED]> writes:
>
> I'm using widget->allocation.width and .height to determine the shape
> of my drawing area at runtime, but am getting funny results.
>
> I set allocation.width and .height to 700x500 at startup - and they
> stick there for the entire life of the program, even after the user has
> resized the window/widget many times and the drawing_area is obviously no
> longer those proportions.
>
> How can one not be equal to the other?
Hrmmm, without sample code, I can't say.
First it is not allowed to touch allocation.width/height yourself.
That is the size that GTK+ gives the widget. Setting it yourself
doesn't make sense, and it will be overwritten.
Second, when your drawing area gets the new size, the following
code will be called:
=================
static void
gtk_drawing_area_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_DRAWING_AREA (widget));
g_return_if_fail (allocation != NULL);
widget->allocation = *allocation;
widget->allocation.width = MAX (1, widget->allocation.width);
widget->allocation.height = MAX (1, widget->allocation.height);
[...]
}
=================
This looks pretty much guaranteed to change the allocation to
me. My best guesses are that your drawing area is packed in
such a way that the drawing area isn't changing size when
the toplevel changes size or that there is some confusion
between allocation and requisition in your program.
Regards,
Owen
--
To unsubscribe: mail -s unsubscribe [EMAIL PROTECTED] < /dev/null