From f08ecc4520360afe40ea660ba9966806362eb22b Mon Sep 17 00:00:00 2001 From: Imanol Fernandez Date: Fri, 19 Jul 2019 22:24:15 +0200 Subject: [PATCH] If resize is cancelled, resize back to the screen size it had before entering resize mode (#1411) --- .../ui/widgets/NavigationBarWidget.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/NavigationBarWidget.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/NavigationBarWidget.java index 008db13b7..c98a8c62f 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/NavigationBarWidget.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/NavigationBarWidget.java @@ -66,7 +66,7 @@ public class NavigationBarWidget extends UIWidget implements GeckoSession.Naviga private boolean mIsResizing; private boolean mIsInVRVideo; private boolean mAutoEnteredVRVideo; - private WidgetPlacement mSizeBeforeFullScreen; + private WidgetPlacement mPlacementBeforeResize; private Runnable mResizeBackHandler; private Runnable mFullScreenBackHandler; private Runnable mVRVideoBackHandler; @@ -126,10 +126,10 @@ private void initialize(Context aContext) { mBrightnessButton = findViewById(R.id.brightnessButton); mFullScreenResizeButton = findViewById(R.id.fullScreenResizeEnterButton); mProjectionButton = findViewById(R.id.projectionButton); - mSizeBeforeFullScreen = new WidgetPlacement(aContext); + mPlacementBeforeResize = new WidgetPlacement(aContext); - mResizeBackHandler = () -> exitResizeMode(true); + mResizeBackHandler = () -> exitResizeMode(ResizeAction.RESTORE_SIZE); mFullScreenBackHandler = this::exitFullScreenMode; mVRVideoBackHandler = new Runnable() { @@ -207,7 +207,7 @@ else if (SessionStore.get().canUnstackSession()) mResizeExitButton.setOnClickListener(view -> { view.requestFocusFromTouch(); - exitResizeMode(true); + exitResizeMode(ResizeAction.KEEP_SIZE); if (mAudio != null) { mAudio.playSound(AudioEngine.Sound.CLICK); } @@ -373,7 +373,7 @@ public void setBrowserWidget(WindowWidget aWidget) { } private void setFullScreenSize() { - mSizeBeforeFullScreen.copyFrom(mWindowWidget.getPlacement()); + mPlacementBeforeResize.copyFrom(mWindowWidget.getPlacement()); // Set browser fullscreen size float aspect = SettingsStore.getInstance(getContext()).getWindowAspect(); Media media = SessionStore.get().getFullScreenVideo(); @@ -437,7 +437,7 @@ private void exitFullScreenMode() { } }, 50); - mWindowWidget.getPlacement().copyFrom(mSizeBeforeFullScreen); + mWindowWidget.getPlacement().copyFrom(mPlacementBeforeResize); mWidgetManager.updateWidget(mWindowWidget); mWindowWidget.setSaveResizeChanges(true); @@ -459,6 +459,7 @@ private void enterResizeMode() { return; } mIsResizing = true; + mPlacementBeforeResize.copyFrom(mWindowWidget.getPlacement()); startWidgetResize(); AnimationHelper.fadeIn(mResizeModeContainer, AnimationHelper.FADE_ANIMATION_DURATION, null); if (mIsInFullScreenMode) { @@ -471,10 +472,20 @@ private void enterResizeMode() { closeFloatingMenus(); } - private void exitResizeMode(boolean aCommitChanges) { + + enum ResizeAction { + KEEP_SIZE, + RESTORE_SIZE + } + + private void exitResizeMode(ResizeAction aResizeAction) { if (!mIsResizing) { return; } + if (aResizeAction == ResizeAction.RESTORE_SIZE) { + mWindowWidget.getPlacement().copyFrom(mPlacementBeforeResize); + mWidgetManager.updateWidget(mWindowWidget); + } mIsResizing = false; finishWidgetResize(); if (mIsInFullScreenMode) { @@ -735,7 +746,7 @@ public void onFullScreen(GeckoSession session, boolean aFullScreen) { enterFullScreenMode(); } if (mIsResizing) { - exitResizeMode(false); + exitResizeMode(ResizeAction.KEEP_SIZE); } AtomicBoolean autoEnter = new AtomicBoolean(false); mAutoSelectedProjection = VideoProjectionMenuWidget.getAutomaticProjection(SessionStore.get().getUriFromSession(session), autoEnter); @@ -982,7 +993,7 @@ public void onBookmarksHidden() { @Override public void onBookmarksClicked() { if (mIsResizing) { - exitResizeMode(false); + exitResizeMode(ResizeAction.RESTORE_SIZE); } else if (mIsInFullScreenMode) { exitFullScreenMode();