diff --git a/app/src/common/shared/com/igalia/wolvic/browser/engine/SessionStore.java b/app/src/common/shared/com/igalia/wolvic/browser/engine/SessionStore.java index 07c7c276bd..b9b6b1e0b5 100644 --- a/app/src/common/shared/com/igalia/wolvic/browser/engine/SessionStore.java +++ b/app/src/common/shared/com/igalia/wolvic/browser/engine/SessionStore.java @@ -390,6 +390,14 @@ public ArrayList getSortedSessions(boolean aPrivateMode) { return result; } + public ArrayList getInactiveSessions(boolean aPrivateMode) { + ArrayList sessions = getSortedSessions(aPrivateMode); + + sessions.removeIf(session -> session.isActive() || session.isWebExtensionSession()); + + return sessions; + } + public void setPermissionDelegate(PermissionDelegate delegate) { mPermissionDelegate = delegate; } diff --git a/app/src/common/shared/com/igalia/wolvic/ui/widgets/TabsWidget.java b/app/src/common/shared/com/igalia/wolvic/ui/widgets/TabsWidget.java index c145ed21a0..270a320c4b 100644 --- a/app/src/common/shared/com/igalia/wolvic/ui/widgets/TabsWidget.java +++ b/app/src/common/shared/com/igalia/wolvic/ui/widgets/TabsWidget.java @@ -40,6 +40,7 @@ public class TabsWidget extends UIDialog { protected UITextButton mCloseTabsButton; protected UITextButton mBookmarkTabsButton; protected UITextButton mCloseTabsAllButton; + protected UITextButton mCloseOtherTabsButton; protected UITextButton mSelectAllButton; protected UITextButton mUnselectTabs; protected LinearLayout mTabsSelectModeView; @@ -133,6 +134,16 @@ public void updateUI() { onDismiss(); }); + mCloseOtherTabsButton = findViewById(R.id.tabsCloseOthersButton); + mCloseOtherTabsButton.setOnClickListener(v -> { + if (mTabDelegate != null) { + mTabDelegate.onTabsClose(SessionStore.get().getInactiveSessions(mPrivateMode)); + } + + refreshTabs(); + updateSelectionMode(); + }); + mSelectAllButton = findViewById(R.id.tabsSelectAllButton); mSelectAllButton.setOnClickListener(v -> { mSelectedTabs = new ArrayList<>(mAdapter.mTabs); @@ -356,12 +367,14 @@ private void updateSelectionMode() { mBookmarkTabsButton.setVisibility(View.VISIBLE); mUnselectTabs.setVisibility(View.VISIBLE); mCloseTabsAllButton.setVisibility(View.GONE); + mCloseOtherTabsButton.setVisibility(View.GONE); mSelectAllButton.setVisibility(View.GONE); } else { mCloseTabsButton.setVisibility(View.GONE); mBookmarkTabsButton.setVisibility(View.GONE); mUnselectTabs.setVisibility(View.GONE); mCloseTabsAllButton.setVisibility(View.VISIBLE); + mCloseOtherTabsButton.setVisibility(SessionStore.get().getInactiveSessions(mPrivateMode).isEmpty() ? View.GONE : View.VISIBLE); mSelectAllButton.setVisibility(View.VISIBLE); } diff --git a/app/src/main/res/layout/tabs.xml b/app/src/main/res/layout/tabs.xml index 2e39934694..a4624a4f10 100644 --- a/app/src/main/res/layout/tabs.xml +++ b/app/src/main/res/layout/tabs.xml @@ -92,6 +92,11 @@ android:visibility="gone" android:text="@string/tabs_bookmark_selected" /> + + the Select` button. When clicked it bookmarks all the previously selected tabs --> Bookmark tabs + + Close other tabs + Close all