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
- Gate the caller on ApplicationMode.Desktop before invoking OpenSearchSettings (or the command bound to it).
- Hide/disable the search-settings control in Fullscreen themes.
- Re-map the offending input binding so it does not fire under Fullscreen.
- 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
- Bind the command's CanExecute to ApplicationMode.Desktop so it cannot fire in Fullscreen.
- Hide the search-settings control in Fullscreen themes.
- Audit input bindings that could route Desktop-only commands under Fullscreen.
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
- Not supported in Desktop mode.
- Cannot open plugin settings in Fullscreen mode.
- Not supported in Fullscreen mode.
- Cannot convert {value} to AspectRatio.
- Cannot add file to database, file not found.
AI-assisted analysis of JosefNemec/Playnite@5911f4e964 (2026-08-13).
Data as JSON: /api/errors/611c98f9748268da.
Report an issue: GitHub.