summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2018-11-29 10:39:28 +0100
committerTimm Bäder <mail@baedert.org>2019-02-14 06:57:23 +0100
commitbcd6f0b75f8f02c476060e58ebec8ce93f111a5a (patch)
treec465d81b3f52966521da60ade05b087997476a40
parent57cd3391f60267290a508df135b9692ca41fafa2 (diff)
downloadgtk+-bcd6f0b75f8f02c476060e58ebec8ce93f111a5a.tar.gz
testwidgettransforms: Set transformation in size_allocate
-rw-r--r--tests/testwidgettransforms.c90
1 files changed, 34 insertions, 56 deletions
diff --git a/tests/testwidgettransforms.c b/tests/testwidgettransforms.c
index 1da36cc7b8..fe5e182353 100644
--- a/tests/testwidgettransforms.c
+++ b/tests/testwidgettransforms.c
@@ -106,8 +106,30 @@ gtk_transform_tester_size_allocate (GtkWidget *widget,
int baseline)
{
GtkTransformTester *self = (GtkTransformTester *)widget;
+ int w, h;
- gtk_widget_size_allocate (self->test_widget, &(GtkAllocation){ 0, 0, width, height }, -1);
+ if (!self->test_widget)
+ return;
+
+ scale += 2.5f;
+
+ gtk_widget_measure (self->test_widget, GTK_ORIENTATION_HORIZONTAL, -1,
+ &w, NULL, NULL, NULL);
+ gtk_widget_measure (self->test_widget, GTK_ORIENTATION_VERTICAL, w,
+ &h, NULL, NULL, NULL);
+
+ graphene_matrix_init_identity (&global_transform);
+ graphene_matrix_translate (&global_transform, &(graphene_point3d_t){ -w/2.0f, -h/2.0f, 0});
+
+ graphene_matrix_rotate (&global_transform, scale,
+ graphene_vec3_z_axis ());
+
+ graphene_matrix_translate (&global_transform, &(graphene_point3d_t){ width / 2.0f, height / 2.0f, 0});
+
+ gtk_widget_size_allocate_transformed (self->test_widget,
+ w, h,
+ -1,
+ &global_transform);
}
static void
@@ -234,6 +256,16 @@ gtk_transform_tester_class_init (GtkTransformTesterClass *klass)
gtk_widget_class_set_css_name (widget_class, "test");
}
+static gboolean
+tick_cb (GtkWidget *widget,
+ GdkFrameClock *frame_clock,
+ gpointer user_data)
+{
+ gtk_widget_queue_allocate (widget);
+
+ return G_SOURCE_CONTINUE;
+}
+
static void
gtk_transform_tester_set_test_widget (GtkTransformTester *self,
GtkWidget *test_widget)
@@ -242,60 +274,8 @@ gtk_transform_tester_set_test_widget (GtkTransformTester *self,
self->test_widget = test_widget;
gtk_widget_set_parent (test_widget, (GtkWidget *)self);
-}
-
-static gboolean
-transform_func (gpointer user_data)
-{
- GtkAllocation alloc;
-
- scale += 2.5f;
- gtk_widget_get_allocation (test_widget, &alloc);
-
- graphene_matrix_init_identity (&global_transform);
- graphene_matrix_translate (&global_transform,
- &(graphene_point3d_t){
- /*- alloc.width,*/
- /*0,*/
- - alloc.width / 2,
- - alloc.height / 2,
- 0}
- );
-
- graphene_matrix_rotate (&global_transform, scale,
- graphene_vec3_z_axis ());
-
- graphene_matrix_translate (&global_transform,
- &(graphene_point3d_t){
- alloc.width / 2,
- alloc.height /2,
- 0}
- );
-
- /*graphene_matrix_init_scale (&global_transform, 2, 2, 1);*/
-
-
- gtk_widget_set_transform (test_widget, &global_transform);
-
-
-
-
-
- /*graphene_matrix_init_scale (&global_transform, 0.5, 1, 1);*/
- /*graphene_matrix_translate (&global_transform,*/
- /*&(graphene_point3d_t){*/
- /*alloc.width / 2, 0, 0*/
- /*});*/
-
-
-
- /*gtk_widget_set_transform (test_child, &global_transform);*/
-
-
- gtk_widget_queue_draw (test_widget);
-
- return G_SOURCE_CONTINUE;
+ gtk_widget_add_tick_callback (GTK_WIDGET (self), tick_cb, NULL, NULL);
}
static void
@@ -354,8 +334,6 @@ main (int argc, char **argv)
gtk_transform_tester_set_test_widget (GTK_TRANSFORM_TESTER (transform_tester), test_widget);
- g_timeout_add (16, transform_func, NULL);
-
gtk_widget_set_vexpand (transform_tester, TRUE);
gtk_container_add (GTK_CONTAINER (box), transform_tester);
gtk_container_add (GTK_CONTAINER (box), matrix_chooser);