diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt index 24f24a6347..be2b93509b 100644 --- a/docs/reference/gtk/gtk4-sections.txt +++ b/docs/reference/gtk/gtk4-sections.txt @@ -4328,7 +4328,6 @@ gtk_widget_get_allocated_baseline gtk_widget_get_allocated_size gtk_widget_get_width gtk_widget_get_height -gtk_widget_get_clip gtk_widget_contains gtk_widget_pick gtk_widget_get_can_default diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 4ce4ad2854..89fbbb1782 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -693,7 +693,6 @@ static gboolean event_surface_is_still_viewable (const GdkEvent *event); static void gtk_widget_update_input_shape (GtkWidget *widget); static gboolean gtk_widget_class_get_visible_by_default (GtkWidgetClass *widget_class); -static void gtk_widget_set_clip (GtkWidget *widget, const GtkAllocation *clip); static void _gtk_widget_propagate_hierarchy_changed (GtkWidget *widget, GtkWidget *previous_toplevel); @@ -2996,7 +2995,6 @@ gtk_widget_init (GTypeInstance *instance, gpointer g_class) priv->allocation.y = -1; priv->allocation.width = 0; priv->allocation.height = 0; - priv->clip = priv->allocation; priv->user_alpha = 255; priv->alpha = 255; priv->surface = NULL; @@ -4262,7 +4260,6 @@ gtk_widget_size_allocate (GtkWidget *widget, { GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget); GdkRectangle real_allocation; - GdkRectangle old_clip; GdkRectangle adjusted_allocation; gboolean alloc_needed; gboolean size_changed; @@ -4330,7 +4327,6 @@ gtk_widget_size_allocate (GtkWidget *widget, /* Preserve request/allocate ordering */ priv->alloc_needed = FALSE; - old_clip = priv->clip; real_allocation = *allocation; priv->allocated_size = *allocation; @@ -4441,9 +4437,6 @@ gtk_widget_size_allocate (GtkWidget *widget, if (!alloc_needed && !size_changed && !baseline_changed) { - gtk_widget_set_clip (widget, &priv->reported_clip); - *out_clip = priv->clip; - /* Still have to move the window... */ if (_gtk_widget_get_realized (widget) && _gtk_widget_get_has_surface (widget)) @@ -4489,20 +4482,11 @@ gtk_widget_size_allocate (GtkWidget *widget, } #endif - priv->reported_clip = new_clip; - gtk_widget_set_clip (widget, &priv->reported_clip); - *out_clip = priv->clip; - gtk_widget_ensure_resize (widget); priv->alloc_needed = FALSE; priv->alloc_needed_on_child = FALSE; check_clip: - size_changed |= (old_clip.width != priv->clip.width || - old_clip.height != priv->clip.height); - position_changed |= (old_clip.x != priv->clip.x || - old_clip.y != priv->clip.y); - if (position_changed || size_changed || baseline_changed) gtk_widget_queue_draw (widget); @@ -5294,10 +5278,9 @@ gtk_widget_draw_internal (GtkWidget *widget, return; cairo_rectangle (cr, - widget->priv->clip.x - widget->priv->allocation.x, - widget->priv->clip.y - widget->priv->allocation.y, - widget->priv->clip.width, - widget->priv->clip.height); + 0, 0, + widget->priv->allocation.width, + widget->priv->allocation.height); cairo_clip (cr); if (gdk_cairo_get_clip_rectangle (cr, NULL)) @@ -6782,7 +6765,6 @@ _gtk_widget_set_visible_flag (GtkWidget *widget, priv->allocation.y = -1; priv->allocation.width = 0; priv->allocation.height = 0; - memset (&priv->clip, 0, sizeof (priv->clip)); memset (&priv->allocated_size, 0, sizeof (priv->allocated_size)); priv->allocated_size_baseline = 0; gtk_widget_invalidate_paintable_size (widget); @@ -11616,112 +11598,6 @@ gtk_widget_get_has_tooltip (GtkWidget *widget) return widget->priv->has_tooltip; } -/** - * gtk_widget_get_clip: - * @widget: a #GtkWidget - * @clip: (out): a pointer to a #GtkAllocation to copy to - * - * Retrieves the widget’s clip area. - * - * The clip area is the area in which all of @widget's drawing will - * happen. Other toolkits call it the bounding box. - * - * Historically, in GTK+ the clip area has been equal to the allocation - * retrieved via gtk_widget_get_allocation(). - */ -void -gtk_widget_get_clip (GtkWidget *widget, - GtkAllocation *clip) -{ - GtkWidgetPrivate *priv; - - g_return_if_fail (GTK_IS_WIDGET (widget)); - g_return_if_fail (clip != NULL); - - priv = widget->priv; - - *clip = priv->clip; -} - -/** - * gtk_widget_set_clip: - * @widget: a #GtkWidget - * @clip: a pointer to a #GtkAllocation to copy from - * - * Sets the widget’s clip. This must not be used directly, - * but from within a widget’s size_allocate method. - * - * The clip set should be the area that @widget draws on. If @widget is a - * #GtkContainer, the area must contain all children's clips. - * - * If this function is not called by @widget during a ::size-allocate handler, - * the clip will be set to @widget's allocation. - */ -static void -gtk_widget_set_clip (GtkWidget *widget, - const GtkAllocation *clip) -{ - GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget); - GtkBorder shadow; - GtkBorder margin; - GtkCssStyle *style; - GdkRectangle new_clip; - GtkAllocation allocation; - - g_return_if_fail (GTK_IS_WIDGET (widget)); - g_return_if_fail (_gtk_widget_get_visible (widget) || _gtk_widget_is_toplevel (widget)); - g_return_if_fail (clip != NULL); - - style = gtk_css_node_get_style (priv->cssnode); - get_box_margin (style, &margin); - _gtk_css_shadows_value_get_extents (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BOX_SHADOW), &shadow); - - /* The given clip is in @widget's coordinates, but we need it to be in the parent's coordinates, - * just like priv->allocation is. So first we transform the clip, then union it with - * the allocation (minus css margins) and then we add the box shadow size. */ - new_clip = *clip; - new_clip.x += priv->allocation.x + margin.left; - new_clip.y += priv->allocation.y + margin.top; - - allocation = priv->allocation; - allocation.x += margin.left; - allocation.y += margin.top; - allocation.width -= margin.left + margin.right; - allocation.height -= margin.top + margin.bottom; - - gdk_rectangle_union (&allocation, &new_clip, &priv->clip); - priv->clip.x -= shadow.left; - priv->clip.y -= shadow.top; - priv->clip.width += shadow.left + shadow.right; - priv->clip.height += shadow.top + shadow.bottom; - -#ifdef G_ENABLE_DEBUG - if (GTK_DISPLAY_DEBUG_CHECK (gtk_widget_get_display (widget), GEOMETRY)) - { - gint depth; - GtkWidget *parent; - const gchar *name; - const char *cssname; - - depth = 0; - parent = widget; - while (parent) - { - depth++; - parent = _gtk_widget_get_parent (parent); - } - - name = g_type_name (G_OBJECT_TYPE (G_OBJECT (widget))); - cssname = gtk_css_node_get_name (priv->cssnode); - g_message ("gtk_widget_set_clip: %s %s %d %d %d %d", - name, - cssname, - priv->clip.x, priv->clip.y, - priv->clip.width, priv->clip.height); - } -#endif /* G_ENABLE_DEBUG */ -} - /** * gtk_widget_get_allocated_size: * @widget: a #GtkWidget @@ -13651,37 +13527,6 @@ gtk_widget_maybe_add_debug_render_nodes (GtkWidget *widget, priv->highlight_resize = FALSE; gtk_widget_queue_draw (widget); } - if (GTK_DISPLAY_DEBUG_CHECK (display, GEOMETRY)) - { - GdkRGBA clip_color = {0, 0, 1, 0.7}; - GtkAllocation offset_clip; - graphene_rect_t bounds; - - offset_clip = priv->clip; - offset_clip.x -= priv->allocation.x; - offset_clip.y -= priv->allocation.y; - - graphene_rect_init (&bounds, - offset_clip.x, offset_clip.y, - offset_clip.width, 1); - gtk_snapshot_append_color (snapshot, &clip_color, &bounds, "Clip Top"); - - graphene_rect_init (&bounds, - offset_clip.x, offset_clip.y + offset_clip.height - 1, - offset_clip.width, 1); - gtk_snapshot_append_color (snapshot, &clip_color, &bounds, "Clip bottom"); - - graphene_rect_init (&bounds, - offset_clip.x, offset_clip.y + 1, - 1, offset_clip.height - 2); - gtk_snapshot_append_color (snapshot, &clip_color, &bounds, "Clip left"); - - graphene_rect_init (&bounds, - offset_clip.x + offset_clip.width - 1, offset_clip.y + 1, - 1, offset_clip.height - 2); - gtk_snapshot_append_color (snapshot, &clip_color, &bounds, "Clip right"); - - } #endif } @@ -13723,9 +13568,10 @@ gtk_widget_create_render_node (GtkWidget *widget, graphene_rect_t bounds; cairo_rectangle_int_t offset_clip; - offset_clip = priv->clip; - offset_clip.x -= priv->allocation.x; - offset_clip.y -= priv->allocation.y; + offset_clip.x = 0; + offset_clip.y = 0; + offset_clip.width = priv->allocation.width; + offset_clip.height = priv->allocation.height; graphene_rect_init (&bounds, offset_clip.x, @@ -13774,9 +13620,10 @@ gtk_widget_create_render_node (GtkWidget *widget, graphene_rect_t bounds; cairo_rectangle_int_t offset_clip; - offset_clip = priv->clip; - offset_clip.x -= priv->allocation.x; - offset_clip.y -= priv->allocation.y; + offset_clip.x = 0; + offset_clip.y = 0; + offset_clip.width = priv->allocation.width; + offset_clip.height = priv->allocation.height; graphene_rect_init (&bounds, offset_clip.x, diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h index 6af890236b..a473aecd77 100644 --- a/gtk/gtkwidget.h +++ b/gtk/gtkwidget.h @@ -635,10 +635,6 @@ int gtk_widget_get_width (GtkWidget *widget); GDK_AVAILABLE_IN_ALL int gtk_widget_get_height (GtkWidget *widget); -GDK_AVAILABLE_IN_ALL -void gtk_widget_get_clip (GtkWidget *widget, - GtkAllocation *clip); - GDK_AVAILABLE_IN_ALL gboolean gtk_widget_child_focus (GtkWidget *widget, GtkDirectionType direction); diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h index 2cc974a5e1..971292ad38 100644 --- a/gtk/gtkwidgetprivate.h +++ b/gtk/gtkwidgetprivate.h @@ -139,8 +139,6 @@ struct _GtkWidgetPrivate GtkAllocation allocated_size; gint allocated_size_baseline; GtkAllocation allocation; - GtkAllocation clip; - GtkAllocation reported_clip; gint allocated_baseline; /* The widget's requested sizes */ diff --git a/gtk/inspector/misc-info.c b/gtk/inspector/misc-info.c index 6d7ddb2377..cdd9510123 100644 --- a/gtk/inspector/misc-info.c +++ b/gtk/inspector/misc-info.c @@ -57,8 +57,6 @@ struct _GtkInspectorMiscInfoPrivate { GtkWidget *allocated_size; GtkWidget *baseline_row; GtkWidget *baseline; - GtkWidget *clip_area_row; - GtkWidget *clip_area; GtkWidget *frame_clock_row; GtkWidget *frame_clock; GtkWidget *frame_clock_button; @@ -142,7 +140,6 @@ allocation_changed (GtkWidget *w, GtkInspectorMiscInfo *sl) { GtkAllocation alloc; - GtkAllocation clip; gchar *size_label; GEnumClass *class; GEnumValue *value; @@ -159,14 +156,6 @@ allocation_changed (GtkWidget *w, gtk_label_set_label (GTK_LABEL (sl->priv->baseline), size_label); g_free (size_label); - gtk_widget_get_clip (w, &clip); - - size_label = g_strdup_printf ("%d × %d +%d +%d", - clip.width, clip.height, - clip.x, clip.y); - gtk_label_set_label (GTK_LABEL (sl->priv->clip_area), size_label); - g_free (size_label); - class = G_ENUM_CLASS (g_type_class_ref (GTK_TYPE_SIZE_REQUEST_MODE)); value = g_enum_get_value (class, gtk_widget_get_request_mode (w)); gtk_label_set_label (GTK_LABEL (sl->priv->request_mode), value->value_nick); @@ -455,7 +444,6 @@ gtk_inspector_misc_info_set_object (GtkInspectorMiscInfo *sl, gtk_widget_show (sl->priv->request_mode_row); gtk_widget_show (sl->priv->allocated_size_row); gtk_widget_show (sl->priv->baseline_row); - gtk_widget_show (sl->priv->clip_area_row); gtk_widget_show (sl->priv->mnemonic_label_row); gtk_widget_show (sl->priv->tick_callback_row); gtk_widget_show (sl->priv->accessible_role_row); @@ -480,7 +468,6 @@ gtk_inspector_misc_info_set_object (GtkInspectorMiscInfo *sl, gtk_widget_hide (sl->priv->mnemonic_label_row); gtk_widget_hide (sl->priv->allocated_size_row); gtk_widget_hide (sl->priv->baseline_row); - gtk_widget_hide (sl->priv->clip_area_row); gtk_widget_hide (sl->priv->tick_callback_row); gtk_widget_hide (sl->priv->accessible_role_row); gtk_widget_hide (sl->priv->accessible_name_row); @@ -635,8 +622,6 @@ gtk_inspector_misc_info_class_init (GtkInspectorMiscInfoClass *klass) gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, allocated_size); gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, baseline_row); gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, baseline); - gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, clip_area_row); - gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, clip_area); gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, frame_clock_row); gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, frame_clock); gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, frame_clock_button); diff --git a/gtk/inspector/misc-info.ui b/gtk/inspector/misc-info.ui index c3c1206cd2..d82b73f272 100644 --- a/gtk/inspector/misc-info.ui +++ b/gtk/inspector/misc-info.ui @@ -299,32 +299,6 @@ - - - 0 - - - 10 - 40 - - - Clip Area - start - baseline - 0 - 1 - - - - - end - baseline - - - - - - 0