diff --git a/app/src/common/shared/com/igalia/wolvic/ui/widgets/NavigationBarWidget.java b/app/src/common/shared/com/igalia/wolvic/ui/widgets/NavigationBarWidget.java
index 4b1fc2ad50..0cfa320751 100644
--- a/app/src/common/shared/com/igalia/wolvic/ui/widgets/NavigationBarWidget.java
+++ b/app/src/common/shared/com/igalia/wolvic/ui/widgets/NavigationBarWidget.java
@@ -367,6 +367,12 @@ private void updateUI() {
if (mAttachedWindow != null) {
mAttachedWindow.setIsFullScreen(false);
}
+ if (mAttachedWindow.getKeepFullscreenInHamburgerMenu()) {
+ postDelayed(() -> {
+ mAttachedWindow.setIsFullScreen(true);
+ mAttachedWindow.setKeepFullscreenInHamburgerMenu(false);
+ }, 2000);
+ }
if (mAudio != null) {
mAudio.playSound(AudioEngine.Sound.CLICK);
}
@@ -792,6 +798,11 @@ private void exitFullScreenMode() {
if (getSession().isInFullScreen()) {
getSession().exitFullScreen();
}
+ if (mAttachedWindow.getKeepFullscreenInHamburgerMenu()) {
+ mAttachedWindow.setIsFullScreen(false);
+ mAttachedWindow.setFullscreenInHamburgerMenuEnabled(false);
+ mAttachedWindow.setKeepFullscreenInHamburgerMenu(false);
+ }
}, 50);
mWidgetManager.updateWidget(mAttachedWindow);
@@ -1358,6 +1369,11 @@ public void onResize() {
enterResizeMode();
}
+ @Override
+ public void onFullScreen() {
+ mAttachedWindow.setFullscreenInHamburgerMenu();
+ }
+
@Override
public void onPassthrough() {
mWidgetManager.togglePassthrough();
diff --git a/app/src/common/shared/com/igalia/wolvic/ui/widgets/WindowWidget.java b/app/src/common/shared/com/igalia/wolvic/ui/widgets/WindowWidget.java
index a649d365ad..5cb3e127b9 100644
--- a/app/src/common/shared/com/igalia/wolvic/ui/widgets/WindowWidget.java
+++ b/app/src/common/shared/com/igalia/wolvic/ui/widgets/WindowWidget.java
@@ -155,6 +155,8 @@ public class WindowWidget extends UIWidget implements SessionChangeListener,
private SharedPreferences mPrefs;
private DownloadsManager mDownloadsManager;
private float mBrowserDensity;
+ private boolean fullscreenInHamburgerMenuEnabled;
+ private boolean keepFullscreenInHamburgerMenu;
public interface WindowListener {
default void onFocusRequest(@NonNull WindowWidget aWindow) {}
@@ -966,7 +968,16 @@ public boolean isResizing() {
return mIsResizing;
}
+ public void setFullscreenInHamburgerMenu() {
+ setIsFullScreen(true);
+ setFullscreenInHamburgerMenuEnabled(true);
+ }
+
public void setIsFullScreen(boolean isFullScreen) {
+ if (isFullScreen && fullscreenInHamburgerMenuEnabled) {
+ keepFullscreenInHamburgerMenu = true;
+ }
+
if (mViewModel.getIsFullscreen().getValue().get() != isFullScreen) {
mViewModel.setIsFullscreen(isFullScreen);
for (WindowListener listener: mListeners) {
@@ -2367,4 +2378,20 @@ private float getBrowserDensity() {
}
return mBrowserDensity;
}
+
+ public boolean getFullscreenInHamburgerMenuEnabled() {
+ return fullscreenInHamburgerMenuEnabled;
+ }
+
+ public void setFullscreenInHamburgerMenuEnabled(boolean fullscreenInHamburgerMenuEnabled) {
+ this.fullscreenInHamburgerMenuEnabled = fullscreenInHamburgerMenuEnabled;
+ }
+
+ public boolean getKeepFullscreenInHamburgerMenu() {
+ return keepFullscreenInHamburgerMenu;
+ }
+
+ public void setKeepFullscreenInHamburgerMenu(boolean keepFullscreenInHamburgerMenu) {
+ this.keepFullscreenInHamburgerMenu = keepFullscreenInHamburgerMenu;
+ }
}
diff --git a/app/src/common/shared/com/igalia/wolvic/ui/widgets/Windows.java b/app/src/common/shared/com/igalia/wolvic/ui/widgets/Windows.java
index 04d405dc5b..705683802f 100644
--- a/app/src/common/shared/com/igalia/wolvic/ui/widgets/Windows.java
+++ b/app/src/common/shared/com/igalia/wolvic/ui/widgets/Windows.java
@@ -1771,6 +1771,12 @@ public void showTabAddedNotification() {
}
}
+ if (mFocusedWindow.getFullscreenInHamburgerMenuEnabled()) {
+ mFocusedWindow.postDelayed(() -> {
+ mFocusedWindow.setIsFullScreen(true);
+ mFocusedWindow.setKeepFullscreenInHamburgerMenu(false);
+ }, 2000);
+ }
}
public void showTabSentNotification() {
diff --git a/app/src/common/shared/com/igalia/wolvic/ui/widgets/menus/HamburgerMenuWidget.java b/app/src/common/shared/com/igalia/wolvic/ui/widgets/menus/HamburgerMenuWidget.java
index 3cf3266b2e..5dab59bdf0 100644
--- a/app/src/common/shared/com/igalia/wolvic/ui/widgets/menus/HamburgerMenuWidget.java
+++ b/app/src/common/shared/com/igalia/wolvic/ui/widgets/menus/HamburgerMenuWidget.java
@@ -55,6 +55,7 @@ public interface MenuDelegate {
void onPageZoomIn();
void onPageZoomOut();
int getCurrentZoomLevel();
+ void onFullScreen();
}
public static final int SWITCH_ITEM_ID = 0;
@@ -189,6 +190,18 @@ private void updateItems() {
// In kiosk mode, only resize, find in page and passthrough are available.
if (!mWidgetManager.getFocusedWindow().isKioskMode()) {
+ mItems.add(new HamburgerMenuAdapter.MenuItem.Builder(
+ HamburgerMenuAdapter.MenuItem.TYPE_DEFAULT,
+ (menuItem) -> {
+ if (mDelegate != null) {
+ mDelegate.onFullScreen();
+ }
+ return null;
+ })
+ .withTitle(getContext().getString(R.string.hamburger_menu_fullscreen))
+ .withIcon(R.drawable.fullscreen_button)
+ .build());
+
final Session activeSession = SessionStore.get().getActiveSession();
if (!BuildConfig.FLAVOR_backend.equals("chromium")) {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 48a18f0a2b..f141851016 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -2089,6 +2089,10 @@ the Select` button. When clicked it bookmarks all the previously selected tabs -
it saves the Web App provided by the current page -->
Save Web app…
+
+ Fullscreen
+
Menu