mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 02:40:11 +00:00
expression: Fix property expressions for interfaces
We were not checking the passed-in type in the right way. An interface type can still pass the g_type_is_a (..., G_TYPE_OBJECT) check, if G_TYPE_OBJECT is one of its prerequisites. What we need to check is whether the fundamental type is G_TYPE_OBJECT.
This commit is contained in:
parent
59dd7d8900
commit
48dcbf4935
@ -1283,13 +1283,13 @@ gtk_property_expression_new (GType this_type,
|
|||||||
{
|
{
|
||||||
GParamSpec *pspec;
|
GParamSpec *pspec;
|
||||||
|
|
||||||
if (g_type_is_a (this_type, G_TYPE_OBJECT))
|
if (g_type_fundamental (this_type) == G_TYPE_OBJECT)
|
||||||
{
|
{
|
||||||
GObjectClass *class = g_type_class_ref (this_type);
|
GObjectClass *class = g_type_class_ref (this_type);
|
||||||
pspec = g_object_class_find_property (class, property_name);
|
pspec = g_object_class_find_property (class, property_name);
|
||||||
g_type_class_unref (class);
|
g_type_class_unref (class);
|
||||||
}
|
}
|
||||||
else if (g_type_is_a (this_type, G_TYPE_INTERFACE))
|
else if (g_type_fundamental (this_type) == G_TYPE_INTERFACE)
|
||||||
{
|
{
|
||||||
GTypeInterface *iface = g_type_default_interface_ref (this_type);
|
GTypeInterface *iface = g_type_default_interface_ref (this_type);
|
||||||
pspec = g_object_interface_find_property (iface, property_name);
|
pspec = g_object_interface_find_property (iface, property_name);
|
||||||
|
Loading…
Reference in New Issue
Block a user