don't create and destroy widgets or reconnect signals every frame
early-out from UI::Label::SetText if the text isn't being changed
early-out from UI::Single::SetInnerWidget if the widget isn't being changed