There's no point in loading the icon when it cannot be seen.
Hmm, I'm not a fan. That only the isPopup case ends up showing the icon in the shell is something you and I know from the outside, but I don't think a widget should be making that assumption. Otherwise we bake implementation details of the containents into widget code, and if we ever change the former we have to fix the widgets. Take for example a widget list like the one bandied about for config modes on the sprint.