StContainer: simplify focus navigation

When navigating from a non-immediate descendant of a container, we
were attempting to use clutter_actor_get_transformed_position() to get
the exact position of that actor relative to the container, but this
did not really make sense, since we would be using the position of
the intermediate container when navigating back.

https://bugzilla.gnome.org/show_bug.cgi?id=644134
This commit is contained in:
Dan Winship 2011-03-07 14:14:02 -05:00
parent 026fc531ba
commit 84eb66d5aa

View File

@ -646,23 +646,9 @@ st_container_navigate_focus (StWidget *widget,
* any child is inconsistently scaled, then the focus chain will
* probably be unpredictable.
*/
if (from)
if (focus_child)
{
if (from == focus_child)
clutter_actor_get_allocation_box (focus_child, &sort_data.box);
else
{
float cx, cy, fx, fy, fw, fh;
clutter_actor_get_transformed_position (CLUTTER_ACTOR (container), &cx, &cy);
clutter_actor_get_transformed_position (from, &fx, &fy);
clutter_actor_get_transformed_size (from, &fw, &fh);
sort_data.box.x1 = fx - cx;
sort_data.box.x2 = fx - cx + fw;
sort_data.box.y1 = fy - cy;
sort_data.box.y2 = fy - cy + fh;
}
clutter_actor_get_allocation_box (focus_child, &sort_data.box);
}
else
{