1. A method for automatically adjusting a layout of widgets in a canvas comprising: detecting an event associated with collapsing a container widget, which is one of a plurality of widget adjustment events performed against a model, for a widget that is part of the model that is presented on a canvas of a user interface, wherein the widget adjustment event affects a layout positioning of the widget on the canvas; adjusting on-canvas objects, which include other widgets, proximate to the widget, wherein adjustments of the on-canvas objects are performed relative to a layout position of the widget after the widget adjustment event has occurred; adjusting additional on-canvas objects further from the widget than the adjusted on-canvas objects, wherein adjustments of the additional on-canvas objects are performed relative to layout positions of the adjusted on-canvas objects after the adjustments for their positioning relative to the widget have occurred, wherein the adjustments occur automatically responsive to detecting of the widget adjustment event; before each of the plurality of widget adjustment events saving a snapshot of the layout of the model; before adjusting any on-canvas objects, determining whether a post-adjustment state of the canvas after the detected widget adjustment event occurs corresponds to a previously saved snapshot; and when a previously saved snapshot corresponds to the post-adjustment state, retrieving the previously saved snapshot and adjusting a layout of on-canvas objects on the canvas in accordance with the retrieved snapshot, wherein a plurality of snapshots of the layout of the model are stored in a layout state table, said plurality of snapshots comprising said saved snapshot and said the previously saved snapshot, wherein each of the plurality of snapshots includes an entry for each of the plurality of widgets of the model and an expansion state of that widget specific to the corresponding snapshot.