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
(cherry picked from commit 13807fbf9f3a4aae6767da8bcf796bea4b065159)

and

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
(cherry picked from commit aff263c8b814c6bf352312403d3c1e448c8013a3)
Reviewed-on: https://gerrit.libreoffice.org/10461
Reviewed-by: David Tardon <dtardon@redhat.com>
Tested-by: David Tardon <dtardon@redhat.com>