st: Use consistent type for properties/getters

gjs now optimizes property accesses if possible, by calling the
corresponding getter/setter method. For this to work, the method
not only has to exist (obviously), but also match the type of
the corresponding property.

Both `Label` and `Entry` currently define their `clutter-text`
property as `Clutter.Text`, while the corresponding getter
returns the more generic `Clutter.Actor`.

Fix that so that both property and getter use the more specific type.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3620>
This commit is contained in:
Florian Müllner 2025-01-23 00:06:17 +01:00 committed by Marge Bot
parent f79e5ad42b
commit 73928c9b29
5 changed files with 17 additions and 13 deletions

View File

@ -1165,12 +1165,16 @@ st_entry_set_text (StEntry *entry,
* *
* Returns: (transfer none): the #ClutterText used by @entry * Returns: (transfer none): the #ClutterText used by @entry
*/ */
ClutterActor* ClutterText *
st_entry_get_clutter_text (StEntry *entry) st_entry_get_clutter_text (StEntry *entry)
{ {
StEntryPrivate *priv;
g_return_val_if_fail (ST_ENTRY (entry), NULL); g_return_val_if_fail (ST_ENTRY (entry), NULL);
return ((StEntryPrivate *)ST_ENTRY_PRIV (entry))->entry; priv = st_entry_get_instance_private (entry);
return CLUTTER_TEXT (priv->entry);
} }
/** /**

View File

@ -43,7 +43,7 @@ StWidget *st_entry_new (const gchar *text);
const gchar *st_entry_get_text (StEntry *entry); const gchar *st_entry_get_text (StEntry *entry);
void st_entry_set_text (StEntry *entry, void st_entry_set_text (StEntry *entry,
const gchar *text); const gchar *text);
ClutterActor *st_entry_get_clutter_text (StEntry *entry); ClutterText *st_entry_get_clutter_text (StEntry *entry);
void st_entry_set_hint_text (StEntry *entry, void st_entry_set_hint_text (StEntry *entry,
const gchar *text); const gchar *text);

View File

@ -429,12 +429,12 @@ st_label_set_text (StLabel *label,
* Returns: (transfer none): the #ClutterText used by #StLabel. The actor * Returns: (transfer none): the #ClutterText used by #StLabel. The actor
* is owned by the #StLabel and should not be destroyed by the application. * is owned by the #StLabel and should not be destroyed by the application.
*/ */
ClutterActor* ClutterText *
st_label_get_clutter_text (StLabel *label) st_label_get_clutter_text (StLabel *label)
{ {
g_return_val_if_fail (ST_LABEL (label), NULL); g_return_val_if_fail (ST_LABEL (label), NULL);
return label->priv->label; return CLUTTER_TEXT (label->priv->label);
} }

View File

@ -44,7 +44,7 @@ StWidget * st_label_new (const gchar *text);
const gchar * st_label_get_text (StLabel *label); const gchar * st_label_get_text (StLabel *label);
void st_label_set_text (StLabel *label, void st_label_set_text (StLabel *label,
const gchar *text); const gchar *text);
ClutterActor * st_label_get_clutter_text (StLabel *label); ClutterText * st_label_get_clutter_text (StLabel *label);
G_END_DECLS G_END_DECLS

View File

@ -205,10 +205,10 @@ clutter_text_password_char_cb (GObject *object,
gpointer user_data) gpointer user_data)
{ {
StPasswordEntry *entry = ST_PASSWORD_ENTRY (user_data); StPasswordEntry *entry = ST_PASSWORD_ENTRY (user_data);
ClutterActor *clutter_text; ClutterText *clutter_text;
clutter_text = st_entry_get_clutter_text (ST_ENTRY (entry)); clutter_text = st_entry_get_clutter_text (ST_ENTRY (entry));
if (clutter_text_get_password_char (CLUTTER_TEXT (clutter_text)) == 0) if (clutter_text_get_password_char (clutter_text) == 0)
st_password_entry_set_password_visible (entry, TRUE); st_password_entry_set_password_visible (entry, TRUE);
else else
st_password_entry_set_password_visible (entry, FALSE); st_password_entry_set_password_visible (entry, FALSE);
@ -218,7 +218,7 @@ static void
st_password_entry_init (StPasswordEntry *entry) st_password_entry_init (StPasswordEntry *entry)
{ {
StPasswordEntryPrivate *priv = ST_PASSWORD_ENTRY_PRIV (entry); StPasswordEntryPrivate *priv = ST_PASSWORD_ENTRY_PRIV (entry);
ClutterActor *clutter_text; ClutterText *clutter_text;
priv->peek_password_icon = g_object_new (ST_TYPE_ICON, priv->peek_password_icon = g_object_new (ST_TYPE_ICON,
"style-class", "peek-password", "style-class", "peek-password",
@ -235,7 +235,7 @@ st_password_entry_init (StPasswordEntry *entry)
0); 0);
clutter_text = st_entry_get_clutter_text (ST_ENTRY (entry)); clutter_text = st_entry_get_clutter_text (ST_ENTRY (entry));
clutter_text_set_password_char (CLUTTER_TEXT (clutter_text), BLACK_CIRCLE); clutter_text_set_password_char (clutter_text, BLACK_CIRCLE);
st_entry_set_input_purpose (ST_ENTRY (entry), CLUTTER_INPUT_CONTENT_PURPOSE_PASSWORD); st_entry_set_input_purpose (ST_ENTRY (entry), CLUTTER_INPUT_CONTENT_PURPOSE_PASSWORD);
@ -316,7 +316,7 @@ st_password_entry_set_password_visible (StPasswordEntry *entry,
gboolean value) gboolean value)
{ {
StPasswordEntryPrivate *priv; StPasswordEntryPrivate *priv;
ClutterActor *clutter_text; ClutterText *clutter_text;
g_return_if_fail (ST_IS_PASSWORD_ENTRY (entry)); g_return_if_fail (ST_IS_PASSWORD_ENTRY (entry));
@ -329,12 +329,12 @@ st_password_entry_set_password_visible (StPasswordEntry *entry,
clutter_text = st_entry_get_clutter_text (ST_ENTRY (entry)); clutter_text = st_entry_get_clutter_text (ST_ENTRY (entry));
if (priv->password_visible) if (priv->password_visible)
{ {
clutter_text_set_password_char (CLUTTER_TEXT (clutter_text), 0); clutter_text_set_password_char (clutter_text, 0);
st_icon_set_icon_name (ST_ICON (priv->peek_password_icon), "view-conceal-symbolic"); st_icon_set_icon_name (ST_ICON (priv->peek_password_icon), "view-conceal-symbolic");
} }
else else
{ {
clutter_text_set_password_char (CLUTTER_TEXT (clutter_text), BLACK_CIRCLE); clutter_text_set_password_char (clutter_text, BLACK_CIRCLE);
st_icon_set_icon_name (ST_ICON (priv->peek_password_icon), "view-reveal-symbolic"); st_icon_set_icon_name (ST_ICON (priv->peek_password_icon), "view-reveal-symbolic");
} }