summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2019-02-14 08:07:54 +0100
committerTimm Bäder <mail@baedert.org>2019-02-14 08:07:54 +0100
commit59aede163f91fd29caf651dec930c2a21aeaadf6 (patch)
tree29218206e7bb0e230ef47d9c644b2c3da2f8a714
parent427457f030233d8c598fe56a785e1635e5618c0b (diff)
downloadgtk+-59aede163f91fd29caf651dec930c2a21aeaadf6.tar.gz
widget: Remove allocation memberwip/baedert/transforms6
x and y are always 0 now, so only save the size.
-rw-r--r--gtk/gtkwidget.c102
-rw-r--r--gtk/gtkwidgetprivate.h3
-rw-r--r--gtk/gtkwindow.c4
3 files changed, 39 insertions, 70 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 1084139b61..630366907c 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -855,8 +855,8 @@ gtk_widget_real_contains (GtkWidget *widget,
graphene_rect_init (&bounds,
- border.left - padding.left,
- border.top - padding.top,
- priv->allocation.width - margin.left - margin.right,
- priv->allocation.height - margin.top - margin.bottom);
+ priv->allocated_width - margin.left - margin.right,
+ priv->allocated_height - margin.top - margin.bottom);
/* XXX: This misses rounded rects */
return graphene_rect_contains_point (&bounds,
@@ -2870,10 +2870,8 @@ gtk_widget_init (GTypeInstance *instance, gpointer g_class)
priv->visible = gtk_widget_class_get_visible_by_default (g_class);
priv->child_visible = TRUE;
priv->name = NULL;
- priv->allocation.x = -1;
- priv->allocation.y = -1;
- priv->allocation.width = 0;
- priv->allocation.height = 0;
+ priv->allocated_width = 0;
+ priv->allocated_height = 0;
priv->user_alpha = 255;
priv->alpha = 255;
priv->surface = NULL;
@@ -3107,8 +3105,8 @@ gtk_widget_unparent (GtkWidget *widget)
/* Reset the width and height here, to force reallocation if we
* get added back to a new parent.
*/
- priv->allocation.width = 0;
- priv->allocation.height = 0;
+ priv->allocated_width = 0;
+ priv->allocated_height = 0;
if (_gtk_widget_get_realized (widget))
gtk_widget_unrealize (widget);
@@ -4353,14 +4351,15 @@ gtk_widget_size_allocate_transformed (GtkWidget *widget,
}
baseline_changed = priv->allocated_baseline != baseline;
- size_changed = (priv->allocation.width != real_allocation.width ||
- priv->allocation.height != real_allocation.height);
+ size_changed = (priv->allocated_width != real_allocation.width ||
+ priv->allocated_height != real_allocation.height);
transform_changed = memcmp (&final_transform,
&priv->transform,
sizeof (graphene_matrix_t)) != 0;
/* Set the widget allocation to real_allocation now, pass the smaller allocation to the vfunc */
- priv->allocation = real_allocation;
+ priv->allocated_width = real_allocation.width;
+ priv->allocated_height = real_allocation.height;
priv->allocated_baseline = baseline;
priv->transform = final_transform;
priv->has_transform = !graphene_matrix_is_identity (&final_transform);
@@ -4592,8 +4591,6 @@ gtk_widget_translate_coordinatesf (GtkWidget *src_widget,
parent = src_widget;
while (parent != ancestor)
{
- graphene_vec4_t offset;
- int origin_x, origin_y;
GtkBorder margin, border, padding;
GtkCssStyle *style;
@@ -4613,12 +4610,7 @@ gtk_widget_translate_coordinatesf (GtkWidget *src_widget,
graphene_vec4_add (&src_point, &v, &src_point);
}
- origin_x = parent->priv->allocation.x;
- origin_y = parent->priv->allocation.y;
-
graphene_matrix_transform_vec4 (&parent->priv->transform, &src_point, &src_point);
- graphene_vec4_init (&offset, origin_x, origin_y, 0, 0);
- graphene_vec4_add (&src_point, &offset, &src_point);
parent = _gtk_widget_get_parent (parent);
}
@@ -4627,8 +4619,6 @@ gtk_widget_translate_coordinatesf (GtkWidget *src_widget,
for (i = 0; i < dest_depth; i ++)
{
- int origin_x, origin_y;
- graphene_vec4_t offset;
graphene_matrix_t inv_transform;
GtkBorder margin, border, padding;
GtkCssStyle *style;
@@ -4640,12 +4630,6 @@ gtk_widget_translate_coordinatesf (GtkWidget *src_widget,
get_box_border (style, &border);
get_box_padding (style, &padding);
- origin_x = parent->priv->allocation.x;
- origin_y = parent->priv->allocation.y;
-
- graphene_vec4_init (&offset, -origin_x, -origin_y, 0, 0);
- graphene_vec4_add (&src_point, &offset, &src_point);
-
/* TODO: inversion can fail */
graphene_matrix_inverse (&parent->priv->transform, &inv_transform);
graphene_matrix_transform_vec4 (&inv_transform, &src_point, &src_point);
@@ -6260,10 +6244,8 @@ _gtk_widget_set_visible_flag (GtkWidget *widget,
if (!visible)
{
- priv->allocation.x = -1;
- priv->allocation.y = -1;
- priv->allocation.width = 0;
- priv->allocation.height = 0;
+ priv->allocated_width = 0;
+ priv->allocated_height = 0;
memset (&priv->allocated_size, 0, sizeof (priv->allocated_size));
priv->allocated_size_baseline = 0;
gtk_widget_update_paintables (widget);
@@ -6353,8 +6335,8 @@ gtk_widget_set_has_surface (GtkWidget *widget,
priv->no_surface_set = TRUE;
/* GdkSurface has a min size of 1×1 */
- priv->allocation.width = 1;
- priv->allocation.height = 1;
+ priv->allocated_width = 1;
+ priv->allocated_height = 1;
}
/**
@@ -11217,8 +11199,8 @@ gtk_widget_get_allocation (GtkWidget *widget,
*allocation = (GtkAllocation) {
(int)graphene_matrix_get_value (&priv->transform, 3, 0),
(int)graphene_matrix_get_value (&priv->transform, 3, 1),
- priv->allocation.width,
- priv->allocation.height
+ priv->allocated_width,
+ priv->allocated_height
};
}
@@ -11311,8 +11293,8 @@ gtk_widget_pick (GtkWidget *widget,
if (x < -padding.left ||
y < -padding.top ||
- x >= priv->allocation.width - margin.left - margin.right - border.left - border.right - padding.left ||
- y >= priv->allocation.height - margin.top - margin.bottom - border.top - border.bottom - padding.top)
+ x >= priv->allocated_width - margin.left - margin.right - border.left - border.right - padding.left ||
+ y >= priv->allocated_height - margin.top - margin.bottom - border.top - border.bottom - padding.top)
return NULL;
}
break;
@@ -11392,14 +11374,12 @@ gtk_widget_compute_bounds (GtkWidget *widget,
graphene_rect_init (&bounds,
- border.left - padding.left,
- border.top - padding.top,
- priv->allocation.width - margin.left - margin.right,
- priv->allocation.height - margin.top - margin.bottom);
+ priv->allocated_width - margin.left - margin.right,
+ priv->allocated_height - margin.top - margin.bottom);
parent = widget;
while (parent != ancestor)
{
- int origin_x, origin_y;
-
style = gtk_css_node_get_style (parent->priv->cssnode);
get_box_margin (style, &margin);
get_box_border (style, &border);
@@ -11409,11 +11389,7 @@ gtk_widget_compute_bounds (GtkWidget *widget,
margin.left + border.left + padding.left,
margin.top + border.top + padding.top);
- origin_x = parent->priv->allocation.x;
- origin_y = parent->priv->allocation.y;
-
graphene_matrix_transform_bounds (&parent->priv->transform, &bounds, &bounds);
- graphene_rect_offset (&bounds, origin_x, origin_y);
parent = _gtk_widget_get_parent (parent);
}
@@ -11422,7 +11398,6 @@ gtk_widget_compute_bounds (GtkWidget *widget,
for (i = 0; i < dest_depth; i ++)
{
- int origin_x, origin_y;
graphene_matrix_t inv_transform;
parent = dest_path[i];
@@ -11432,11 +11407,6 @@ gtk_widget_compute_bounds (GtkWidget *widget,
get_box_border (style, &border);
get_box_padding (style, &padding);
- origin_x = parent->priv->allocation.x;
- origin_y = parent->priv->allocation.y;
-
- graphene_rect_offset (&bounds, -origin_x, -origin_y);
-
/* TODO: Inversion can fail */
graphene_matrix_inverse (&parent->priv->transform, &inv_transform);
graphene_matrix_transform_bounds (&inv_transform, &bounds, &bounds);
@@ -11466,7 +11436,7 @@ gtk_widget_get_allocated_width (GtkWidget *widget)
g_return_val_if_fail (GTK_IS_WIDGET (widget), 0);
- return priv->allocation.width;
+ return priv->allocated_width;
}
/**
@@ -11484,7 +11454,7 @@ gtk_widget_get_allocated_height (GtkWidget *widget)
g_return_val_if_fail (GTK_IS_WIDGET (widget), 0);
- return priv->allocation.height;
+ return priv->allocated_height;
}
/**
@@ -13136,7 +13106,7 @@ gtk_widget_maybe_add_debug_render_nodes (GtkWidget *widget,
graphene_rect_init (&bounds,
0,
margin.top + border.top + padding.top + baseline,
- priv->allocation.width, 1);
+ priv->allocated_width, 1);
gtk_snapshot_append_color (snapshot,
&red,
&bounds);
@@ -13151,7 +13121,7 @@ gtk_widget_maybe_add_debug_render_nodes (GtkWidget *widget,
graphene_rect_init (&bounds,
0, 0,
- priv->allocation.width, priv->allocation.height);
+ priv->allocated_width, priv->allocated_height);
gtk_snapshot_append_color (snapshot,
&blue,
@@ -13171,7 +13141,6 @@ gtk_widget_create_render_node (GtkWidget *widget,
GtkCssValue *filter_value;
double opacity;
GtkCssStyle *style;
- GtkAllocation allocation;
GtkBorder margin, border, padding;
GtkSnapshot *snapshot;
@@ -13181,11 +13150,10 @@ gtk_widget_create_render_node (GtkWidget *widget,
snapshot = gtk_snapshot_new_with_parent (parent_snapshot);
- gtk_widget_get_allocation (widget, &allocation);
gtk_snapshot_push_debug (snapshot,
"RenderNode for %s %p @ %d x %d",
G_OBJECT_TYPE_NAME (widget), widget,
- allocation.width, allocation.height);
+ priv->allocated_width, priv->allocated_height);
filter_value = _gtk_style_context_peek_property (_gtk_widget_get_style_context (widget), GTK_CSS_PROPERTY_FILTER);
gtk_css_filter_value_push_snapshot (filter_value, snapshot);
@@ -13203,12 +13171,12 @@ gtk_widget_create_render_node (GtkWidget *widget,
gtk_snapshot_offset (snapshot, margin.left, margin.top);
gtk_css_style_snapshot_background (style,
snapshot,
- allocation.width - margin.left - margin.right,
- allocation.height - margin.top - margin.bottom);
+ priv->allocated_width - margin.left - margin.right,
+ priv->allocated_height - margin.top - margin.bottom);
gtk_css_style_snapshot_border (style,
snapshot,
- allocation.width - margin.left - margin.right,
- allocation.height - margin.top - margin.bottom);
+ priv->allocated_width - margin.left - margin.right,
+ priv->allocated_height - margin.top - margin.bottom);
gtk_snapshot_offset (snapshot, - margin.left, - margin.top);
}
@@ -13220,8 +13188,8 @@ gtk_widget_create_render_node (GtkWidget *widget,
gtk_snapshot_push_clip (snapshot,
&GRAPHENE_RECT_INIT (- padding.left,
- padding.top,
- allocation.width - margin.left - margin.right - border.left - border.right,
- allocation.height - margin.top - margin.bottom - border.top - border.bottom));
+ priv->allocated_width - margin.left - margin.right - border.left - border.right,
+ priv->allocated_height - margin.top - margin.bottom - border.top - border.bottom));
}
klass->snapshot (widget, snapshot);
@@ -13233,8 +13201,8 @@ gtk_widget_create_render_node (GtkWidget *widget,
gtk_css_style_snapshot_outline (style,
snapshot,
- allocation.width - margin.left - margin.right,
- allocation.height - margin.top - margin.bottom);
+ priv->allocated_width - margin.left - margin.right,
+ priv->allocated_height - margin.top - margin.bottom);
gtk_snapshot_offset (snapshot, - margin.left, - margin.top);
if (opacity < 1.0)
@@ -13827,7 +13795,7 @@ gtk_widget_get_width (GtkWidget *widget)
get_box_border (style, &border);
get_box_padding (style, &padding);
- return priv->allocation.width -
+ return priv->allocated_width -
margin.left - margin.right -
border.left - border.right -
padding.left - padding.right;
@@ -13857,7 +13825,7 @@ gtk_widget_get_height (GtkWidget *widget)
get_box_border (style, &border);
get_box_padding (style, &padding);
- return priv->allocation.height -
+ return priv->allocated_height -
margin.top - margin.bottom -
border.top - border.bottom -
padding.top - padding.bottom;
diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h
index 72cfa868da..ee281d9d95 100644
--- a/gtk/gtkwidgetprivate.h
+++ b/gtk/gtkwidgetprivate.h
@@ -141,7 +141,8 @@ struct _GtkWidgetPrivate
/* The widget's allocated size */
GtkAllocation allocated_size;
gint allocated_size_baseline;
- GtkAllocation allocation;
+ int allocated_width;
+ int allocated_height;
gint allocated_baseline;
graphene_matrix_t allocated_transform;
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 24653650d3..42e487bc8b 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -6388,8 +6388,8 @@ gtk_window_realize (GtkWidget *widget)
gtk_widget_get_allocation (widget, &allocation);
/* ensure widget tree is properly size allocated */
- if (allocation.x == -1 &&
- allocation.y == -1 &&
+ if (allocation.x == 0 &&
+ allocation.y == 0 &&
allocation.width == 1 &&
allocation.height == 1)
{