summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2022-07-05 06:39:29 +0200
committerBenjamin Otte <otte@redhat.com>2022-07-05 07:54:24 +0200
commit3adc287703d55c5f880e036f03540cbb74479e9f (patch)
treed71d471e942ff6f6d124932064da1e579b58e6ea
parent290d6b6de47dea8a2e0c7a36fb1e250e39ac4ea1 (diff)
downloadgtk+-3adc287703d55c5f880e036f03540cbb74479e9f.tar.gz
canvas: Give variable vectors a name
And use it when printing.
-rw-r--r--gtk/gtkcanvas.c2
-rw-r--r--gtk/gtkcanvasbox.c19
-rw-r--r--gtk/gtkcanvasboxprivate.h4
-rw-r--r--gtk/gtkcanvasitem.c12
-rw-r--r--gtk/gtkcanvasvectorimpl.c26
-rw-r--r--gtk/gtkcanvasvectorprivate.h5
6 files changed, 49 insertions, 19 deletions
diff --git a/gtk/gtkcanvas.c b/gtk/gtkcanvas.c
index 069e8eab99..2d5527ea08 100644
--- a/gtk/gtkcanvas.c
+++ b/gtk/gtkcanvas.c
@@ -381,7 +381,7 @@ gtk_canvas_init (GtkCanvas *self)
{
self->item_lookup = g_hash_table_new (g_direct_hash, g_direct_equal);
- gtk_canvas_vector_init_variable (&self->viewport_size);
+ gtk_canvas_vector_init_variable (&self->viewport_size, "viewport.size");
}
/**
diff --git a/gtk/gtkcanvasbox.c b/gtk/gtkcanvasbox.c
index 72fe87c428..56388c2bab 100644
--- a/gtk/gtkcanvasbox.c
+++ b/gtk/gtkcanvasbox.c
@@ -64,11 +64,22 @@ gtk_canvas_box_finish (GtkCanvasBox *self)
}
void
-gtk_canvas_box_init_variable (GtkCanvasBox *self)
+gtk_canvas_box_init_variable (GtkCanvasBox *self,
+ const char *format,
+ ...)
{
- gtk_canvas_vector_init_variable (&self->point);
- gtk_canvas_vector_init_variable (&self->size);
- gtk_canvas_vector_init_variable (&self->origin);
+ char *name;
+ va_list args;
+
+ va_start (args, format);
+ name = g_strdup_vprintf (format, args);
+ va_end (args);
+
+ gtk_canvas_vector_init_variable (&self->point, "%s.point", name);
+ gtk_canvas_vector_init_variable (&self->size, "%s.size", name);
+ gtk_canvas_vector_init_variable (&self->origin, "%s.origin", name);
+
+ g_free (name);
}
void
diff --git a/gtk/gtkcanvasboxprivate.h b/gtk/gtkcanvasboxprivate.h
index 7aa13e61a3..1d6256495e 100644
--- a/gtk/gtkcanvasboxprivate.h
+++ b/gtk/gtkcanvasboxprivate.h
@@ -23,7 +23,9 @@ void gtk_canvas_box_init_copy (GtkCanvasBox
const GtkCanvasBox *source);
void gtk_canvas_box_finish (GtkCanvasBox *self);
-void gtk_canvas_box_init_variable (GtkCanvasBox *self);
+void gtk_canvas_box_init_variable (GtkCanvasBox *self,
+ const char *format,
+ ...) G_GNUC_PRINTF(2,3);
void gtk_canvas_box_update_variable (GtkCanvasBox *self,
const GtkCanvasBox *other);
diff --git a/gtk/gtkcanvasitem.c b/gtk/gtkcanvasitem.c
index 893f505b98..0ed91e7291 100644
--- a/gtk/gtkcanvasitem.c
+++ b/gtk/gtkcanvasitem.c
@@ -205,17 +205,17 @@ gtk_canvas_item_class_init (GtkCanvasItemClass *klass)
static void
gtk_canvas_item_init (GtkCanvasItem *self)
{
- int i;
-
- for (i = 0; i < 4; i++)
- gtk_canvas_vector_init_variable (&self->size_vecs[i]);
+ gtk_canvas_vector_init_variable (&self->size_vecs[0], "item%p.min_for_min", self);
+ gtk_canvas_vector_init_variable (&self->size_vecs[1], "item%p.min_for_nat", self);
+ gtk_canvas_vector_init_variable (&self->size_vecs[2], "item%p.nat_for_min", self);
+ gtk_canvas_vector_init_variable (&self->size_vecs[3], "item%p.nat_for_nat", self);
gtk_canvas_vector_init_constant (&self->bounds.point, 0, 0);
gtk_canvas_vector_init_copy (&self->bounds.size, &self->size_vecs[GTK_CANVAS_ITEM_MEASURE_NAT_FOR_NAT]);
gtk_canvas_vector_init_constant (&self->bounds.origin, 0.5, 0.5);
- gtk_canvas_box_init_variable (&self->bounds_var);
+ gtk_canvas_box_init_variable (&self->bounds_var, "item%p.bounds", self);
gtk_canvas_box_update_variable (&self->bounds_var, &self->bounds);
- gtk_canvas_box_init_variable (&self->allocation_var);
+ gtk_canvas_box_init_variable (&self->allocation_var, "item%p.allocation", self);
}
GtkCanvasItem *
diff --git a/gtk/gtkcanvasvectorimpl.c b/gtk/gtkcanvasvectorimpl.c
index dd57bfb74b..6b1d657b38 100644
--- a/gtk/gtkcanvasvectorimpl.c
+++ b/gtk/gtkcanvasvectorimpl.c
@@ -361,6 +361,7 @@ gtk_canvas_vector_init_multiply (GtkCanvasVector *vector,
static void
gtk_canvas_vector_init_variable_with_variable (GtkCanvasVector *vector,
+ const char *name,
GtkCanvasVector *variable);
static void
@@ -369,7 +370,9 @@ gtk_canvas_vector_variable_copy (GtkCanvasVector *vector,
{
const GtkCanvasVectorVariable *source = &source_vector->variable;
- gtk_canvas_vector_init_variable_with_variable (vector, g_rc_box_acquire (source->variable));
+ gtk_canvas_vector_init_variable_with_variable (vector,
+ source->name,
+ g_rc_box_acquire (source->variable));
}
static void
@@ -377,6 +380,7 @@ gtk_canvas_vector_variable_finish (GtkCanvasVector *vector)
{
const GtkCanvasVectorVariable *self = &vector->variable;
+ g_free (self->name);
g_rc_box_release (self->variable);
}
@@ -386,9 +390,7 @@ gtk_canvas_vector_variable_print (const GtkCanvasVector *vector,
{
const GtkCanvasVectorVariable *self = &vector->variable;
- g_string_append (string, "(");
- gtk_canvas_vector_print (self->variable, string);
- g_string_append (string, ")");
+ g_string_append (string, self->name);
}
static gboolean
@@ -411,24 +413,36 @@ static const GtkCanvasVectorClass GTK_CANVAS_VECTOR_VARIABLE_CLASS =
static void
gtk_canvas_vector_init_variable_with_variable (GtkCanvasVector *vector,
+ const char *name,
GtkCanvasVector *variable)
{
GtkCanvasVectorVariable *self = &vector->variable;
self->class = &GTK_CANVAS_VECTOR_VARIABLE_CLASS;
+ self->name = g_strdup (name);
self->variable = variable;
}
void
-gtk_canvas_vector_init_variable (GtkCanvasVector *vector)
+gtk_canvas_vector_init_variable (GtkCanvasVector *vector,
+ const char *format,
+ ...)
{
GtkCanvasVector *variable;
+ char *name;
+ va_list args;
variable = g_rc_box_new (GtkCanvasVector);
gtk_canvas_vector_init_invalid (variable);
- gtk_canvas_vector_init_variable_with_variable (vector, variable);
+ va_start (args, format);
+ name = g_strdup_vprintf (format, args);
+ va_end (args);
+
+ gtk_canvas_vector_init_variable_with_variable (vector, name, variable);
+
+ g_free (name);
}
GtkCanvasVector *
diff --git a/gtk/gtkcanvasvectorprivate.h b/gtk/gtkcanvasvectorprivate.h
index 596fc079ed..86171e62fb 100644
--- a/gtk/gtkcanvasvectorprivate.h
+++ b/gtk/gtkcanvasvectorprivate.h
@@ -63,6 +63,7 @@ struct _GtkCanvasVectorVariable
{
const GtkCanvasVectorClass *class;
+ char *name;
/* a GtkRcBox */
GtkCanvasVector *variable;
};
@@ -102,7 +103,9 @@ void gtk_canvas_vector_init_multiply (GtkCanvasVector
const GtkCanvasVector *a,
const GtkCanvasVector *b);
-void gtk_canvas_vector_init_variable (GtkCanvasVector *vector);
+void gtk_canvas_vector_init_variable (GtkCanvasVector *vector,
+ const char *format,
+ ...) G_GNUC_PRINTF(2,3);
GtkCanvasVector * gtk_canvas_vector_get_variable (GtkCanvasVector *vector);
gboolean gtk_canvas_vector_is_invalid (GtkCanvasVector *vector);