default impls of width_for_height,hfw should chain directly not use wrapper API
In GtkBin and GtkWidget we tried to provide handy defaults that call get_width if there's no get_width_for_height and get_height for get_height_for_width. However, they used the wrapper API on GtkSizeRequest instead of chaining directly to the other method implementation. This could result in all kinds of surprising behavior, for example, get_width_for_height() would now already include the effects of set_size_request(). If nothing else it's inefficient. But it's just conceptually wrong, because to chain to another implementation, we should call the other implementation, not call a wrapper around the other implementation (when we're already inside a previous invocation of the wrapper, i.e. compute_size_for_orientation() ends up reinvoking itself in the same orientation on the same object which it pretty likely isn't intending to do) https://bugzilla.gnome.org/show_bug.cgi?id=628829
This commit is contained in:
@ -11040,7 +11040,7 @@ gtk_widget_real_get_height_for_width (GtkSizeRequest *layout,
|
||||
gint *minimum_height,
|
||||
gint *natural_height)
|
||||
{
|
||||
gtk_size_request_get_height (layout, minimum_height, natural_height);
|
||||
GTK_SIZE_REQUEST_GET_IFACE (layout)->get_height(layout, minimum_height, natural_height);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -11048,8 +11048,8 @@ gtk_widget_real_get_width_for_height (GtkSizeRequest *layout,
|
||||
gint height,
|
||||
gint *minimum_width,
|
||||
gint *natural_width)
|
||||
{
|
||||
gtk_size_request_get_width (layout, minimum_width, natural_width);
|
||||
{
|
||||
GTK_SIZE_REQUEST_GET_IFACE (layout)->get_width(layout, minimum_width, natural_width);
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
Reference in New Issue
Block a user