Pass DSL object to button click block

The DSL object was being passed to the constructor block, but the click
block was getting the backend object. This commit routes the blocks
through the same code path, so they both receive the DSL object.