rebuild popup and fix widget. _setPosition() bug