Don't include embedded contrainers in containmentAt(pos)

Do to so means the System Tray applet ends up being placed inside the
system tray container, which ends up in a parent loop, causing a stack
overflow every time parent() is called recursively

This happens whenever one drags a sys tray on the desktop or simply adds
a new system tray whilst running.

BUG: 361777

We also need to do a hack for Plasma/5.7 in plasma-desktop somehow in
all cases where this is used.
This commit is contained in:
David Edmundson 2016-06-20 21:07:19 +01:00
parent c6b35c6b10
commit 3c1eb48018

View File

@ -277,6 +277,9 @@ QObject *ContainmentInterface::containmentAt(int x, int y)
if (contInterface && contInterface->isVisible()) {
QWindow *w = contInterface->window();
if (w && w->geometry().contains(QPoint(window()->x(), window()->y()) + QPoint(x, y))) {
if (c->containmentType() == Plasma::Types::CustomEmbeddedContainment) {
continue;
}
if (c->containmentType() == Plasma::Types::DesktopContainment) {
desktop = contInterface;
} else {