On Thu, Jan 6, 2011 at 4:51 PM, Orm Finnendahl o.finnendahl@inm.mh-freiburg.de wrote:
Hi,
reading the specs, map-over-output-records-overlapping-region should map over *all* childs of the supplied output-record which overlap the supplied region. In my application, the output-records are hierarchical with the topmost output-record covering the whole drawing area and its childs occupying parts of that and their childs again parts of the parts and so forth.
When calling the function on a part of the drawing area, the macro only maps the function over the topmost output record and ignores all of its childs which also overlap the region in question.
I could write a similar macro which traverses the tree and checks for overlap but I ask myself, whether the behaviour of mcclim's built-in macro is correct with regards to the specs or whether I'm doing something wrong here...
I think it's pretty clear it shouldn't recurse on it's own. If it did, it'd be necessary to invent another more primitive function which did not. Further, this appears to be the behavior implemented by other CLIM implementations.
map-over-output-records-containing-region is arguably the fundamental operator for querying the output history. As the Franz CLIM User's Guide astutely notes, output-record-children may be forced to cons a new list of children (undesirable..), depending whether the output record stores this them a list or some other structure, e.g. an R-tree.
Manually recursing shouldn't be much trouble - write the continuation inside LABELS, add one recursive call to map-over-output-records-etc.