title: Corona SDK Display Group Issue - Where is the error in this code?
body: <p>Is anyone able to see the logic flaw in this lua code for Corona?</p>
  
  <p>The concept is you create a new "extended" Display Object (e.g. MyGroup:new(...)), after which you can then insert objects into this using percentages for it's position in the parent (so no need to use pixcels counts).</p>
  
  <p>Issue - The issue is the objects draw are roughly in the correct spots but just a little bit out?   I have a feeling it is something due to perhaps coordinates changing in the parent in the "self:insert(displayO)" line? </p>
  
  <p>main.lua</p>
  
  <pre><code>------------------------------------------------------------------------------
  -- HELPERS 
  ------------------------------------------------------------------------------
  function rpadString (str, len, char)
      if char == nil then char = ' ' end
      return  (str .. string.rep(char, len - #str))
  end
  
  function drawBorder(obj)
      local b = obj.contentBounds 
  
      local myRectangle = display.newRect(b.xMin, b.yMin, obj.contentWidth, obj.contentHeight)
      -- print ("Rect X,Y,Width,Height: ", b.xMin, b.yMin, obj.contentWidth, obj.contentHeight)
      myRectangle.strokeWidth = 1
      myRectangle:setFillColor(140, 140, 140, 1)
      if obj.gcGroupName then
          -- Group
          myRectangle:setStrokeColor(100, 250, 180)
          myRectangle.strokeWidth = 1
      else
          -- Image/Rect
          myRectangle:setStrokeColor(250, 180, 180)
          myRectangle.strokeWidth = 2
      end
  
  
  end
  
  function dumpDisplayObjects(doParent, level)
      drawBorder(doParent)
      if doParent.numChildren then
          for i=doParent.numChildren,1,-1 do
              local doChild = doParent[i]
              dumpDisplayObjects(doChild, level + 1)
          end
      end
  end
  
  ------------------------------------------------------------------------------
  -- MAIN 
  ------------------------------------------------------------------------------
  require "MyGroup"
  
  print "RUNNING ........................................."
  display.setStatusBar( display.HiddenStatusBar )
  
  -- Create Toolbar Area at Bottom
  local mainGroup = MyGroup:new("Main Group", 0, 0, display.contentWidth, display.contentHeight)
  local toolbarArea = MyGroup:new("Inventory", 0,0,0,0)
  mainGroup:GcInsertLRTB(toolbarArea, 0, 100, 80, 100, "Inventory")    -- Percentages Used
  
  -- Draw Rectangle 1
  local toolbarAreaImage = display.newImage( "toolbarArea_button.png", 0, 0)
  toolbarArea:GcInsertLRTB(toolbarAreaImage, 0, 20, 0, 100, "Inventory Button")
  
  -- -- Setup Toolbar Group
  -- local toolbarAreaToolbar = MyGroup:new("InventoryToolbar", 0, 0, 1, 1)
  -- toolbarArea:GcInsertLRTB(toolbarAreaToolbar, 20, 100, 0, 100, "Toolbar")
  --  -- 
  -- -- Draw Rectangle 2
  -- local rect2 = display.newRoundedRect(0, 0, 1000, 1000, 5)
  -- rect2.strokeWidth = 1
  -- rect2:setStrokeColor(140, 140, 140)
  -- rect2:setFillColor(140, 140, 140, 100)
  -- toolbarAreaToolbar:GcInsertLRTB(rect2, 0, 100, 0, 100, "Rect2")
  
  -- Debug Display
  dumpDisplayObjects(toolbarArea, 1)
  </code></pre>
  
  <p>MyGroup.lua</p>
  
  <pre><code>MyGroup = {}
  
  function MyGroup:new(name, left, top, targetWidth, targetHeight)
      -- Inherit from Group
      myGroup = display.newGroup()
  
      -- Work Around (Dummy Display Object Insertion) (See Note 1)
      myGroup.dummyDO = display.newCircle( myGroup, 10, 10, 1 )
      myGroup.dummyDO:setFillColor(1,1,1,1)
      myGroup.dummyDO.debugComment = "Dummy Display Object"
      myGroup:insert(myGroup.dummyDO)
  
      myGroup.myGroupName = name      
      myGroup.debugComment = name
      myGroup.targetWidth = targetWidth
      myGroup.targetHeight = targetHeight
      myGroup.x = left
      myGroup.y = top
  
  
      function myGroup:GcInsertLRTB(displayO, leftP, rightP, topP, bottomP, debugComment)
          self:insert(displayO)   -- &lt;=== DOES THIS UPSET THINGS FOR THE PARENT???
  
          -- Remove Work Around Dummy Display Object (See Note 1)
          if self.dummyDO then 
              self.dummyDO:removeSelf() 
              self.dummyDO = nil
          end
  
          displayO:setReferencePoint(display.TopLeftReferencePoint)
          displayO.x = leftP * 0.01 * self.targetWidth
          displayO.y =  (topP * 0.01) * self.targetHeight
  
          -- Scale Display Object (or set target's if adding another MyGroup)
          if not displayO.myGroupName then
              -- Not a MyGroup
              local xScale = (self.targetWidth * (rightP - leftP)/100) / displayO.width  
              local yScale = (self.targetHeight * (bottomP - topP)/100) / displayO.height
              displayO:scale(xScale, yScale)
          else
              -- Inserted object is a MyGroup
              displayO.targetWidth = self.targetWidth * (rightP - leftP)/100
              displayO.targetHeight = self.targetHeight * (bottomP - topP)/100 
              displayO:scale(1,1)  -- TODO: Probably don't need this
          end
  
      end
  
      return myGroup
  end
  
  -- Class Variables
  
  -- Class Methods
  
  return MyGroup
  </code></pre>