diff --git a/src/gui/interact/gen-node-location-query.hpp b/src/gui/interact/gen-node-location-query.hpp index c73d32432..89c259944 100644 --- a/src/gui/interact/gen-node-location-query.hpp +++ b/src/gui/interact/gen-node-location-query.hpp @@ -190,7 +190,7 @@ namespace interact { if (hasNode (tree, pathElm, depth)) { ++depth; - return drillDown (descendInto(tree,pathElm,depth-1), path, maxDepth, depth); + return drillDown (descendInto(tree,depth-1,pathElm), path, maxDepth, depth); } } return tree; @@ -210,8 +210,9 @@ namespace interact { : tree.hasAttribute(pathElm); } + /** within `tree` _at level_ `depth` descend into the child element designated by `pathElm` */ static Rec const& - descendInto (Rec const& tree, const char* pathElm, size_t depth) + descendInto (Rec const& tree, size_t depth, const char* pathElm) { return depth==UIC_PERSP? tree // perspective info is attached as type at the parent node : tree.get(pathElm).data.get(); @@ -228,7 +229,7 @@ namespace interact { virtual TreeStructureNavigator* expandChildren() const override { - return childNavigator (descendInto (pos_, currentChild_, depth_+1), depth_+1); + return childNavigator (descendInto (pos_,depth_, currentChild_), depth_+1); } ///////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1125 : work around the misaligned IterSource design diff --git a/tests/gui/interact/ui-coord-resolver-test.cpp b/tests/gui/interact/ui-coord-resolver-test.cpp index 2bf1a069d..12d57dfd7 100644 --- a/tests/gui/interact/ui-coord-resolver-test.cpp +++ b/tests/gui/interact/ui-coord-resolver-test.cpp @@ -79,7 +79,7 @@ namespace test { virtual void run (Arg) { -// verify_simpleUsage(); + verify_simpleUsage(); verify_backingQuery(); verify_queryAnchor(); verify_queryCoverage(); @@ -149,6 +149,7 @@ namespace test { * UI this would of course not be a configurable property of the * LocationQuery, but rather just reflect the transient window * state and return the currently activated window + * @see IterTreeExplorer_test::verify_IterSource() regarding "child expansion"... */ void verify_backingQuery() @@ -222,20 +223,21 @@ namespace test { CHECK ("thirdView" == join (queryAPI.getChildren (uic5, 3))); VERIFY_ERROR (STATE, queryAPI.getChildren (uic5, 4) ); // "someOtherView" at level 4 does not exist - // verify child exploration via iterator interface - cii = queryAPI.getChildren (uic3, 0); - CHECK ("window-1" == *cii); - CHECK (0 == cii.depth()); - cii.expandChildren(); + + // verify "child exploration" via iterator interface + cii = queryAPI.getChildren (uic3, 0); // enter at root level... + CHECK ("window-1" == *cii); // first child of root to appear is "window-1" + CHECK (0 == cii.depth()); // (note depth just happens to coincide with absolute tree depth here) + cii.expandChildren(); // drill down into current element's children CHECK (1 == cii.depth()); - CHECK ("perspective-A" == *cii); - cii.expandChildren(); + CHECK ("perspective-A" == *cii); // which is just one, the perspective + cii.expandChildren(); // drill down into the (formal, logical) children of "perspective-A" CHECK (2 == cii.depth()); - CHECK ("panelX" == *cii); - cii.expandChildren(); + CHECK ("panelX" == *cii); // ..and find the "panelX" at level 2 + cii.expandChildren(); // drill down one level further CHECK (3 == cii.depth()); - CHECK ("firstView" == *cii); - CHECK ("firstView, window-2, window-3" == join (cii)); + CHECK ("firstView" == *cii); // and then just continue iteration, which first explores that scope... + CHECK ("firstView, secondView, window-2, window-3" == join (cii)); // ...followed by returing to the enclosing scopes, finaly top level. }