JosefNemec/Playnite · warning · NotSupportedInFullscreenException

Not supported in Fullscreen mode.

Error message

Not supported in Fullscreen mode.

What it means

Thrown by SearchViewModel.OpenSearchSettings when the app is in Fullscreen mode (mainModel.App.Mode != ApplicationMode.Desktop). The search settings page only exists in Desktop mode, so in Fullscreen the call throws NotSupportedInFullscreenException to signal the unsupported UI path.

Source

Thrown at source/Playnite/ViewModels/SearchViewModel.cs:1083

        private void ToggleHint()
        {
            var context = searchContextStack.Peek();
            if (!context.Hint.IsNullOrWhiteSpace())
            {
                ContextHintVisible = !ContextHintVisible;
            }
        }

        private void OpenSearchSettings()
        {
            Close();
            if (mainModel.App.Mode == ApplicationMode.Desktop)
            {
                mainModel.OpenSettings((int)DesktopSettingsPage.Search);
            }
            else
            {
                throw new NotSupportedInFullscreenException();
            }
        }

        private void ToggleInstalledFilter()
        {
            FilterHint = GameFilterSettings.Uninstalled ? ResourceProvider.GetString(LOC.SearchFilterUninstalledExcluded) : ResourceProvider.GetString(LOC.SearchFilterUninstalledIncluded);
            GameFilterSettings.Uninstalled = !GameFilterSettings.Uninstalled;
            FilterHintVisible = true;
            FilterHintVisible = false;
        }

        private void ToggleHiddenFilter()
        {
            FilterHint = GameFilterSettings.Hidden ? ResourceProvider.GetString(LOC.SearchFilterHiddenalledExcluded) : ResourceProvider.GetString(LOC.SearchFilterHiddenIncluded);
            GameFilterSettings.Hidden = !GameFilterSettings.Hidden;
            FilterHintVisible = true;
            FilterHintVisible = false;
        }

View on GitHub (pinned to 5911f4e964)

Solutions

  1. Gate the caller on ApplicationMode.Desktop before invoking OpenSearchSettings (or the command bound to it).
  2. Hide/disable the search-settings control in Fullscreen themes.
  3. Re-map the offending input binding so it does not fire under Fullscreen.
  4. Catch NotSupportedInFullscreenException at the command-invocation boundary and ignore/suppress in Fullscreen.

Example fix

// before
private void OpenSearchSettings()
{
    Close();
    if (mainModel.App.Mode == ApplicationMode.Desktop) mainModel.OpenSettings(...);
    else throw new NotSupportedInFullscreenException();
}

// after — guard the caller (e.g. command CanExecute)
OpenSearchSettingsCommand.CanExecute = () => mainModel.App.Mode == ApplicationMode.Desktop;
Defensive patterns

Strategy: validation

Validate before calling

if (mainModel.App.Mode != ApplicationMode.Desktop)
{
    // skip / hide rather than throw
    return;
}
mainModel.OpenSettings((int)DesktopSettingsPage.Search);

Type guard

static bool CanOpenSearchSettings(MainViewModelBase m) => m.App.Mode == ApplicationMode.Desktop;

Try / catch

try { OpenSearchSettings(); }
catch (NotSupportedInFullscreenException) { /* silently ignore in Fullscreen */ }

Prevention

When it happens

Trigger: User triggers the 'Open Search Settings' action from the search view while ApplicationMode is Fullscreen; the else branch at line 1082 throws.

Common situations: A theme or input binding binds the search-settings command and is invoked under Fullscreen. A code path that doesn't gate on ApplicationMode calls OpenSearchSettings unconditionally. User switched to Fullscreen and an old Desktop binding still fires.

Related errors


AI-assisted analysis of JosefNemec/Playnite@5911f4e964 (2026-08-13). Data as JSON: /api/errors/611c98f9748268da. Report an issue: GitHub.