Related: fdo#81457 skip setting an empty allocation

if the dimension is 0, don't bother calculating
a bunch of <= 0 sizes, rely on the parents clipping
to hide the lot instead

Change-Id: I5b593a5b6b6c3614beb7f9bf3328fa469b700972
Related: fdo#81457 quadratic time required when setting a11y name

when calling SetAccessibleName GetAccessibleName is called
in order to send a name changed a11y event. Getting an Accessible
Name is very slow in a non-layout aware widget because it scans
for a "nearby" label and there is none in this widget, but it
has a huge pile of other widgets to iterate over.

call add_mnemonic_label before hand to cut off that entire
branch.

While we're at it, only call InitControl to adjust to a new
width if the new width is different from the old width

Change-Id: Ie4ba1276127226e49442278e46447b84bbeb1cde