[Panel Containment] Explicitly bind visible on both the container and the applet

Authored by broulik on Jan 3 2017, 8:38 AM.

Description

[Panel Containment] Explicitly bind visible on both the container and the applet

While trying to fix a random plasmashell crash I was getting fairly often (and I hoped
was fixed by David's last spacer fix) I found that the cause was actually in virtual desktop pager.

The virtual desktop pager is hidden when there's just one desktop and it will not update its
models in this case to save resources. Back when I added this I already noticed that sometimes
the pager (usually after one "open and close panelcontroller" cycle) still thought it was visible.
It was even weirder than that, I found out that on teardown it suddenly thought it became visible.
This had it populate its model which in turn spawned QML items, all of this whilst the panel was
already in the process of destroying its children, leading to a crash.

Differential Revision: https://phabricator.kde.org/D3897