diff --git a/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java b/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java index 6f36e8c02..a3c101be4 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java @@ -799,6 +799,7 @@ void pauseGeckoViewCompositor() { return; } mIsPresentingImmersive = true; + mWindows.enterImmersiveMode(); TelemetryWrapper.startImmersive(); PauseCompositorRunnable runnable = new PauseCompositorRunnable(); @@ -821,6 +822,7 @@ void resumeGeckoViewCompositor() { return; } mIsPresentingImmersive = false; + mWindows.exitImmersiveMode(); // Show the window in front of you when you exit immersive mode. resetUIYaw(); diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java index fb60b4705..55e6d1f89 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java @@ -70,6 +70,7 @@ class WindowsState { private WindowPlacement mPrevWindowPlacement; private boolean mStoredCurvedMode = false; private boolean mForcedCurvedMode = false; + private boolean mIsPaused = false; public enum WindowPlacement{ FRONT(0), @@ -363,6 +364,8 @@ public void resumeCompositor() { } public void onPause() { + mIsPaused = true; + saveState(); for (WindowWidget window: mRegularWindows) { window.onPause(); @@ -373,6 +376,8 @@ public void onPause() { } public void onResume() { + mIsPaused = false; + for (WindowWidget window: mRegularWindows) { window.onResume(); } @@ -395,6 +400,43 @@ public boolean isInPrivateMode() { return mPrivateMode; } + public void enterImmersiveMode() { + if (!isInPrivateMode()) { + for (WindowWidget window: mRegularWindows) { + if (window != mFocusedWindow) { + window.onPause(); + } + } + + } else { + for (WindowWidget window: mPrivateWindows) { + if (window != mFocusedWindow) { + window.onPause(); + } + } + } + } + + public void exitImmersiveMode() { + if (mIsPaused) { + return; + } + + if (!isInPrivateMode()) { + for (WindowWidget window: mRegularWindows) { + if (window != mFocusedWindow) { + window.onResume(); + } + } + + } else { + for (WindowWidget window: mPrivateWindows) { + if (window != mFocusedWindow) { + window.onResume(); + } + } + } + } public void enterPrivateMode() { if (mPrivateMode) {