mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 02:40:11 +00:00
widget: Fix transform refcounting in allocate()
Make the transform (transfer full). 1. This makes sure we actually reference the transform. Previously we did not. 2. Most callers create a new transform to pass to us. Now they don't have to uref it anymore.
This commit is contained in:
parent
89fb752a8f
commit
a079fd2def
@ -301,7 +301,7 @@ gtk_fixed_layout_allocate (GtkLayoutManager *layout_manager,
|
|||||||
child_req.width,
|
child_req.width,
|
||||||
child_req.height,
|
child_req.height,
|
||||||
-1,
|
-1,
|
||||||
child_info->position);
|
gsk_transform_ref (child_info->position));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -458,7 +458,6 @@ gtk_revealer_real_size_allocate (GtkWidget *widget,
|
|||||||
}
|
}
|
||||||
|
|
||||||
gtk_widget_allocate (child, child_width, child_height, -1, transform);
|
gtk_widget_allocate (child, child_width, child_height, -1, transform);
|
||||||
gsk_transform_unref (transform);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -4233,8 +4233,6 @@ gtk_widget_size_allocate (GtkWidget *widget,
|
|||||||
allocation->height,
|
allocation->height,
|
||||||
baseline,
|
baseline,
|
||||||
transform);
|
transform);
|
||||||
|
|
||||||
gsk_transform_unref (transform);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -4243,7 +4241,7 @@ gtk_widget_size_allocate (GtkWidget *widget,
|
|||||||
* @width: New width of @widget
|
* @width: New width of @widget
|
||||||
* @height: New height of @widget
|
* @height: New height of @widget
|
||||||
* @baseline: New baseline of @widget, or -1
|
* @baseline: New baseline of @widget, or -1
|
||||||
* @transform: (transfer none) (allow-none): Transformation to be applied to @widget
|
* @transform: (transfer full) (allow-none): Transformation to be applied to @widget
|
||||||
*
|
*
|
||||||
* This function is only used by #GtkWidget subclasses, to assign a size,
|
* This function is only used by #GtkWidget subclasses, to assign a size,
|
||||||
* position and (optionally) baseline to their child widgets.
|
* position and (optionally) baseline to their child widgets.
|
||||||
@ -4303,10 +4301,8 @@ gtk_widget_allocate (GtkWidget *widget,
|
|||||||
priv->allocated_height != height);
|
priv->allocated_height != height);
|
||||||
transform_changed = !gsk_transform_equal (priv->allocated_transform, transform);
|
transform_changed = !gsk_transform_equal (priv->allocated_transform, transform);
|
||||||
|
|
||||||
/* order is important, sometimes priv->allocated_transform == transform */
|
|
||||||
gsk_transform_ref (transform);
|
|
||||||
gsk_transform_unref (priv->allocated_transform);
|
gsk_transform_unref (priv->allocated_transform);
|
||||||
priv->allocated_transform = transform;
|
priv->allocated_transform = gsk_transform_ref (transform);
|
||||||
priv->allocated_width = width;
|
priv->allocated_width = width;
|
||||||
priv->allocated_height = height;
|
priv->allocated_height = height;
|
||||||
priv->allocated_size_baseline = baseline;
|
priv->allocated_size_baseline = baseline;
|
||||||
@ -11435,7 +11431,7 @@ gtk_widget_ensure_allocate (GtkWidget *widget)
|
|||||||
priv->allocated_width,
|
priv->allocated_width,
|
||||||
priv->allocated_height,
|
priv->allocated_height,
|
||||||
priv->allocated_size_baseline,
|
priv->allocated_size_baseline,
|
||||||
priv->allocated_transform);
|
gsk_transform_ref (priv->allocated_transform));
|
||||||
}
|
}
|
||||||
else if (priv->alloc_needed_on_child)
|
else if (priv->alloc_needed_on_child)
|
||||||
{
|
{
|
||||||
|
@ -128,8 +128,6 @@ gtk_transform_tester_size_allocate (GtkWidget *widget,
|
|||||||
w, h,
|
w, h,
|
||||||
-1,
|
-1,
|
||||||
global_transform);
|
global_transform);
|
||||||
|
|
||||||
gsk_transform_unref (global_transform);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user