The two methods browseRelToParent() and browseRelToSub() in GuiView.cpp both return a relative path. The only difference is that the first one returns an absolute path if it would start with "../", and the second one if it does not start with "../". So, even if a relative path is possible, an absolute path may be returned by both.
Both methods were introduced at http://www.lyx.org/trac/changeset/38915/lyxsvn to fix bug 7540. I have read the discussion there, but could not make any sense of why two methods behaving like that are necessary. A single method returning a relative path (either starting or not by "../") would suffice. A relative path is a relative path and this distinction makes no sense. Unless someone can give an example showing that a relative path of one of the above forms produces problems, I am going to unify the two methods in a single one simply returning a relative path. Using relative paths is a superior alternative to absolute ones, but currently LyX can return an absolute path when a relative one is actually possible. -- Enrico