Ticket #2919: widget system improvements and unifications.