NEIGHBOR_SEARCH_MODE_NORMAL = 0,
NEIGHBOR_SEARCH_MODE_RECURSE_FROM_ROOT = 1,
NEIGHBOR_SEARCH_MODE_CONTINUE_AFTER_FAILED_RECURSING = 2,
+ NEIGHBOR_SEARCH_MODE_RECURSE_TO_OUTSIDE = 3,
} GetNeighborSearchMode;
/**
* atspi_accessible_get_neighbor:
// thus we're recursing. should the recurse failed to find anything it will end with
if (ret && recurse) {
g_object_unref(G_OBJECT(start));
- g_queue_push_tail(children_root_stack, ret);
start = ret;
g_object_ref(start);
- search_mode = NEIGHBOR_SEARCH_MODE_RECURSE_FROM_ROOT;
+ if (are_objects_on_the_same_bus(root, ret))
+ {
+ search_mode = NEIGHBOR_SEARCH_MODE_RECURSE_TO_OUTSIDE;
+ }
+ else
+ {
+ g_queue_push_tail(children_root_stack, ret);
+ search_mode = NEIGHBOR_SEARCH_MODE_RECURSE_FROM_ROOT;
+ }
continue;
}
// found the one we've been looking for