StIcon: Always request a square icon size

We don't want the layout to change when we say, change from
battery-full to battery-full-charging, so we should request a square
based on the icon size unconditionally and not try to adapt to the
size of the texture we loaded. This also means that our layout is
independent of the loaded texure which, if we switch away from
using a ClutterActor child will allow us not queue a relayout when
the icon finishes loading.

https://bugzilla.gnome.org/show_bug.cgi?id=633865
This commit is contained in:
Owen W. Taylor 2010-11-02 17:11:28 -04:00
parent 439d7f036f
commit 35400238aa

View File

@ -140,28 +140,12 @@ st_icon_get_preferred_height (ClutterActor *actor,
{
StIconPrivate *priv = ST_ICON (actor)->priv;
StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (actor));
gfloat pref_height;
if (priv->icon_texture)
{
gint width, height;
clutter_texture_get_base_size (CLUTTER_TEXTURE (priv->icon_texture),
&width,
&height);
if (width <= height)
pref_height = priv->icon_size;
else
pref_height = height / (gfloat)width * priv->icon_size;
}
else
pref_height = 0;
if (min_height_p)
*min_height_p = pref_height;
*min_height_p = priv->icon_size;
if (nat_height_p)
*nat_height_p = pref_height;
*nat_height_p = priv->icon_size;
st_theme_node_adjust_preferred_height (theme_node, min_height_p, nat_height_p);
}
@ -174,28 +158,12 @@ st_icon_get_preferred_width (ClutterActor *actor,
{
StIconPrivate *priv = ST_ICON (actor)->priv;
StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (actor));
gfloat pref_width;
if (priv->icon_texture)
{
gint width, height;
clutter_texture_get_base_size (CLUTTER_TEXTURE (priv->icon_texture),
&width,
&height);
if (height <= width)
pref_width = priv->icon_size;
else
pref_width = width / (gfloat)height * priv->icon_size;
}
else
pref_width = 0;
if (min_width_p)
*min_width_p = pref_width;
*min_width_p = priv->icon_size;
if (nat_width_p)
*nat_width_p = pref_width;
*nat_width_p = priv->icon_size;
st_theme_node_adjust_preferred_width (theme_node, min_width_p, nat_width_p);
}
@ -345,8 +313,6 @@ st_icon_update (StIcon *icon)
if (priv->icon_texture)
clutter_actor_set_parent (priv->icon_texture, CLUTTER_ACTOR (icon));
}
clutter_actor_queue_relayout (CLUTTER_ACTOR (icon));
}
static void
@ -364,6 +330,7 @@ st_icon_update_icon_size (StIcon *icon)
if (new_size != priv->icon_size)
{
clutter_actor_queue_relayout (CLUTTER_ACTOR (icon));
priv->icon_size = new_size;
st_icon_update (icon);
}