diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java
index fc2cc8099..2408ac81c 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java
@@ -3,7 +3,7 @@ package app.revanced.extension.youtube.patches.components;
import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch;
import app.revanced.extension.youtube.settings.Settings;
-import app.revanced.extension.youtube.shared.PlayerType;
+import app.revanced.extension.youtube.shared.ShortsPlayerState;
@SuppressWarnings("unused")
public class PlayerFlyoutMenuItemsFilter extends Filter {
@@ -20,17 +20,9 @@ public class PlayerFlyoutMenuItemsFilter extends Filter {
}
private final ByteArrayFilterGroupList flyoutFilterGroupList = new ByteArrayFilterGroupList();
-
- private final ByteArrayFilterGroup exception;
private final StringFilterGroup videoQualityMenuFooter;
public PlayerFlyoutMenuItemsFilter() {
- exception = new ByteArrayFilterGroup(
- // Whitelist Quality menu item when "Hide Additional settings menu" is enabled
- Settings.HIDE_PLAYER_FLYOUT_ADDITIONAL_SETTINGS,
- "quality_sheet"
- );
-
videoQualityMenuFooter = new StringFilterGroup(
Settings.HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER,
"quality_sheet_footer"
@@ -44,11 +36,11 @@ public class PlayerFlyoutMenuItemsFilter extends Filter {
flyoutFilterGroupList.addAll(
new ByteArrayFilterGroup(
Settings.HIDE_PLAYER_FLYOUT_CAPTIONS,
- "closed_caption"
+ "closed_caption_"
),
new ByteArrayFilterGroup(
Settings.HIDE_PLAYER_FLYOUT_ADDITIONAL_SETTINGS,
- "yt_outline_gear"
+ "yt_outline_gear_"
),
new ByteArrayFilterGroup(
Settings.HIDE_PLAYER_FLYOUT_LOOP_VIDEO,
@@ -56,31 +48,31 @@ public class PlayerFlyoutMenuItemsFilter extends Filter {
),
new ByteArrayFilterGroup(
Settings.HIDE_PLAYER_FLYOUT_AMBIENT_MODE,
- "yt_outline_screen_light"
+ "yt_outline_screen_light_"
),
new ByteArrayFilterGroup(
Settings.HIDE_PLAYER_FLYOUT_STABLE_VOLUME,
- "volume_stable"
+ "volume_stable_"
),
new ByteArrayFilterGroup(
Settings.HIDE_PLAYER_FLYOUT_HELP,
- "yt_outline_question_circle"
+ "yt_outline_question_circle_"
),
new ByteArrayFilterGroup(
Settings.HIDE_PLAYER_FLYOUT_MORE_INFO,
- "yt_outline_info_circle"
+ "yt_outline_info_circle_"
),
new ByteArrayFilterGroup(
Settings.HIDE_PLAYER_FLYOUT_LOCK_SCREEN,
- "yt_outline_lock"
+ "yt_outline_lock_"
),
new ByteArrayFilterGroup(
Settings.HIDE_PLAYER_FLYOUT_SPEED,
- "yt_outline_play_arrow_half_circle"
+ "yt_outline_play_arrow_half_circle_"
),
new ByteArrayFilterGroup(
Settings.HIDE_PLAYER_FLYOUT_AUDIO_TRACK,
- "yt_outline_person_radar"
+ "yt_outline_person_radar_"
),
new ByteArrayFilterGroup(
Settings.HIDE_PLAYER_FLYOUT_SLEEP_TIMER,
@@ -88,7 +80,11 @@ public class PlayerFlyoutMenuItemsFilter extends Filter {
),
new ByteArrayFilterGroup(
Settings.HIDE_PLAYER_FLYOUT_WATCH_IN_VR,
- "yt_outline_vr"
+ "yt_outline_vr_"
+ ),
+ new ByteArrayFilterGroup(
+ Settings.HIDE_PLAYER_FLYOUT_VIDEO_QUALITY,
+ "yt_outline_adjust_"
)
);
}
@@ -105,7 +101,7 @@ public class PlayerFlyoutMenuItemsFilter extends Filter {
}
// Shorts also use this player flyout panel
- if (PlayerType.getCurrent().isNoneOrHidden() || exception.check(buffer).isFiltered()) {
+ if (ShortsPlayerState.isOpen()) {
return false;
}
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java
index d279287f0..1798b3b85 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java
@@ -244,6 +244,7 @@ public class Settings extends BaseSettings {
public static final BooleanSetting HIDE_PLAYER_FLYOUT_SPEED = new BooleanSetting("revanced_hide_player_flyout_speed", FALSE);
public static final BooleanSetting HIDE_PLAYER_FLYOUT_STABLE_VOLUME = new BooleanSetting("revanced_hide_player_flyout_stable_volume", FALSE);
public static final BooleanSetting HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER = new BooleanSetting("revanced_hide_player_flyout_video_quality_footer", FALSE);
+ public static final BooleanSetting HIDE_PLAYER_FLYOUT_VIDEO_QUALITY = new BooleanSetting("revanced_hide_player_flyout_video_quality", FALSE);
public static final BooleanSetting HIDE_PLAYER_FLYOUT_WATCH_IN_VR = new BooleanSetting("revanced_hide_player_flyout_watch_in_vr", TRUE);
// General layout
diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/player/flyoutmenupanel/HidePlayerFlyoutMenuPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/player/flyoutmenupanel/HidePlayerFlyoutMenuPatch.kt
index 716540a4c..b18525c4c 100644
--- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/player/flyoutmenupanel/HidePlayerFlyoutMenuPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/player/flyoutmenupanel/HidePlayerFlyoutMenuPatch.kt
@@ -57,6 +57,7 @@ val hidePlayerFlyoutMenuPatch = bytecodePatch(
),
SwitchPreference("revanced_hide_player_flyout_watch_in_vr"),
SwitchPreference("revanced_hide_player_flyout_sleep_timer"),
+ SwitchPreference("revanced_hide_player_flyout_video_quality"),
SwitchPreference("revanced_hide_player_flyout_video_quality_footer"),
),
),
diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml
index 351d184ec..e4d8ad112 100644
--- a/patches/src/main/resources/addresources/values/strings.xml
+++ b/patches/src/main/resources/addresources/values/strings.xml
@@ -756,6 +756,9 @@ To show the Audio track menu, change \'Spoof video streams\' to iOS TV"
Hide Watch in VR
Watch in VR menu is hidden
Watch in VR menu is shown
+ Hide video quality menu
+ Video quality menu is hidden
+ Video quality menu is shown
Hide video quality menu footer
Video quality menu footer is hidden
Video quality menu footer is shown