Do not force Widgets to be Shiftable; more refactoring + comments

Preparation for GUI library split