From 93b664b9431f55329fcd1da307e5297128de543f Mon Sep 17 00:00:00 2001 From: Imanol Fernandez Date: Thu, 3 Oct 2019 23:21:15 +0200 Subject: [PATCH] Fix top bar glitch when moving windows (#1910) --- .../vrbrowser/ui/widgets/TopBarWidget.java | 2 -- .../vrbrowser/ui/widgets/WindowWidget.java | 7 +++++++ .../org/mozilla/vrbrowser/ui/widgets/Windows.java | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/TopBarWidget.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/TopBarWidget.java index 4368fa83c..2f0090fc6 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/TopBarWidget.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/TopBarWidget.java @@ -190,12 +190,10 @@ public void setDelegate(TopBarWidget.Delegate aDelegate) { } public void setMoveLeftButtonEnabled(boolean aEnabled) { - mMoveRightButton.setHovered(false); mMoveLeftButton.setEnabled(aEnabled); } public void setMoveRightButtonEnabled(boolean aEnabled) { - mMoveLeftButton.setHovered(false); mMoveRightButton.setEnabled(aEnabled); } diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WindowWidget.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WindowWidget.java index 054142f59..64b09dc79 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WindowWidget.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WindowWidget.java @@ -631,6 +631,13 @@ public TopBarWidget getTopBar() { return mTopBar; } + public void setTopBar(TopBarWidget aWidget) { + if (mTopBar != aWidget) { + mTopBar = aWidget; + mTopBar.attachToWindow(this); + } + } + public TitleBarWidget getTitleBar() { return mTitleBar; } 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 09e7bd909..d5d2fc611 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 @@ -301,11 +301,14 @@ public void moveWindowRight(@NonNull WindowWidget aWindow) { if (aWindow == leftWindow) { placeWindow(leftWindow, WindowPlacement.FRONT); placeWindow(frontWindow, WindowPlacement.LEFT); + switchTopBars(leftWindow, frontWindow); } else if (aWindow == frontWindow) { if (rightWindow != null) { placeWindow(rightWindow, WindowPlacement.FRONT); + switchTopBars(rightWindow, frontWindow); } else if (leftWindow != null) { placeWindow(leftWindow, WindowPlacement.FRONT); + switchTopBars(leftWindow, frontWindow); } placeWindow(frontWindow, WindowPlacement.RIGHT); } @@ -323,11 +326,14 @@ public void moveWindowLeft(@NonNull WindowWidget aWindow) { if (aWindow == rightWindow) { placeWindow(rightWindow, WindowPlacement.FRONT); placeWindow(frontWindow, WindowPlacement.RIGHT); + switchTopBars(rightWindow, frontWindow); } else if (aWindow == frontWindow) { if (leftWindow != null) { placeWindow(leftWindow, WindowPlacement.FRONT); + switchTopBars(leftWindow, frontWindow); } else if (rightWindow != null) { placeWindow(rightWindow, WindowPlacement.FRONT); + switchTopBars(rightWindow, frontWindow); } placeWindow(frontWindow, WindowPlacement.LEFT); } @@ -715,6 +721,15 @@ public int getWindowsCount() { return getCurrentWindows().size(); } + private void switchTopBars(WindowWidget w1, WindowWidget w2) { + // Used to fix a minor visual glitch. + // See https://github.com/MozillaReality/FirefoxReality/issues/1722 + TopBarWidget bar1 = w1.getTopBar(); + TopBarWidget bar2 = w2.getTopBar(); + w1.setTopBar(bar2); + w2.setTopBar(bar1); + } + private void updateViews() { WindowWidget frontWindow = getFrontWindow(); WindowWidget leftWindow = getLeftWindow();