mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-02 08:50:28 +00:00
widget: Clear broken widget path in constructor
... where it belongs instead of fiddling with it in get_path().
This commit is contained in:
parent
198cf93f0f
commit
257d961a01
@ -551,6 +551,7 @@ static void gtk_widget_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec);
|
||||
static void gtk_widget_constructed (GObject *object);
|
||||
static void gtk_widget_dispose (GObject *object);
|
||||
static void gtk_widget_real_destroy (GtkWidget *object);
|
||||
static void gtk_widget_finalize (GObject *object);
|
||||
@ -894,6 +895,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
|
||||
cpn_context.dispatcher = child_property_notify_dispatcher;
|
||||
_gtk_widget_child_property_notify_context = &cpn_context;
|
||||
|
||||
gobject_class->constructed = gtk_widget_constructed;
|
||||
gobject_class->dispose = gtk_widget_dispose;
|
||||
gobject_class->finalize = gtk_widget_finalize;
|
||||
gobject_class->set_property = gtk_widget_set_property;
|
||||
@ -10317,6 +10319,27 @@ gtk_widget_get_default_direction (void)
|
||||
return gtk_default_direction;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_widget_constructed (GObject *object)
|
||||
{
|
||||
GtkWidget *widget = GTK_WIDGET (object);
|
||||
GtkWidgetPrivate *priv = widget->priv;
|
||||
|
||||
/* As strange as it may seem, this may happen on object construction.
|
||||
* init() implementations of parent types may eventually call this function,
|
||||
* each with its corresponding GType, which could leave a child
|
||||
* implementation with a wrong widget type in the widget path
|
||||
*/
|
||||
if (priv->path &&
|
||||
G_OBJECT_TYPE (widget) != gtk_widget_path_get_object_type (priv->path))
|
||||
{
|
||||
gtk_widget_path_free (priv->path);
|
||||
priv->path = NULL;
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (gtk_widget_parent_class)->constructed (object);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_widget_dispose (GObject *object)
|
||||
{
|
||||
@ -14024,18 +14047,6 @@ gtk_widget_get_path (GtkWidget *widget)
|
||||
{
|
||||
g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
|
||||
|
||||
/* As strange as it may seem, this may happen on object construction.
|
||||
* init() implementations of parent types may eventually call this function,
|
||||
* each with its corresponding GType, which could leave a child
|
||||
* implementation with a wrong widget type in the widget path
|
||||
*/
|
||||
if (widget->priv->path &&
|
||||
G_OBJECT_TYPE (widget) != gtk_widget_path_get_object_type (widget->priv->path))
|
||||
{
|
||||
gtk_widget_path_free (widget->priv->path);
|
||||
widget->priv->path = NULL;
|
||||
}
|
||||
|
||||
if (!widget->priv->path)
|
||||
{
|
||||
GtkWidget *parent;
|
||||
|
Loading…
Reference in New Issue
Block a user