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.

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.

Appendix: 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)