From c5159e318441ddca79566d872ec781afe5a79dc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Fri, 29 May 2020 17:28:50 +0200 Subject: [PATCH] clutter/text: Enable relayout on resource-scale changes ClutterText needs a new allocation on resource-scale changes, which we added proper support for in the last commit, so use that API for ClutterText. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1276 --- clutter/clutter/clutter-text.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/clutter/clutter/clutter-text.c b/clutter/clutter/clutter-text.c index b9241d7c4..2fef356cd 100644 --- a/clutter/clutter/clutter-text.c +++ b/clutter/clutter/clutter-text.c @@ -3041,15 +3041,31 @@ clutter_text_has_overlaps (ClutterActor *self) return clutter_text_should_draw_cursor ((ClutterText *) self); } +static float +clutter_text_calculate_resource_scale (ClutterActor *actor, + int phase) +{ + ClutterActorClass *parent_class = CLUTTER_ACTOR_CLASS (clutter_text_parent_class); + float new_resource_scale; + + new_resource_scale = parent_class->calculate_resource_scale (actor, phase); + + if (phase == 1) + return MAX (new_resource_scale, clutter_actor_get_real_resource_scale (actor)); + + return new_resource_scale; +} + static void clutter_text_resource_scale_changed (ClutterActor *actor) { - ClutterText *self = CLUTTER_TEXT (actor); - ClutterTextPrivate *priv = self->priv; + ClutterText *text = CLUTTER_TEXT (actor); + ClutterTextPrivate *priv = text->priv; g_clear_pointer (&priv->effective_attrs, pango_attr_list_unref); - clutter_text_dirty_cache (self); - clutter_actor_queue_relayout (actor); + clutter_text_dirty_cache (text); + + clutter_actor_queue_immediate_relayout (actor); } static void @@ -3800,6 +3816,7 @@ clutter_text_class_init (ClutterTextClass *klass) actor_class->key_focus_in = clutter_text_key_focus_in; actor_class->key_focus_out = clutter_text_key_focus_out; actor_class->has_overlaps = clutter_text_has_overlaps; + actor_class->calculate_resource_scale = clutter_text_calculate_resource_scale; actor_class->resource_scale_changed = clutter_text_resource_scale_changed; /**