[mutter] clutter/actor: Respect CONTENT_SIZE request mode in get_preferred_* APIs
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] clutter/actor: Respect CONTENT_SIZE request mode in get_preferred_* APIs
- Date: Mon, 27 Jan 2020 15:06:58 +0000 (UTC)
commit f2f89d9b46e655e65dd5e0cbcfe1d71597f673b8
Author: Jonas Dreßler <verdre v0yd nl>
Date: Sat Oct 26 09:44:01 2019 +0200
clutter/actor: Respect CONTENT_SIZE request mode in get_preferred_* APIs
Right now the CONTENT_SIZE request mode for a ClutterActor is only
respected by `clutter_actor_get_preferred_size()`, but not by
`get_preferred_width()` and `get_preferred_height()`. Those simply try
to ask the layout manager and will return [0, 0] for actors without
children. So be consistent and also return the content size in those two
functions.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1019
clutter/clutter/clutter-actor.c | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
---
diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
index 79a92196a..d711f0607 100644
--- a/clutter/clutter/clutter-actor.c
+++ b/clutter/clutter/clutter-actor.c
@@ -9725,6 +9725,23 @@ clutter_actor_get_preferred_width (ClutterActor *self,
return;
}
+ /* if the request mode is CONTENT_SIZE we simply return the content width */
+ if (priv->request_mode == CLUTTER_REQUEST_CONTENT_SIZE)
+ {
+ float content_width = 0.f;
+
+ if (priv->content != NULL)
+ clutter_content_get_preferred_size (priv->content, &content_width, NULL);
+
+ if (min_width_p != NULL)
+ *min_width_p = content_width;
+
+ if (natural_width_p != NULL)
+ *natural_width_p = content_width;
+
+ return;
+ }
+
CLUTTER_SET_PRIVATE_FLAGS (self, CLUTTER_IN_PREF_WIDTH);
/* the remaining cases are:
@@ -9873,6 +9890,23 @@ clutter_actor_get_preferred_height (ClutterActor *self,
return;
}
+ /* if the request mode is CONTENT_SIZE we simply return the content height */
+ if (priv->request_mode == CLUTTER_REQUEST_CONTENT_SIZE)
+ {
+ float content_height = 0.f;
+
+ if (priv->content != NULL)
+ clutter_content_get_preferred_size (priv->content, NULL, &content_height);
+
+ if (min_height_p != NULL)
+ *min_height_p = content_height;
+
+ if (natural_height_p != NULL)
+ *natural_height_p = content_height;
+
+ return;
+ }
+
CLUTTER_SET_PRIVATE_FLAGS (self, CLUTTER_IN_PREF_HEIGHT);
/* the remaining cases are:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]