diff --git a/src/gui/interact/ui-coord-resolver.hpp b/src/gui/interact/ui-coord-resolver.hpp index 5abc497bc..c4432e196 100644 --- a/src/gui/interact/ui-coord-resolver.hpp +++ b/src/gui/interact/ui-coord-resolver.hpp @@ -379,14 +379,14 @@ namespace interact { REQUIRE (res_.isResolved); size_t coverable = res_.covfefe? res_.covfefe->size() : res_.depth; auto newContent = partialExtensionSpec.begin(); - size_t extensionPos = newContent? partialExtensionSpec.indexOf(*newContent) : 0; - if (coverable >= extensionPos) + size_t extensionPos = newContent? partialExtensionSpec.indexOf(*newContent) : coverable; + if (coverable > extensionPos) throw error::Invalid (util::_Fmt{"Attempt to extend covered path %s with %s " "would overwrite positions %d to %d (incl)"} % (res_.covfefe? *res_.covfefe : UICoord{uic_.rebuild().truncateTo(res_.depth)}) % partialExtensionSpec % extensionPos - % coverable); + % (coverable-1)); cover(); for ( ; newContent; ++newContent, ++extensionPos ) overwrite (extensionPos, *newContent); diff --git a/tests/gui/interact/ui-coord-resolver-test.cpp b/tests/gui/interact/ui-coord-resolver-test.cpp index cf5480db2..9511cc0b0 100644 --- a/tests/gui/interact/ui-coord-resolver-test.cpp +++ b/tests/gui/interact/ui-coord-resolver-test.cpp @@ -634,25 +634,36 @@ namespace test { /* === extend fully covered explicit path === */ UICoordResolver r1 {UICoord{"window-2","persp-B","panelY"}, tree}; - r1.extend (UICoord().path("gappy").tab(2)); - cout << string(r1)<