Use clutter_container_find_child_by_id() when picking

ClutterStage now uses the newly added clutter_container_find_child_by_id()
function to find the right child in the scenegraph, using the picking id.

This fixes the test-boxes test case.
This commit is contained in:
Emmanuele Bassi 2007-08-13 17:00:52 +00:00
parent 57c0be73cd
commit 9635f60064

View File

@ -873,8 +873,8 @@ clutter_stage_get_actor_at_pos (ClutterStage *stage,
context->pick_mode = FALSE; context->pick_mode = FALSE;
/* Calls should work under both GL and GLES, note GLES needs RGBA */ /* Calls should work under both GL and GLES, note GLES needs RGBA */
glGetIntegerv(GL_VIEWPORT, viewport); glGetIntegerv (GL_VIEWPORT, viewport);
glReadPixels(x, viewport[3] - y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel); glReadPixels (x, viewport[3] - y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel);
if (pixel[0] == 0xff && pixel[1] == 0xff && pixel[2] == 0xff) if (pixel[0] == 0xff && pixel[1] == 0xff && pixel[2] == 0xff)
return CLUTTER_ACTOR(stage); return CLUTTER_ACTOR(stage);
@ -882,9 +882,11 @@ clutter_stage_get_actor_at_pos (ClutterStage *stage,
cogl_get_bitmasks (&r, &g, &b, NULL); cogl_get_bitmasks (&r, &g, &b, NULL);
/* Decode color back into an ID, taking into account fb depth */ /* Decode color back into an ID, taking into account fb depth */
id = pixel[2]>>(8-b) | pixel[1]<<b>>(8-g) | pixel[0]<<(g+b)>>(8-r); id = pixel[2] >> (8 - b)
| pixel[1] << b >> (8 - g)
| pixel[0] << (g + b) >> (8 - r);
return clutter_group_find_child_by_id (CLUTTER_GROUP (stage), id); return clutter_container_find_child_by_id (CLUTTER_CONTAINER (stage), id);
} }
/** /**