@ -932,7 +932,7 @@ void Workspace::slotCurrentDesktopChanged(VirtualDesktop *oldDesktop, VirtualDes
// Restore the focus on this desktop
// Restore the focus on this desktop
- - block_focus ;
- - block_focus ;
activateWindowOnNew Desktop ( newDesktop ) ;
activateWindowOnDesktop ( newDesktop ) ;
Q_EMIT currentDesktopChanged ( oldDesktop , m_moveResizeWindow ) ;
Q_EMIT currentDesktopChanged ( oldDesktop , m_moveResizeWindow ) ;
}
}
@ -985,7 +985,7 @@ void Workspace::updateWindowVisibilityOnDesktopChange(VirtualDesktop *newDesktop
}
}
}
}
void Workspace : : activateWindowOnNew Desktop ( VirtualDesktop * desktop )
void Workspace : : activateWindowOnDesktop ( VirtualDesktop * desktop )
{
{
Window * window = nullptr ;
Window * window = nullptr ;
if ( options - > focusPolicyIsReasonable ( ) ) {
if ( options - > focusPolicyIsReasonable ( ) ) {
@ -1476,6 +1476,7 @@ void Workspace::sendWindowToDesktops(Window *window, const QList<VirtualDesktop
{
{
const QList < VirtualDesktop * > oldDesktops = window - > desktops ( ) ;
const QList < VirtualDesktop * > oldDesktops = window - > desktops ( ) ;
const bool wasOnCurrent = window - > isOnCurrentDesktop ( ) ;
const bool wasOnCurrent = window - > isOnCurrentDesktop ( ) ;
const bool wasActive = window - > isActive ( ) ;
window - > setDesktops ( desktops ) ;
window - > setDesktops ( desktops ) ;
if ( window - > desktops ( ) ! = desktops ) { // No change or desktop forced
if ( window - > desktops ( ) ! = desktops ) { // No change or desktop forced
return ;
return ;
@ -1489,7 +1490,13 @@ void Workspace::sendWindowToDesktops(Window *window, const QList<VirtualDesktop
restackWindowUnderActive ( window ) ;
restackWindowUnderActive ( window ) ;
}
}
} else {
} else {
// raise the window on the desktop it has been added to
raiseWindow ( window ) ;
raiseWindow ( window ) ;
// but set a new active window on the current desktop
if ( wasActive ) {
activateWindowOnDesktop ( VirtualDesktopManager : : self ( ) - > currentDesktop ( ) ) ;
}
}
}
window - > checkWorkspacePosition ( QRect ( ) , oldDesktops . isEmpty ( ) ? nullptr : oldDesktops . last ( ) ) ;
window - > checkWorkspacePosition ( QRect ( ) , oldDesktops . isEmpty ( ) ? nullptr : oldDesktops . last ( ) ) ;