davidedmundson added a comment.
The old code is clearly wrong.
It calls Dialog::event(event);
that will set up a shellsurface in the expose event
Then we process further and set up a shell surface in the expose event
PlasmaShellSurfaces are shared, but you still have two objects handling the
move event simultaneously, and worst still
} else if (event->type() == QEvent::Hide) {
delete m_plasmaShellSurface;
is just screaming out for a crash as dialog is sharing that same object.
We're just being very lucky at the moment.
I wouldn't want to see this reverted as-is.
But clearly we need the setRole and the setPanelTakesFocus. I missed that in
my review.
That could mean just adding an if(Dock) in Dialog.cpp , only setting those
parts in ExposeEvent here, or adding an extra virtual to configure dialog
somehow.
REPOSITORY
R120 Plasma Workspace
REVISION DETAIL
https://phabricator.kde.org/D10197
To: apol, #plasma, davidedmundson
Cc: graesslin, broulik, ngraham, davidedmundson, plasma-devel, ZrenBot,
progwolff, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart