Skip to content
  • Federico Mena Quintero's avatar
    (#823): Fix geometry computation for individual layers · 44927afa
    Federico Mena Quintero authored
    (#823) correctly points out that commit
    e3bb911b broke geometry computation.
    I didn't see how it could, since it didn't even have to do with
    extracting bounding boxes from elements.
    
    It turns out that I forgot to copy the DrawingCtx.drawsub_stack for
    the nested context.  So, for an SVG with structure
    
      a
        b
          c -> with isolation context (due to non-100% opacity / etc.)
            d
            e
            f id="draw_only_this_one"
            g
    
    if one calls geometry_for_layer("draw_only_this_one"), draw_tree() would
    properly create a drawsub_stack like (a b c f), but then the nested
    rendering would go:
    
      stack_top=a
    
      stack_top=b
    
      stack_top=c (creates isolation context, and a nested DrawingCtx)
    
      stack_top=empty (nested DrawingCtx has an empty drawsub_stack) ->
        draw every child of c since there's no drawsub_stack to limit it,
        instead of just drawing f in there.
    
    GNOME/librsvg#823
    
    Part-of: <GNOME/librsvg!697>
    44927afa