diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index c6345f257c..a1e063f764 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -595,20 +595,13 @@ static void gtk_widget_buildable_custom_finished (GtkBuildable gpointer data); static void gtk_widget_buildable_parser_finished (GtkBuildable *buildable, GtkBuilder *builder); -static void gtk_widget_set_accessible_role (GtkWidget *self, - GtkAccessibleRole role); -static GtkAccessibleRole gtk_widget_get_accessible_role (GtkWidget *self); -static void gtk_widget_set_usize_internal (GtkWidget *widget, +static void gtk_widget_set_usize_internal (GtkWidget *widget, int width, int height); -static gboolean event_surface_is_still_viewable (GdkEvent *event); - -static gboolean gtk_widget_class_get_visible_by_default (GtkWidgetClass *widget_class); - -static void remove_parent_surface_transform_changed_listener (GtkWidget *widget); -static void add_parent_surface_transform_changed_listener (GtkWidget *widget); -static void gtk_widget_queue_compute_expand (GtkWidget *widget); +static void remove_parent_surface_transform_changed_listener (GtkWidget *widget); +static void add_parent_surface_transform_changed_listener (GtkWidget *widget); +static void gtk_widget_queue_compute_expand (GtkWidget *widget); @@ -876,6 +869,50 @@ gtk_widget_real_size_allocate (GtkWidget *widget, { } +static void +gtk_widget_set_accessible_role (GtkWidget *self, + GtkAccessibleRole role) +{ + GtkWidgetPrivate *priv = gtk_widget_get_instance_private (self); + + if (priv->at_context == NULL || !gtk_at_context_is_realized (priv->at_context)) + { + priv->accessible_role = role; + + if (priv->at_context != NULL) + gtk_at_context_set_accessible_role (priv->at_context, role); + + g_object_notify (G_OBJECT (self), "accessible-role"); + } + else + { + char *role_str = g_enum_to_string (GTK_TYPE_ACCESSIBLE_ROLE, priv->accessible_role); + + g_critical ("Widget of type “%s” already has an accessible role of type “%s”", + G_OBJECT_TYPE_NAME (self), + role_str); + g_free (role_str); + } +} + +static GtkAccessibleRole +gtk_widget_get_accessible_role (GtkWidget *self) +{ + GtkWidgetPrivate *priv = gtk_widget_get_instance_private (self); + GtkATContext *context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (self)); + GtkWidgetClassPrivate *class_priv; + + if (context != NULL && gtk_at_context_is_realized (context)) + return gtk_at_context_get_accessible_role (context); + + if (priv->accessible_role != GTK_ACCESSIBLE_ROLE_WIDGET) + return priv->accessible_role; + + class_priv = GTK_WIDGET_GET_CLASS (self)->priv; + + return class_priv->accessible_role; +} + static void gtk_widget_set_property (GObject *object, guint prop_id, @@ -2238,6 +2275,12 @@ _gtk_widget_cancel_sequence (GtkWidget *widget, return handled; } +static gboolean +gtk_widget_class_get_visible_by_default (GtkWidgetClass *widget_class) +{ + return !g_type_is_a (G_TYPE_FROM_CLASS (widget_class), GTK_TYPE_NATIVE); +} + static void gtk_widget_init (GTypeInstance *instance, gpointer g_class) { @@ -4476,34 +4519,6 @@ gtk_widget_handle_crossing (GtkWidget *widget, g_object_unref (widget); } -static gboolean -translate_event_coordinates (GdkEvent *event, - double *x, - double *y, - GtkWidget *widget); - -gboolean -_gtk_widget_captured_event (GtkWidget *widget, - GdkEvent *event, - GtkWidget *target) -{ - gboolean return_val = FALSE; - double x, y; - - g_return_val_if_fail (GTK_IS_WIDGET (widget), TRUE); - g_return_val_if_fail (WIDGET_REALIZED_FOR_EVENT (widget, event), TRUE); - - if (!event_surface_is_still_viewable (event)) - return TRUE; - - translate_event_coordinates (event, &x, &y, widget); - - return_val = gtk_widget_run_controllers (widget, event, target, x, y, GTK_PHASE_CAPTURE); - return_val |= !WIDGET_REALIZED_FOR_EVENT (widget, event); - - return return_val; -} - static gboolean event_surface_is_still_viewable (GdkEvent *event) { @@ -4576,6 +4591,28 @@ translate_event_coordinates (GdkEvent *event, return TRUE; } +gboolean +_gtk_widget_captured_event (GtkWidget *widget, + GdkEvent *event, + GtkWidget *target) +{ + gboolean return_val = FALSE; + double x, y; + + g_return_val_if_fail (GTK_IS_WIDGET (widget), TRUE); + g_return_val_if_fail (WIDGET_REALIZED_FOR_EVENT (widget, event), TRUE); + + if (!event_surface_is_still_viewable (event)) + return TRUE; + + translate_event_coordinates (event, &x, &y, widget); + + return_val = gtk_widget_run_controllers (widget, event, target, x, y, GTK_PHASE_CAPTURE); + return_val |= !WIDGET_REALIZED_FOR_EVENT (widget, event); + + return return_val; +} + gboolean gtk_widget_event (GtkWidget *widget, GdkEvent *event, @@ -10449,12 +10486,6 @@ gtk_widget_class_set_css_name (GtkWidgetClass *widget_class, priv->css_name = g_quark_from_string (name); } -static gboolean -gtk_widget_class_get_visible_by_default (GtkWidgetClass *widget_class) -{ - return !g_type_is_a (G_TYPE_FROM_CLASS (widget_class), GTK_TYPE_NATIVE); -} - /** * gtk_widget_class_get_css_name: * @widget_class: class to set the name on @@ -12630,50 +12661,6 @@ gtk_widget_update_orientation (GtkWidget *widget, -1); } -static void -gtk_widget_set_accessible_role (GtkWidget *self, - GtkAccessibleRole role) -{ - GtkWidgetPrivate *priv = gtk_widget_get_instance_private (self); - - if (priv->at_context == NULL || !gtk_at_context_is_realized (priv->at_context)) - { - priv->accessible_role = role; - - if (priv->at_context != NULL) - gtk_at_context_set_accessible_role (priv->at_context, role); - - g_object_notify (G_OBJECT (self), "accessible-role"); - } - else - { - char *role_str = g_enum_to_string (GTK_TYPE_ACCESSIBLE_ROLE, priv->accessible_role); - - g_critical ("Widget of type “%s” already has an accessible role of type “%s”", - G_OBJECT_TYPE_NAME (self), - role_str); - g_free (role_str); - } -} - -static GtkAccessibleRole -gtk_widget_get_accessible_role (GtkWidget *self) -{ - GtkWidgetPrivate *priv = gtk_widget_get_instance_private (self); - GtkATContext *context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (self)); - GtkWidgetClassPrivate *class_priv; - - if (context != NULL && gtk_at_context_is_realized (context)) - return gtk_at_context_get_accessible_role (context); - - if (priv->accessible_role != GTK_ACCESSIBLE_ROLE_WIDGET) - return priv->accessible_role; - - class_priv = GTK_WIDGET_GET_CLASS (self)->priv; - - return class_priv->accessible_role; -} - /** * gtk_widget_class_set_accessible_role: * @widget_class: a #GtkWidgetClass