diff --git a/src/servers/app/Desktop.cpp b/src/servers/app/Desktop.cpp index fb458c3c04..ca354b5ce4 100644 --- a/src/servers/app/Desktop.cpp +++ b/src/servers/app/Desktop.cpp @@ -945,14 +945,6 @@ Desktop::_SetWorkspace(int32 index) int32 previousIndex = fCurrentWorkspace; rgb_color previousColor = fWorkspaces[fCurrentWorkspace].Color(); bool movedMouseEventWindow = false; - display_mode previousMode, newMode; - fVirtualScreen.ScreenAt(0)->GetMode(&previousMode); - fVirtualScreen.RestoreConfiguration(*this, - fSettings->WorkspacesMessage(index)); - fVirtualScreen.ScreenAt(0)->GetMode(&newMode); - // We only need to invalidate the entire desktop if we changed display modes - if (memcmp(&previousMode, &newMode, sizeof(display_mode))) - ScreenChanged(fVirtualScreen.ScreenAt(0), false); if (fMouseEventWindow != NULL) { if (fMouseEventWindow->IsNormal()) { @@ -1010,6 +1002,17 @@ Desktop::_SetWorkspace(int32 index) fPreviousWorkspace = fCurrentWorkspace; fCurrentWorkspace = index; + // Change the display mode, if needed + // TODO: this needs to be done for all screens + display_mode previousMode, newMode; + fVirtualScreen.ScreenAt(0)->GetMode(&previousMode); + fVirtualScreen.RestoreConfiguration(*this, + fSettings->WorkspacesMessage(index)); + fVirtualScreen.ScreenAt(0)->GetMode(&newMode); + // We only need to invalidate the entire desktop if we changed display modes + if (memcmp(&previousMode, &newMode, sizeof(display_mode))) + ScreenChanged(fVirtualScreen.ScreenAt(0), false); + // show windows, and include them in the changed region - but only // those that were not visible before (or whose position changed)