Properly restore current desktop from session
Summary: VirtualDesktopManager is initialized in two places: Workspace::init and Workspace::initWithX11. The former method loads virtual desktops from the config file and the latter method synchronizes VirtualDesktopManager with RootInfo. Both methods do if (!VirtualDesktopManager::self()->setCurrent(m_initialDesktop)) VirtualDesktopManager::self()->setCurrent(1); which makes sense in Workspace::init, but not in Workspace::initWithX11. When Workspace::initWithX11 is called, the current virtual desktop is the same as m_initialDesktop. So that piece of code basically makes the first virtual desktop current no matter what. BUG: 390295 FIXED-IN: 5.15.3 Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D19520
This commit is contained in:
parent
054ba69581
commit
f7af113261
1 changed files with 3 additions and 3 deletions
|
@ -398,10 +398,10 @@ void Workspace::initWithX11()
|
|||
// TODO: only in X11 mode
|
||||
// Extra NETRootInfo instance in Client mode is needed to get the values of the properties
|
||||
NETRootInfo client_info(connection(), NET::ActiveWindow | NET::CurrentDesktop);
|
||||
if (!qApp->isSessionRestored())
|
||||
if (!qApp->isSessionRestored()) {
|
||||
m_initialDesktop = client_info.currentDesktop();
|
||||
if (!VirtualDesktopManager::self()->setCurrent(m_initialDesktop))
|
||||
VirtualDesktopManager::self()->setCurrent(1);
|
||||
vds->setCurrent(m_initialDesktop);
|
||||
}
|
||||
|
||||
// TODO: better value
|
||||
rootInfo->setActiveWindow(None);
|
||||
|
|
Loading…
Reference in a new issue